From 0fdc34a43809f575c124dd30265129f3d6130a7c 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 vis 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/modules/members/boraccount.tt | 42 ++++++------------- .../prog/en/modules/members/paycollect.tt | 7 ++-- .../intranet-tmpl/prog/en/modules/pos/pay.tt | 3 +- .../prog/en/modules/pos/register.tt | 36 +++++++--------- members/boraccount.pl | 10 ++--- pos/register.pl | 4 +- 7 files changed, 40 insertions(+), 91 deletions(-) delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/payments.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/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..9e7b7e4662 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') %]
  • @@ -279,8 +278,8 @@ 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 4d35b60ff7..5f3b6436f5 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 5569539969..bcd58bda0b 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