@@ -, +, @@ --- installer/data/mysql/account_offset_types.sql | 1 + .../data/mysql/atomicupdate/bug_20980.perl | 39 +++++++++++++++++++ .../prog/en/includes/account_offset_type.inc | 1 + 3 files changed, 41 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/bug_20980.perl --- a/installer/data/mysql/account_offset_types.sql +++ a/installer/data/mysql/account_offset_types.sql @@ -3,6 +3,7 @@ INSERT INTO account_offset_types ( type ) VALUES ('Payment'), ('Lost Item'), ('Processing Fee'), +('Manual Credit'), ('Manual Debit'), ('Reverse Payment'), ('Forgiven'), --- a/installer/data/mysql/atomicupdate/bug_20980.perl +++ a/installer/data/mysql/atomicupdate/bug_20980.perl @@ -0,0 +1,39 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + + # Add 'Manual Credit' offset type + $dbh->do(q{ + INSERT IGNORE INTO `account_offset_types` (`type`) VALUES ('Manual Credit'); + }); + + # Fix wrong account offsets / Manual credits + $dbh->do(q{ + UPDATE account_offsets + SET credit_id=debit_id, + debit_id=NULL, + type='Manual Credit' + WHERE amount < 0 AND + type='Manual Debit' AND + debit_id IN + (SELECT accountlines_id AS debit_id + FROM accountlines + WHERE accounttype='C'); + }); + + # Fix wrong account offsets / Manually forgiven amounts + $dbh->do(q{ + UPDATE account_offsets + SET credit_id=debit_id, + debit_id=NULL, + type='Writeoff' + WHERE amount < 0 AND + type='Manual Debit' AND + debit_id IN + (SELECT accountlines_id AS debit_id + FROM accountlines + WHERE accounttype='FOR'); + }); + + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 20980 - Manual credit offsets are stored as debits)\n"; +} --- a/koha-tmpl/intranet-tmpl/prog/en/includes/account_offset_type.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/account_offset_type.inc @@ -1,5 +1,6 @@ [% SWITCH account_offset.type %] [% CASE 'Payment' %]Payment + [% CASE 'Manual Credit' %]Manual credit [% CASE 'Manual Debit' %]Manual invoice [% CASE 'Lost Item Return' %]Lost item returned [% CASE 'Writeoff' %]Writeoff --