From 20b84acdfde7ffd852fa7a0bd678b716883a7034 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 25 Feb 2021 17:28:33 +0000 Subject: [PATCH] Bug 27796: Centralise payment/transaction type handling This patch centralises the payment/transaction type select options handling so the SIP types are properly in all cases. Test plan 1) Check that SIP payment types are properly hidden on the following modals. 1a) Refund modal on the borrower account page (The 'Account credit' option should appear here) 1b) Payout modal on borrower account page 1c) Payment via paycollect 1d) Payment via point of sale 1e) Refund via point of sale, register details page (The 'Account credit' option should only appear for debts associated to a patron and not for payments accepted via point of sale) 2) Signoff --- .../prog/en/includes/payments.inc | 29 ------------- .../prog/en/includes/transaction_types.inc | 33 +++++++++++++++ .../prog/en/modules/members/boraccount.tt | 42 ++++++------------- .../prog/en/modules/members/paycollect.tt | 5 +-- .../intranet-tmpl/prog/en/modules/pos/pay.tt | 3 +- .../prog/en/modules/pos/register.tt | 36 +++++++--------- members/boraccount.pl | 10 ++--- pos/register.pl | 4 +- 8 files changed, 72 insertions(+), 90 deletions(-) delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/payments.inc create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/payments.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/payments.inc deleted file mode 100644 index b1b57979ad..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/payments.inc +++ /dev/null @@ -1,29 +0,0 @@ -[% USE AuthorisedValues %] -[%- BLOCK account_payment_types -%] - [% SET payment_types = [] %] - [% FOR pt IN AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %] - [% NEXT IF pt.authorised_value.grep("^SIP[[:digit:]]{2}$").size() %] - [% payment_types.push(pt) %] - [% END %] - [% IF payment_types.size > 0 %] -
  • - [% IF Koha.Preference('UseCashRegisters') %] - - - Required - [%- ELSE -%] - - - [%- END -%] -
  • - [% END %] -[%- END -%] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc new file mode 100644 index 0000000000..73d6253f53 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc @@ -0,0 +1,33 @@ +[% USE AuthorisedValues %] +[% SET payment_types = [] %] +[% FOR pt IN AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %] + [% NEXT IF pt.authorised_value.grep("^SIP[[:digit:]]{2}$").size() %] + [% payment_types.push(pt) %] +[% END %] +[% IF payment_types.size > 0 %] +
  • + [% IF Koha.Preference('UseCashRegisters') %] + + + Required + [%- ELSE -%] + + + [%- END -%] +
  • +[% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt index b23267b970..9ad926f030 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt @@ -115,7 +115,7 @@ [% END %] [% IF CAN_user_updatecharges_refund && account.is_debit && ( account.amountoutstanding != account.amount ) && !(account.status == 'REFUNDED') && !(account.debit_type_code == 'PAYOUT') %] - + [% END %] [% IF CAN_user_updatecharges_discount && account.is_debit && ( account.amountoutstanding == account.amount ) && !(account.debit_type_code == 'PAYOUT') %] @@ -177,20 +177,8 @@ Required - [% SET payment_types = AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %] - [% SET excluded = ['SIP00', 'SIP01', 'SIP02'] %] - [% IF payment_types > 3 %] -
  • - - -
  • - [% END %] + + [% INCLUDE 'transaction_types.inc' type="payout" %] [% IF Koha.Preference('UseCashRegisters') %]
  • @@ -246,18 +234,8 @@ Required
  • - [% SET payment_types = AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %] -
  • - - -
  • + + [% INCLUDE 'transaction_types.inc' type="refund" %] [% IF Koha.Preference('UseCashRegisters') %]
  • @@ -379,11 +357,17 @@ var accountline = button.data('accountline'); $('#refundline').val(accountline); var amount = button.data('amount'); - var amountoutstanding = button.data('amountoutstanding'); + var amountoutstanding = button.data('amountoutstanding') || 0; var paid = amount - amountoutstanding; $("#paid + span").replaceWith(paid); $("#returned").attr({ "value": paid, "max": paid }); - $("#returned, #refund_transaction_type").focus(); + var member = button.data('member'); + if ( member === '' ) { + $("#refund_type option[value='AC']").remove(); + } else if ( $("#refund_type option[value='AC']").length == 0 ) { + $("#refund_type").prepend(''); + } + $("#returned, #refund_type").focus(); }); $("#applyDiscountModal").on("shown.bs.modal", function(e){ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt index f5e5ea3fe8..15d3e08ab1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt @@ -5,7 +5,6 @@ [% USE Registers %] [% USE Price %] [% SET footerjs = 1 %] -[% PROCESS 'payments.inc' %] [% PROCESS 'accounts.inc' %] [% INCLUDE 'doc-head-open.inc' %] [% BLOCK cash_register_required %] @@ -149,7 +148,7 @@ 0.00
  • - [% PROCESS account_payment_types %] + [% INCLUDE 'transaction_types.inc' type="payment" %] [% IF Koha.Preference('UseCashRegisters') %]
  • @@ -280,7 +279,7 @@ 0.00
  • - [% PROCESS account_payment_types %] + [% INCLUDE 'transaction_types.inc' type="payment" %] [% IF Koha.Preference('UseCashRegisters') %]
  • diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/pay.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/pay.tt index 6637b0054b..876a7ced1c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/pay.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/pay.tt @@ -6,7 +6,6 @@ [% USE TablesSettings %] [% USE Registers %] [% SET footerjs = 1 %] -[% PROCESS 'payments.inc' %] [% INCLUDE 'doc-head-open.inc' %] [% SET registers = Registers.all( filters => { current_branch => 1 } ) %] Koha › Payments @@ -125,7 +124,7 @@
  • - [% PROCESS account_payment_types %] + [% INCLUDE 'transaction_types.inc' type="payment" %]
  • diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt index ebee5bd376..0b8f7c1f3d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt @@ -100,9 +100,9 @@ [% IF CAN_user_cash_management_anonymous_refund && !(credit.debit.status == 'REFUNDED' ) %] - + [% ELSIF CAN_user_updatecharges_refund && !(credit.debit.status == 'REFUNDED') && credit.debit.borrowernumber %] - + [% END %] @@ -188,8 +188,8 @@ [% credit.debit.amount | $Price %] - [% IF CAN_user_cash_management_refund_cash_registers && !(credit.debit.status == 'REFUNDED' ) %] - + [% IF CAN_user_cash_management_refund_cash_registers && !(credit.debit.status == 'REFUNDED') && !(credit.debit.debit_type_code == 'PAYOUT') %] + [% END %] @@ -276,19 +276,7 @@ Required
  • - [% SET payment_types = [] %] - [% FOR pt IN AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %] - [% NEXT IF pt.authorised_value.grep("^SIP[[:digit:]]{2}$").size() %] - [% payment_types.push(pt) %] - [% END %] -
  • - - -
  • + [% INCLUDE 'transaction_types.inc' type="refund" %] @@ -363,9 +351,17 @@ var accountline = button.data('accountline'); $('#refundline').val(accountline); var amount = button.data('amount'); - $("#paid + span").replaceWith(amount); - $("#returned").attr({ "value": amount, "max": amount }); - $("#returned, #transaction_type").focus(); + var amountoutstanding = button.data('amountoutstanding') || 0; + var paid = amount - amountoutstanding; + $("#paid + span").replaceWith(paid); + $("#returned").attr({ "value": paid, "max": paid }); + var member = button.data('member'); + if ( member === '' ) { + $("#refund_type option[value='AC']").remove(); + } else if ( $("#refund_type option[value='AC']").length == 0 ) { + $("#refund_type").prepend(''); + } + $("#returned, #refund_type").focus(); }); $(".printReceipt").click(function() { diff --git a/members/boraccount.pl b/members/boraccount.pl index 35930810be..7bd550940d 100755 --- a/members/boraccount.pl +++ b/members/boraccount.pl @@ -79,12 +79,12 @@ if ( $action eq 'payout' ) { my $payment_id = scalar $input->param('accountlines_id'); my $payment = Koha::Account::Lines->find($payment_id); my $amount = scalar $input->param('amount'); - my $transaction_type = scalar $input->param('transaction_type'); + my $payout_type = scalar $input->param('payout_type'); $schema->txn_do( sub { my $payout = $payment->payout( { - payout_type => $transaction_type, + payout_type => $payout_type, branch => $library_id, staff_id => $logged_in_user->id, cash_register => $registerid, @@ -100,7 +100,7 @@ if ( $action eq 'refund' ) { my $charge_id = scalar $input->param('accountlines_id'); my $charge = Koha::Account::Lines->find($charge_id); my $amount = scalar $input->param('amount'); - my $transaction_type = scalar $input->param('transaction_type'); + my $refund_type = scalar $input->param('refund_type'); $schema->txn_do( sub { @@ -113,10 +113,10 @@ if ( $action eq 'refund' ) { amount => $amount } ); - unless ( $transaction_type eq 'AC' ) { + unless ( $refund_type eq 'AC' ) { my $payout = $refund->payout( { - payout_type => $transaction_type, + payout_type => $refund_type, branch => $library_id, staff_id => $logged_in_user->id, cash_register => $registerid, diff --git a/pos/register.pl b/pos/register.pl index 97d6d63cf6..e398bda396 100755 --- a/pos/register.pl +++ b/pos/register.pl @@ -119,7 +119,7 @@ else { my $amount = $input->param('amount'); my $quantity = $input->param('quantity'); my $accountline_id = $input->param('accountline'); - my $transaction_type = $input->param('transaction_type'); + my $refund_type = $input->param('refund_type'); my $accountline = Koha::Account::Lines->find($accountline_id); $schema->txn_do( @@ -136,7 +136,7 @@ else { ); my $payout = $refund->payout( { - payout_type => $transaction_type, + payout_type => $refund_type, branch => $library_id, staff_id => $logged_in_user->id, cash_register => $cash_register->id, -- 2.20.1