Bug 4906: Allow fine calculation to exclude grace period
authorKyle M Hall <kyle@bywatersolutions.com>
Thu, 9 Aug 2012 14:53:46 +0000 (10:53 -0400)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Sun, 17 Mar 2013 01:47:21 +0000 (21:47 -0400)
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 <srikanth@catalyst.net.nz>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
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 <jcamins@cpbibliography.com>
C4/Overdues.pm
installer/data/mysql/sysprefs.sql
installer/data/mysql/updatedatabase.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref

index ac66c36..80771ae 100644 (file)
@@ -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.
     }
index 4f87d39..e3966ce 100644 (file)
@@ -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');
index 4b54e08..2e0b670 100755 (executable)
@@ -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) ) {
index 82c1c02..f88d964 100644 (file)
@@ -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:"