From aba4f05b809971dfaab54024e8d89100b5a8ca7a Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 9 Aug 2012 10:53:46 -0400 Subject: [PATCH] Bug 4906: Allow fine calculation to exclude grace period This patch adds the system preference FinesIncludeGracePeriod which allows the library the choice to include the grace period when calculating a fine ( Koha's current behavior ) or to ignore the grace period for the purposes of fines calculation. It is set by default to preserve the current behavior. Signed-off-by: Srikanth Dhondi Signed-off-by: Marcel de Rooy Rebased March 8, 2013. Included renaming pref. Works as advertised. Renamed the bug title and opened a new report for the original bug. Signed-off-by: Jared Camins-Esakov --- C4/Overdues.pm | 6 +++++- installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 7 +++++++ .../prog/en/modules/admin/preferences/circulation.pref | 6 ++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/C4/Overdues.pm b/C4/Overdues.pm index ac66c365b9..80771ae47f 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -264,7 +264,11 @@ sub CalcFine { my $units_minus_grace = $chargeable_units - $data->{firstremind}; my $amount = 0; if ($data->{'chargeperiod'} && ($units_minus_grace > 0) ) { - $amount = int($chargeable_units / $data->{'chargeperiod'}) * $data->{'fine'};# TODO fine calc should be in cents + if ( C4::Context->preference('FinesIncludeGracePeriod') ) { + $amount = int($chargeable_units / $data->{'chargeperiod'}) * $data->{'fine'};# TODO fine calc should be in cents + } else { + $amount = int($units_minus_grace / $data->{'chargeperiod'}) * $data->{'fine'}; + } } else { # a zero (or null) chargeperiod or negative units_minus_grace value means no charge. } diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 4f87d390cf..e3966ce230 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -420,3 +420,4 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES(' INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('TrackClicks','0','Track links clicked',NULL,'Integer'); INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('PatronSelfRegistrationAdditionalInstructions','','A free text field to display additional instructions to newly self registered patrons.','','free'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UseQueryParser', '0', 'If enabled, try to use QueryParser for queries.', NULL, 'YesNo'); +INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('FinesIncludeGracePeriod','1','If enabled, fines calculations will include the grace period.',NULL,'YesNo'); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 4b54e081c9..2e0b670d87 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -6477,6 +6477,13 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.11.00.XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('FinesIncludeGracePeriod','1','If enabled, fines calculations will include the grace period.',NULL,'YesNo');"); + print "Upgrade to $DBversion done (Add system preference FinesIncludeGracePeriod)\n"; + SetVersion($DBversion); +} + $DBversion = "3.11.00.026"; if ( CheckVersion($DBversion) ) { 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 82c1c02f0d..f88d964a6d 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 @@ -482,6 +482,12 @@ Circulation: yes: Refund no: "Don't refund" - lost item fees charged to a borrower when the lost item is returned. + - + - pref: FinesIncludeGracePeriod + choices: + yes: Include + no: "Don't include" + - the grace period when calculating the fine for an overdue item. Self Checkout: - - "Include the following JavaScript on all pages in the web-based self checkout:" -- 2.20.1