bug 2582 [2/2]: fix NULL issues.issuedate

Corrects loans whose issuedate was set to NULL
during a renewal as follows:

* First, tries to extract the loan date from
  the statistics table.
* For any remaining rows,  sets the issue date
  to the date of the last renewal.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
Galen Charlton 2008-09-04 12:23:47 -05:00
parent 69781fbe8b
commit 6f383040d5
2 changed files with 37 additions and 1 deletions

View file

@ -1997,6 +1997,42 @@ if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
SetVersion($DBversion);
}
$DBversion = '3.01.00.002';
if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
# use statistics where available
$dbh->do("
ALTER TABLE statistics ADD KEY tmp_stats (type, itemnumber, borrowernumber)
");
$dbh->do("
UPDATE issues iss
SET issuedate = (
SELECT max(datetime)
FROM statistics
WHERE type = 'issue'
AND itemnumber = iss.itemnumber
AND borrowernumber = iss.borrowernumber
)
WHERE issuedate IS NULL;
");
$dbh->do("ALTER TABLE statistics DROP KEY tmp_stats");
# default to last renewal date
$dbh->do("
UPDATE issues
SET issuedate = lastreneweddate
WHERE issuedate IS NULL
and lastreneweddate IS NOT NULL
");
my $num_bad_issuedates = $dbh->selectrow_array("SELECT COUNT(*) FROM issues WHERE issuedate IS NULL");
if ($num_bad_issuedates > 0) {
print STDERR "After the upgrade to $DBversion, there are still $num_bad_issuedates loan(s) with a NULL (blank) loan date. ",
"Please check the issues table in your database.";
}
print "Upgrade to $DBversion done (bug 2582: set null issues.issuedate to lastreneweddate)";
SetVersion($DBversion);
}
=item DropAllForeignKeys($table)
Drop all foreign keys of the table $table

View file

@ -10,7 +10,7 @@
use strict;
sub kohaversion {
our $VERSION = '3.01.00.001';
our $VERSION = '3.01.00.002';
# version needs to be set this way
# so that it can be picked up by Makefile.PL
# during install