From 57a69033f8edbcc6a7125123a8e5d9595265b526 Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Thu, 9 Aug 2012 10:53:46 -0400
Subject: [PATCH] [SIGNED-OFF]Bug 4906 - Problem with grace period calculation
and fine intervals >1
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 ingore 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>
---
C4/Overdues.pm | 6 +++++-
installer/data/mysql/sysprefs.sql | 1 +
installer/data/mysql/updatedatabase.pl | 7 +++++++
.../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 ac66c36..80771ae 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 a4e4102..6c59621 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -386,3 +386,4 @@ INSERT INTO systempreferences (variable,value,explanation,type) VALUES('OPACdidy
INSERT INTO systempreferences (variable,value,explanation,type) VALUES('INTRAdidyoumean',NULL,'Did you mean? configuration for the Intranet. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free');
INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('BlockReturnOfWithdrawnItems', '1', '0', 'If enabled, items that are marked as withdrawn cannot be returned.', 'YesNo');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('HoldsToPullStartDate','2','Set the default start date for the Holds to pull list to this many days ago',NULL,'Integer');
+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 964df0c..f1fdc66 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -6062,6 +6062,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
SetVersion ($DBversion);
}
+$DBversion = "3.09.00.XXX";
+if ( C4::Context->preference("Version") < TransformToNum($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);
+}
=head1 FUNCTIONS
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 c583bbe..16234d7 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
@@ -452,6 +452,12 @@ Circulation:
test: Calculate (but only for mailing to the admin)
production: Calculate and charge
- fines (when <code>misc/cronjobs/fines.pl</code> is being run).
+ -
+ - pref: FinesForGracePeriod
+ choices:
+ yes: Include
+ no: "Don't include"
+ - the grace period when calculating the fine for an overdue item.
Self Checkout:
-
- pref: ShowPatronImageInWebBasedSelfCheck
--
1.7.9.5