@@ -, +, @@ --- circ/circulation.pl | 2 +- circ/renew.pl | 20 +++++- .../prog/en/modules/circ/circulation.tt | 4 ++ .../intranet-tmpl/prog/en/modules/circ/renew.tt | 10 +++ .../prog/en/modules/members/moremember.tt | 4 ++ koha-tmpl/intranet-tmpl/prog/js/checkouts.js | 74 +++++++++++++--------- 6 files changed, 82 insertions(+), 32 deletions(-) --- a/circ/circulation.pl +++ a/circ/circulation.pl @@ -311,7 +311,7 @@ if ($patron) { $template->param( overduecount => $overdues->count, issuecount => $issues->count, - finetotal => $balance, + fines => $balance, ); if ( $patron and $patron->is_debarred ) { --- a/circ/renew.pl +++ a/circ/renew.pl @@ -28,6 +28,7 @@ use C4::Koha; use Koha::DateUtils; use Koha::Database; use Koha::BiblioFrameworks; +use Koha::Patrons; my $cgi = new CGI; @@ -48,10 +49,11 @@ $barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespae $barcode = barcodedecode($barcode) if( $barcode && C4::Context->preference('itemBarcodeInputFilter')); my $override_limit = $cgi->param('override_limit'); my $override_holds = $cgi->param('override_holds'); +my $override_debt = $cgi->param('override_debt'); my ( $item, $issue, $borrower ); my $error = q{}; -my ( $soonest_renew_date, $latest_auto_renew_date ); +my ( $soonest_renew_date, $latest_auto_renew_date, $balance ); if ($barcode) { $barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace @@ -64,7 +66,10 @@ if ($barcode) { if ($issue) { $borrower = $issue->borrower(); - + my $patron = Koha::Patrons->find($borrower->borrowernumber); + $balance = $patron->account->balance; + my $amountlimit = C4::Context->preference("noissuescharge"); + if ( ( $borrower->debarred() || q{} ) lt dt_from_string()->ymd() ) { my $can_renew; ( $can_renew, $error ) = @@ -93,6 +98,16 @@ if ($barcode) { $item->itemnumber(), ); } + + if ( $balance > $amountlimit ) { + $error = "too_much_debt"; + $can_renew = 0; + if($override_debt){ + $can_renew = 1; + $error = undef; + } + } + if ($can_renew) { my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef; my $date_due; @@ -122,6 +137,7 @@ if ($barcode) { error => $error, soonestrenewdate => $soonest_renew_date, latestautorenewdate => $latest_auto_renew_date, + balance => $balance, ); } --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -1068,6 +1068,10 @@ [% UNLESS ( patron.borrowernumber ) %][% UNLESS ( borrowers ) %]window.onload=function(){ $('#findborrower').focus(); };[% END %][% END %] + var amountlimit = "[% Koha.Preference('noissuescharge') %]"; + var fines = "[% fines %]"; + var MSG_CONFRIM_RENEW = _("The patron has a debt of %s.\n Are you sure you want to renew checkout(s)?").format(fines); + // On-site checkout function toggle_onsite_checkout(){ if ( $("#onsite_checkout").prop('checked') ) { --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt @@ -2,6 +2,7 @@ [% USE Asset %] [% USE Koha %] [% USE KohaDates %] +[% USE Price %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] @@ -135,8 +136,17 @@
Item is not allowed renewal.
[% ELSIF error == "onsite_checkout" %] +Item cannot be renewed because it's an onsite checkout
+ [% ELSIF error == "too_much_debt" %] + +