@@ -, +, @@
---
circ/circulation.pl | 2 +-
circ/renew.pl | 20 ++++-
.../prog/en/modules/circ/circulation.tt | 4 +
.../prog/en/modules/circ/renew.tt | 10 +++
.../prog/en/modules/members/moremember.tt | 6 +-
koha-tmpl/intranet-tmpl/prog/js/checkouts.js | 74 +++++++++++--------
6 files changed, 83 insertions(+), 33 deletions(-)
--- a/circ/circulation.pl
+++ a/circ/circulation.pl
@@ -306,7 +306,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 = AddRenewal( undef, $item->itemnumber(), $branchcode, dt_from_string( scalar $cgi->param('renewonholdduedate')) );
@@ -118,6 +133,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
@@ -1044,6 +1044,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" %]
+ The patron has a debt of [% balance | $Price %].
+
[% ELSE %]
[% error | html %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
@@ -870,7 +870,11 @@
var MSG_CONFIRM_DELETE_MESSAGE = _("Are you sure you want to delete this message? This cannot be undone.");
columns_settings_issues_table = [% ColumnsSettings.GetColumns( 'members', 'moremember', 'issues-table', 'json' ) | $raw %]
-
+
+ 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);
+
$(document).ready(function() {
if ( $('#clubs-tab').length ) {
$('#clubs-tab-link').on('click', function() {
--- a/koha-tmpl/intranet-tmpl/prog/js/checkouts.js
+++ a/koha-tmpl/intranet-tmpl/prog/js/checkouts.js
@@ -135,7 +135,16 @@ $(document).ready(function() {
var itemnumber = $(this).val();
- $(this).parent().parent().replaceWith("");
+ var can_renew = true;
+
+ if( parseFloat(fines) > parseFloat(amountlimit) ) {
+ var result = confirm(MSG_CONFRIM_RENEW);
+ if(result){
+ can_renew = true;
+ }else{
+ can_renew = false;
+ }
+ }
var params = {
itemnumber: itemnumber,
@@ -153,34 +162,10 @@ $(document).ready(function() {
params.date_due = dueDate
}
- $.post( "/cgi-bin/koha/svc/renew", params, function( data ) {
- var id = "#renew_" + data.itemnumber;
-
- var content = "";
- if ( data.renew_okay ) {
- content = CIRCULATION_RENEWED_DUE + " " + data.date_due;
- $('#date_due_' + data.itemnumber).replaceWith( data.date_due );
- } else {
- content = CIRCULATION_RENEW_FAILED + " ";
- if ( data.error == "no_checkout" ) {
- content += NOT_CHECKED_OUT;
- } else if ( data.error == "too_many" ) {
- content += TOO_MANY_RENEWALS;
- } else if ( data.error == "on_reserve" ) {
- content += ON_RESERVE;
- } else if ( data.error == "restriction" ) {
- content += NOT_RENEWABLE_RESTRICTION;
- } else if ( data.error == "overdue" ) {
- content += NOT_RENEWABLE_OVERDUE;
- } else if ( data.error ) {
- content += data.error;
- } else {
- content += REASON_UNKNOWN;
- }
- }
-
- $(id).replaceWith( content );
- }, "json")
+ if(can_renew) {
+ $(this).parent().parent().replaceWith("");
+ renew(params);
+ }
});
// Refocus on barcode field if it exists
@@ -192,6 +177,37 @@ $(document).ready(function() {
return false;
});
+ function renew(params){
+ $.post( "/cgi-bin/koha/svc/renew", params, function( data ) {
+ var id = "#renew_" + data.itemnumber;
+
+ var content = "";
+ if ( data.renew_okay ) {
+ content = CIRCULATION_RENEWED_DUE + " " + data.date_due;
+ $('#date_due_' + data.itemnumber).replaceWith( data.date_due );
+ } else {
+ content = CIRCULATION_RENEW_FAILED + " ";
+ if ( data.error == "no_checkout" ) {
+ content += NOT_CHECKED_OUT;
+ } else if ( data.error == "too_many" ) {
+ content += TOO_MANY_RENEWALS;
+ } else if ( data.error == "on_reserve" ) {
+ content += ON_RESERVE;
+ } else if ( data.error == "restriction" ) {
+ content += NOT_RENEWABLE_RESTRICTION;
+ } else if ( data.error == "overdue" ) {
+ content += NOT_RENEWABLE_OVERDUE;
+ } else if ( data.error ) {
+ content += data.error;
+ } else {
+ content += REASON_UNKNOWN;
+ }
+ }
+
+ $(id).replaceWith( content );
+ }, "json")
+ }
+
$("#RenewAll").on("click",function(){
$("#CheckAllRenewals").click();
$("#UncheckAllCheckins").click();
--