X-Git-Url: http://git.equinoxoli.org/?p=koha-equinox.git;a=blobdiff_plain;f=installer%2Fdata%2Fmysql%2Fupdatedatabase.pl;h=01a47cb0d1965269fc3f36fb7aea87c90dcdc360;hp=3289c3f609ea9bc3c90dbb28f21d95ff00b9c61e;hb=92bf8082c372d4cf055336da7539bf214847249f;hpb=9b4da7594f7422a244c0dc0b6ef6dff85f083a40 diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 3289c3f..01a47cb 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -18899,6 +18899,86 @@ if( CheckVersion( $DBversion ) ) { print "Upgrade to $DBversion done (Bug 18930 - Move lost item refund rules to circulation_rules table)\n"; } +$DBversion = '19.06.00.012'; +if ( CheckVersion($DBversion) ) { + + # Find and correct pathological cases of LR becoming a credit + my $sth = $dbh->prepare( "SELECT accountlines_id, issue_id, borrowernumber, itemnumber, amount, manager_id FROM accountlines WHERE accounttype = 'LR' AND amount < 0" ); + $sth->execute(); + while ( my $row = $sth->fetchrow_hashref ) { + $dbh->do( + "INSERT INTO accountlines (accounttype, issue_id, borrowernumber, itemnumber, amount, manager_id, interface) VALUES ( ?, ?, ?, ?, ?, ?, ? );", + {}, + ( + 'CR', $row->{issue_id}, + $row->{borrowernumber}, $row->{itemnumber}, + $row->{amount}, $row->{manager_id}, + 'upgrade' + ) + ); + my $credit_id = $dbh->last_insert_id(undef, undef, 'accountlines', undef); + my $amount = $row->{amount} * -1; + $dbh->do("INSERT INTO account_offsets (credit_id, debit_id, type, amount) VALUES (?,?,?,?);",{},($credit_id, $row->{accountlines_id}, 'Lost Item', $amount)); + $dbh->do("UPDATE accountlines SET amount = '$amount' WHERE accountlines_id = '$row->{accountlines_id}';"); + } + + $dbh->do(qq{ + UPDATE + accountlines + SET + accounttype = 'LOST', + status = 'RETURNED' + WHERE + accounttype = 'LR'; + }); + + # Find and correct pathalogical cases of L having been converted to W + $sth = $dbh->prepare( "SELECT accountlines_id, issue_id, borrowernumber, itemnumber, amount, manager_id FROM accountlines WHERE accounttype = 'W' AND itemnumber IS NOT NULL" ); + $sth->execute(); + while ( my $row = $sth->fetchrow_hashref ) { + my $amount = $row->{amount} * -1; + $dbh->do( + "INSERT INTO accountlines (accounttype, issue_id, borrowernumber, itemnumber, amount, manager_id, interface) VALUES ( ?, ?, ?, ?, ?, ?, ? );", + {}, + ( + 'LOST', $row->{issue_id}, $row->{borrowernumber}, + $row->{itemnumber}, $amount, $row->{manager_id}, + 'upgrade' + ) + ); + my $debit_id = $dbh->last_insert_id(undef, undef, 'accountlines', undef); + $dbh->do( + "INSERT INTO account_offsets (credit_id, debit_id, type, amount) VALUES (?,?,?,?);", + {}, + ( + $row->{accountlines_id}, $debit_id, + 'Lost Item', $amount + ) + ); + } + + $dbh->do(qq{ + UPDATE + accountlines + SET + accounttype = 'LOST' + WHERE + accounttype = 'L'; + }); + + $dbh->do(qq{ + UPDATE + accountlines + SET + accounttype = 'LOST_RETURNED' + WHERE + accounttype = 'CR'; + }); + + SetVersion($DBversion); + print "Upgrade to $DBversion done (Bug 22563 - Fix accounttypes for 'L', 'LR' and 'CR')\n"; +} + # SEE bug 13068 # if there is anything in the atomicupdate, read and execute it. my $update_dir = C4::Context->config('intranetdir') . '/installer/data/mysql/atomicupdate/';