Bug 8182 - Problem with overdue fine calculations after upgrade
authorKyle M Hall <kyle@bywatersolutions.com>
Fri, 1 Jun 2012 18:30:05 +0000 (14:30 -0400)
committerPaul Poulain <paul.poulain@biblibre.com>
Tue, 5 Jun 2012 14:05:28 +0000 (16:05 +0200)
Items that were overdue and still out as of 5/26 (date of Upgrade) were charged
overdue fines as of 5/26.  When the items DO come back, the overdue fines are
calculated again from the due date to the date of checkin.  Therefore the
patron is being charged double overdue fines from the original date up to 5/26.

This is caused by issues.date_due being changed to a datetime, with the
hour/minute/secons time portion defaulting to 00:00:00. It should be 23::50::00 instead.

This is an unusual patch as it modifies a previous database update. This
make sense because if a install has already been updated past the db rev
update, this fix will be too late. It will only help those that have not
updated past that db revision.

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
installer/data/mysql/updatedatabase.pl

index 51a6486..a5a436c 100755 (executable)
@@ -5018,6 +5018,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $DBversion = "3.07.00.035";
 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
     $dbh->do("ALTER TABLE issues CHANGE date_due date_due datetime");
+    $dhb->do("UPDATE issues SET date_due = CONCAT(SUBSTR(date_due,1,11),'23:59:00')");
     $dbh->do("ALTER TABLE issues CHANGE returndate returndate datetime");
     $dbh->do("ALTER TABLE issues CHANGE lastreneweddate lastreneweddate datetime");
     $dbh->do("ALTER TABLE issues CHANGE issuedate issuedate datetime");