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 <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>
This commit is contained in:
Kyle M Hall 2012-08-09 10:53:46 -04:00 committed by Jared Camins-Esakov
parent 41e176d97a
commit aba4f05b80
4 changed files with 19 additions and 1 deletions

View 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.
}

View 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');

View File

@ -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) ) {

View 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:"