From b0e0eef872f3b51fee9c9382bd7ace64b7159c62 Mon Sep 17 00:00:00 2001 From: mbeaulieu Date: Wed, 18 Jun 2014 11:49:28 -0400 Subject: [PATCH] Bug 12448 - Ask for confirmation when checking out an item with rental fees MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prompts the user for confirmation when checking out an item with rental fees. This patch adds a confirmation box between the toolbar and the checkout form on the checkout page when checking out an item with rental fees. A system preference is added to manage the patch's behaviour. The preference's value can either be set to "ask" or "don't ask" and is located under: Circulation preferences > Checkout Policy > RentalFeesCheckoutConfirmation Sponsor: Ville de Victoriaville, QC Confirmation box contents: "Please confirm checkout" "-Rental charge for this item: n" [Yes, checkout (Y)] [No, Don't Check Out (N)] Test case A: Confirm checkout 1) Go to checkout user "X"'s checkout page. 2) Enter barcode for an item with rental fees. 3) Click the "Check out" button. 4) Confirmation box appears. 5) Click on the "Yes" button. 6) Item is added to checkout list. 7) Fees are added to the patron's account. Test case B: Decline checkout 1) Go to checkout user "X"'s checkout page. 2) Enter barcode for an item with rental fees. 3) Click the "Check out" button. 4) Confirmation box appears. 5) Click the "No" button. 6) Checkout page goes back to its initial state. 7) Patron has no item checked out and no fees to pay. Signed-off-by: Christopher Brannon Signed-off-by: Marc VĂ©ron All patches applied. Works as expected. Sign-off on patch #1 Signed-off-by: Christopher Brannon --- C4/Circulation.pm | 13 +++++++++++++ installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 9 +++++++++ .../en/modules/admin/preferences/circulation.pref | 9 ++++++++- .../prog/en/modules/circ/circulation.tt | 4 ++++ 5 files changed, 35 insertions(+), 1 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 6b700ec..e33e5ea 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -907,6 +907,19 @@ sub CanBookBeIssued { } } + # CHECK IF THERE IS RENTAL CHARGES. RENTAL MUST BE CONFIRMED BY THE BORROWER + my $sth = $dbh->prepare("SELECT rentalcharge FROM itemtypes WHERE itemtype = ?"); + $sth->execute( $item->{'itemtype'} ); + my $rentalCharge = $sth->fetchrow(); + my $rentalConfirmation = C4::Context->preference("RentalFeesCheckoutConfirmation"); + + if ( $rentalCharge && $rentalConfirmation ) + { + $rentalCharge = sprintf("%.02f \$", $rentalCharge); + $rentalCharge =~ s/\./,/; + $needsconfirmation{RENTALCHARGE} = $rentalCharge; + } + # # CHECK IF BOOK ALREADY ISSUED TO THIS BORROWER # diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 5e4ce7c..98ee138 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -332,6 +332,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('RenewalPeriodBase','date_due','date_due|now','Set whether the renewal date should be counted from the date_due or from the moment the Patron asks for renewal ','Choice'), ('RenewalSendNotice','0','',NULL,'YesNo'), ('RenewSerialAddsSuggestion','0',NULL,'If ON, adds a new suggestion at serial subscription renewal','YesNo'), +('RentalFeesCheckoutConfirmation', '1', NULL , 'Allow user to confirme when checking out an item with rental fees.', 'YesNo'), ('RentalsInNoissuesCharge','1',NULL,'Rental charges block checkouts (added to noissuescharge).','YesNo'), ('RequestOnOpac','1',NULL,'If ON, globally enables patron holds on OPAC','YesNo'), ('ReservesControlBranch','PatronLibrary','ItemHomeLibrary|PatronLibrary','Branch checked for members reservations rights','Choice'), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index c68ba51..85f34a2 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -8560,6 +8560,15 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q| + INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('RentalFeesCheckoutConfirmation', '1', NULL , 'Allow user to confirme when checking out an item with rental fees.', 'YesNo') + |); + print "Upgrade to $DBversion done (Bug 11169 - Add RentalFeesCheckoutConfirmation syspref)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref index 5a768a6..cb0d524 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -327,7 +327,14 @@ Circulation: block: Block noblock: "Don't block" confirmation: Ask for confirmation - - when checking out to a borrower that has overdues outstanding + - when checking out to a borrower that has overdues outstanding + - + - "When checking out an item with rental fees, " + - pref: RentalFeesCheckoutConfirmation + choices: + yes: ask + no: "do not ask" + - a confirmation to check-out. - - On checkin route the returned item to - pref: HomeOrHoldingBranchReturn 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 6805126..faf3d81 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -206,6 +206,10 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
  • The patron has a debt of [% DEBT %]
  • [% END %] +[% IF ( RENTALCHARGE ) %] +
  • Rental charge for this item : [% RENTALCHARGE %]
  • +[% END %] + [% IF ( RENEW_ISSUE ) %]
  • Item [% getTitleMessageIteminfo %] ([% getBarcodeMessageIteminfo %]) is currently checked out to this patron. Renew?
  • [% END %] -- 1.7.2.5