Bugzilla – Attachment 158302 Details for
Bug 23415
Notify patron fines when renewing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 23415: Notify patron fines when renewing
0001-Bug-23415-Notify-patron-fines-when-renewing.patch (text/plain), 9.97 KB, created by
Emmi Takkinen
on 2023-11-03 07:53:51 UTC
(
hide
)
Description:
Bug 23415: Notify patron fines when renewing
Filename:
MIME Type:
Creator:
Emmi Takkinen
Created:
2023-11-03 07:53:51 UTC
Size:
9.97 KB
patch
obsolete
>From 574310e750bc645da64dd3b11116107d399d0945 Mon Sep 17 00:00:00 2001 >From: Emmi Takkinen <emmi.takkinen@outlook.com> >Date: Tue, 6 Aug 2019 11:13:33 +0300 >Subject: [PATCH 1/6] Bug 23415: Notify patron fines when renewing >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >It is possible to renew items for patron who has fines over accepted >limit on renew page or from checkout list. This patch adds confirmation >alerts to these renew actions when patron has fines over >"noissuescharge" syspref. > >Test plan: >1. Have patron with checkouts and fines over allowed limit >2. Renew checkouts either from renew page or checkout list >=> renew is successful >3. Apply patch >4. Repeat steps 1 and 2 >=> On renew page an alert is displayed and user has to confirm >renew >=> When renew is done from checkout list confirmation pop-up >is displayed > >Signed-off-by: Anneli Ãsterman <anneli.osterman@koha-suomi.fi> > >Signed-off-by: Kelly McElligott <kelly@bywatersolutions.com> >Signed-off-by: Petro Vashchuk <stalkernoid@gmail.com> >--- > circ/circulation.pl | 2 +- > circ/renew.pl | 18 +++++- > .../prog/en/modules/circ/circulation.tt | 4 ++ > .../prog/en/modules/circ/renew.tt | 9 +++ > .../prog/en/modules/members/moremember.tt | 4 ++ > koha-tmpl/intranet-tmpl/prog/js/checkouts.js | 55 ++++++++++++++++++- > 6 files changed, 89 insertions(+), 3 deletions(-) > >diff --git a/circ/circulation.pl b/circ/circulation.pl >index 7f8c0ef080..98f239b9c0 100755 >--- a/circ/circulation.pl >+++ b/circ/circulation.pl >@@ -261,7 +261,7 @@ if ($patron) { > $template->param( > overduecount => $overdues->count, > issuecount => $issues->count, >- finetotal => $balance, >+ fines => $balance, > ); > > if ( $patron and $patron->is_debarred ) { >diff --git a/circ/renew.pl b/circ/renew.pl >index 42ec13f6a0..adb92e5ff8 100755 >--- a/circ/renew.pl >+++ b/circ/renew.pl >@@ -27,6 +27,7 @@ use C4::Circulation qw( barcodedecode CanBookBeRenewed GetLatestAutoRenewDate Ad > use Koha::DateUtils qw( dt_from_string ); > use Koha::Database; > use Koha::BiblioFrameworks; >+use Koha::Patrons; > > my $cgi = CGI->new; > >@@ -47,10 +48,11 @@ $barcode = barcodedecode($barcode) if $barcode; > my $override_limit = $cgi->param('override_limit'); > my $override_holds = $cgi->param('override_holds'); > my $hard_due_date = $cgi->param('hard_due_date'); >+my $override_debt = $cgi->param('override_debt'); > > my ( $item, $checkout, $patron ); > my $error = q{}; >-my ( $soonest_renew_date, $latest_auto_renew_date ); >+my ( $soonest_renew_date, $latest_auto_renew_date, $balance ); > > if ($barcode) { > $barcode = barcodedecode($barcode) if $barcode; >@@ -64,6 +66,9 @@ if ($barcode) { > > $patron = $checkout->patron; > >+ $balance = $patron->account->balance; >+ my $amountlimit = C4::Context->preference("noissuescharge"); >+ > if ( ( $patron->is_debarred || q{} ) lt dt_from_string()->ymd() ) { > my $can_renew; > my $info; >@@ -89,6 +94,16 @@ if ($barcode) { > $checkout, > ); > } >+ >+ 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 = >@@ -127,6 +142,7 @@ if ($barcode) { > error => $error, > soonestrenewdate => $soonest_renew_date, > latestautorenewdate => $latest_auto_renew_date, >+ balance => $balance, > ); > } > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >index dfc42a6b9e..d3cd130311 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >@@ -928,6 +928,10 @@ > > [% UNLESS ( patron.borrowernumber ) %]window.onload=function(){ $('#findborrower').focus(); };[% 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') ) { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt >index d3c48b9397..a351bc612d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt >@@ -2,6 +2,7 @@ > [% USE Asset %] > [% USE Koha %] > [% USE KohaDates %] >+[% USE Price %] > [% PROCESS 'i18n.inc' %] > [% SET footerjs = 1 %] > [% INCLUDE 'doc-head-open.inc' %] >@@ -168,6 +169,14 @@ > [% ELSIF error == 'recalled' %] > <p>This item has been recalled.</p> > >+ [% ELSIF error == "too_much_debt" %] >+ >+ <li>The patron has a debt of [% balance | $Price %].</li> >+ <form method="post" action="/cgi-bin/koha/circ/renew.pl"> >+ <input type="hidden" name="barcode" value="[% item.barcode | html %]"/> >+ <input type="hidden" name="override_debt" value="1" /> >+ <button type="submit" class="approve"><i class="fa fa-check"></i>Renew checkout(s)</button> >+ </form> > [% ELSE %] > > [% error | html %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >index 3a1278e3cf..8a34cae124 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >@@ -727,6 +727,10 @@ > table_settings_relatives_issues_table = [% TablesSettings.GetTableSettings( 'members', 'moremember', 'relatives-issues-table', 'json' ) | $raw %] > table_settings_holds_table = [% TablesSettings.GetTableSettings( 'members', 'moremember', 'holds-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() { > $("#info_digests").tooltip(); > >diff --git a/koha-tmpl/intranet-tmpl/prog/js/checkouts.js b/koha-tmpl/intranet-tmpl/prog/js/checkouts.js >index b434b504cd..ce45f82a1b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/checkouts.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/checkouts.js >@@ -155,7 +155,16 @@ $(document).ready(function() { > > var itemnumber = $(this).val(); > >- $(this).parent().parent().replaceWith("<img id='renew_" + itemnumber + "' src='" + interface + "/" + theme + "/img/spinner-small.gif' />"); >+ 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, >@@ -218,6 +227,11 @@ $(document).ready(function() { > dataType: "json", > async: false, > }); >+ >+ if(can_renew) { >+ $(this).parent().parent().replaceWith("<img id='renew_" + itemnumber + "' src='" + interface + "/" + theme + "/img/spinner-small.gif' />"); >+ renew(params); >+ } > }); > > // Refocus on barcode field if it exists >@@ -233,6 +247,45 @@ $(document).ready(function() { > return false; > }); > >+ function renew(params){ >+ $.post({ >+ url: "/cgi-bin/koha/svc/renew", >+ data: params, >+ success: function( data ) { >+ var id = "#renew_" + data.itemnumber; >+ >+ var content = ""; >+ if ( data.renew_okay ) { >+ content = __("Renewed, due:") + " " + data.date_due; >+ $('#date_due_' + data.itemnumber).replaceWith( data.date_due ); >+ } else { >+ content = __("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 == "too_unseen" ) { >+ content += __("too many consecutive renewals without being seen by the library"); >+ } else if ( data.error == "on_reserve" ) { >+ content += __("on hold"); >+ } else if ( data.error == "restriction" ) { >+ content += __("Not allowed: patron restricted"); >+ } else if ( data.error == "overdue" ) { >+ content += __("Not allowed: overdue"); >+ } else if ( data.error ) { >+ content += data.error; >+ } else { >+ content += __("reason unknown"); >+ } >+ } >+ >+ $(id).replaceWith( content ); >+ }, >+ dataType: "json", >+ async: false, >+ }); >+ } >+ > $("#RenewAll").on("click",function(){ > $("#CheckAllRenewals").click(); > $("#UncheckAllCheckins").click(); >-- >2.34.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 23415
:
92039
|
92541
|
98442
|
98634
|
98996
|
98997
|
105893
|
105894
|
108392
|
109871
|
109872
|
109876
|
109880
|
116919
|
116920
|
116921
|
116922
|
118175
|
118176
|
118177
|
118178
|
118183
|
119300
|
119301
|
119302
|
119303
|
121472
|
139670
|
139671
|
139672
|
139673
|
139674
|
146415
|
148198
|
148199
|
148200
|
148201
|
148202
|
152776
|
152777
|
152778
|
152779
|
152780
|
152781
|
154595
|
154596
|
154597
|
154598
|
154599
|
154600
|
158302
|
158303
|
158304
|
158305
|
158306
|
158307
|
161964
|
161965
|
161966
|
161967
|
161968
|
161969
|
162171
|
162172
|
162173
|
162174
|
162175
|
162176
|
162177
|
162178
|
162179
|
162180
|
171620
|
171621
|
171622
|
171623
|
171983
|
171984
|
171985
|
171986
|
172906
|
172907
|
172908
|
172909
|
172910