From 9578b08b278eea00c8694fb04eb59c55c58fe509 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 9 Sep 2020 14:34:34 +0100 Subject: [PATCH] Bug 25596: Identify overpayment refunds for translation This patch ensures we can uniquely identify automatic overpayment refund credits from the accountlines by introducing a new account credit type and adding appropriate translations for the new code. Test plan 1/ You'll need an overpayment refund to start... 1a/ Issue yourself and item and set the date due early enough to create an overdue fine for at least 2 days worth of overdue fines 1b/ Run the fines.pl script to add the fines 1c/ As a patron, pay off the accruing fine 1d/ Return the item ensuring you backdate it at least a day 1e/ Check that there is an 'Overpayment refund' credit on the patrons account. 2/ Check that the overpayment string is translatable (i.e. it appears in the accounts include file) Signed-off-by: Katrin Fischer --- Koha/Account.pm | 3 +++ Koha/Account/Line.pm | 3 +-- .../data/mysql/atomicupdate/bug_25596.perl | 25 +++++++++++++++++++ .../mysql/mandatory/account_credit_types.sql | 1 + .../mysql/mandatory/account_offset_types.sql | 1 + .../prog/en/includes/accounts.inc | 1 + .../bootstrap/en/includes/account-table.inc | 1 + t/db_dependent/Koha/Account/Line.t | 2 +- 8 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_25596.perl diff --git a/Koha/Account.pm b/Koha/Account.pm index 5178d98639..b4838bcdf2 100644 --- a/Koha/Account.pm +++ b/Koha/Account.pm @@ -361,6 +361,8 @@ $credit_type can be any of: - 'PAYMENT' - 'FORGIVEN' - 'LOST_FOUND' + - 'OVERPAYMENT' + - 'PAYMENT' - 'WRITEOFF' =cut @@ -776,6 +778,7 @@ our $offset_type = { 'CREDIT' => 'Manual Credit', 'FORGIVEN' => 'Writeoff', 'LOST_FOUND' => 'Lost Item Found', + 'OVERPAYMENT' => 'Overpayment', 'PAYMENT' => 'Payment', 'WRITEOFF' => 'Writeoff', 'ACCOUNT' => 'Account Fee', diff --git a/Koha/Account/Line.pm b/Koha/Account/Line.pm index 98d7ef3c15..8772942f82 100644 --- a/Koha/Account/Line.pm +++ b/Koha/Account/Line.pm @@ -695,8 +695,7 @@ sub adjust { my $credit = $account->add_credit( { amount => $new_outstanding * -1, - description => 'Overpayment refund', - type => 'CREDIT', + type => 'OVERPAYMENT', interface => $interface, ( $update_type eq 'overdue_update' ? ( item_id => $self->itemnumber ) : ()), } diff --git a/installer/data/mysql/atomicupdate/bug_25596.perl b/installer/data/mysql/atomicupdate/bug_25596.perl new file mode 100644 index 0000000000..faa74934bd --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_25596.perl @@ -0,0 +1,25 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if ( CheckVersion($DBversion) ) { + + $dbh->do( + qq{ + INSERT IGNORE INTO account_credit_types (code, description, can_be_added_manually, is_system) + VALUES + ('OVERPAYMENT', 'Overpayment refund', 0, 1) + } + ); + + $dbh->do( + qq{ + INSERT IGNORE INTO account_offset_types ( type ) VALUES ('Overpayment'); + } + ); + + $dbh->do( + qq{ + UPDATE accountlines SET credit_type_code = 'OVERPAYMENT' WHERE credit_type_code = 'CREDIT' AND description = 'Overpayment refund' + } + ); + + NewVersion( $DBversion, 25596, "Add OVERPAYMENT credit type" ); +} diff --git a/installer/data/mysql/mandatory/account_credit_types.sql b/installer/data/mysql/mandatory/account_credit_types.sql index 178b98b1c6..d7d8a5b047 100644 --- a/installer/data/mysql/mandatory/account_credit_types.sql +++ b/installer/data/mysql/mandatory/account_credit_types.sql @@ -1,4 +1,5 @@ INSERT INTO account_credit_types ( code, description, can_be_added_manually, is_system ) VALUES +('OVERPAYMENT', 'Overpayment refund', 0, 1), ('PAYMENT', 'Payment', 0, 1), ('WRITEOFF', 'Writeoff', 0, 1), ('FORGIVEN', 'Forgiven', 1, 1), diff --git a/installer/data/mysql/mandatory/account_offset_types.sql b/installer/data/mysql/mandatory/account_offset_types.sql index c27a68996f..1f4f24cf34 100644 --- a/installer/data/mysql/mandatory/account_offset_types.sql +++ b/installer/data/mysql/mandatory/account_offset_types.sql @@ -14,6 +14,7 @@ INSERT INTO account_offset_types ( type ) VALUES ('Rental Fee'), ('Reserve Fee'), ('Hold Expired'), +('Overpayment'), ('OVERDUE_INCREASE'), ('OVERDUE_DECREASE'), ('OVERDUE'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc index 62ea570040..2fb08abe9a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc @@ -7,6 +7,7 @@ [%- CASE 'FORGIVEN' -%]Forgiven [%- CASE 'CREDIT' -%]Credit [%- CASE 'LOST_FOUND' -%]Lost item fee refund + [%- CASE 'OVERPAYMENT' -%]Overpayment refund [%- CASE 'REFUND' -%]Refund [%- CASE -%][% account.credit_type.description | html %] [%- END -%] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc index 54fd662c28..70f83580b4 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc @@ -179,6 +179,7 @@ [%- CASE 'FORGIVEN' -%]Forgiven [%- CASE 'CREDIT' -%]Credit [%- CASE 'LOST_FOUND' -%]Lost item fee refund + [%- CASE 'OVERPAYMENT' -%]Overpayment refund [%- CASE 'REFUND' -%]Refund [%- CASE -%][% account.credit_type.description | html %] [%- END -%] diff --git a/t/db_dependent/Koha/Account/Line.t b/t/db_dependent/Koha/Account/Line.t index 183134613f..81b5366041 100755 --- a/t/db_dependent/Koha/Account/Line.t +++ b/t/db_dependent/Koha/Account/Line.t @@ -570,7 +570,7 @@ subtest 'adjust() tests' => sub { my $overpayment_refund = $account->lines->last; is( $overpayment_refund->amount * 1, -10, 'A new credit has been added' ); - is( $overpayment_refund->description, 'Overpayment refund', 'Credit generated with the expected description' ); + is( $overpayment_refund->credit_type_code, 'OVERPAYMENT', 'Credit generated with the expected credit_type_code' ); $schema->storage->txn_rollback; }; -- 2.20.1