From b048d74c2fd6f5e25ce5764940d25d79244cd9fe Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 10 Apr 2019 10:05:07 +0100 Subject: [PATCH] Bug 22511: (follow-up) Add DB Update This update takes old VOID accountlines and attempts to restore the original accounttypes using the offsets and set the status to 'VOID' Signed-off-by: Martin Renvoize --- .../data/mysql/atomicupdate/bug_22511.perl | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/bug_22511.perl diff --git a/installer/data/mysql/atomicupdate/bug_22511.perl b/installer/data/mysql/atomicupdate/bug_22511.perl new file mode 100644 index 0000000000..44474285dc --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_22511.perl @@ -0,0 +1,25 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if ( CheckVersion($DBversion) ) { + + my $types_map = { + 'Writeoff' => 'W', + 'Payment' => 'Pay', + 'List Item' => 'CR', + 'Manual Credit' => 'C', + 'Forgiven' => 'FOR' + }; + + my $sth = $dbh->prepare( "SELECT accountlines_id FROM accountlines WHERE accounttype = 'VOID'" ); + my $sth2 = $dbh->prepare( "SELECT type FROM account_offsets WHERE credit_id = ? ORDER BY created_on LIMIT 1" ); + my $sth3 = $dbh->prepare( "UPDATE accountlines SET accounttype = ?, status = 'VOID' WHERE accountlines_id = ?" ); + $sth->execute(); + while (my $row = $sth->fetchrow_hashref) { + $sth2->execute($row->{accountlines_id}); + my $result = $sth2->fetchrow; + my $type = $types_map->{$result->{'type'}} // 'Pay'; + $sth3->execute($type,$row->{accountlines_id}); + } + + SetVersion($DBversion); + print "Upgrade to $DBversion done (Bug 22511 - Update existing VOID accountlines)\n"; +} -- 2.20.1