From 35f49e18c2866add21c0fec3e75bd4981b4f42fd Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Fri, 2 Oct 2020 12:47:27 +0100
Subject: [PATCH] Bug 26540: Remove 'CASH' type from 'refund' and 'payout'

This patch removes the 'CASH' transaction type, hides the register
selection and adds an alert to the Payout and Refund modals on the
boraccount page if there are no cash registers yet defined at the for
the current branch.

Test plan
1) Enable 'UseCashRegisters'
2) Add a credit to a user account
3) Attempt to 'Issue payout' of the credit to the user and note
3a) A new blue info message appears in the modal letting you know that
    you cannot issue a payout of type 'Cash' to the user without first
    adding a cash register. (If you have the correct permissions, you
    will also see a button in that info box allowing you to add said
    register)
3b) You will not see either the payment type or registers pulldown in
    the modal
4) Add at least one new 'PAYMENT_TYPE' authorized value
5) Repeat step 3
5a) Note the blue info message still appears
5b) You may now select a payment type as defined in step 4, however the
'Cash' option is not available.
5c) There is still not an option to select a cash register
6) Add a cash register for your branch
7) Repeat step 3
7a) You will no longer see the blue info box
7b) You should be able to select 'Cash' from the 'Payment type' options
7c) You will be able to select your cash register

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
---
 .../prog/en/includes/transaction_types.inc    |  1 +
 .../prog/en/modules/members/boraccount.tt     | 28 +++++++++++++++----
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc
index 9200c8ea6eb..96ed02c2ed7 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/transaction_types.inc
@@ -2,6 +2,7 @@
 [% SET payment_types = [] %]
 [% FOR pt IN AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %]
     [% NEXT IF pt.authorised_value.grep("^SIP[[:digit:]]{2}$").size() %]
+    [% NEXT IF ( type == 'payout' || type == 'refund' ) && pt.authorised_value == 'CASH' && Koha.Preference('UseCashRegisters') && registers.size == 0 %]
     [% payment_types.push(pt) %]
 [% END %]
 [% IF payment_types.size > 0 %]
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 5ed00b06f3d..9a1019c82a6 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt
@@ -257,8 +257,16 @@
                     </div>
                     <div class="modal-body">
                         [% IF Koha.Preference('UseCashRegisters') && ( registers.size == 0 ) %]
-                        <div id="payout_error" class="dialog alert">
-                            You must have at least one cash register associated with this branch before you can record cash payouts.
+                        <div id="payout_error" class="dialog message">
+                            <p>
+                                You must have at least one cash register associated with this branch before you can record cash payouts.
+                            </p>
+                            [% IF ( CAN_user_parameters_manage_cash_registers ) %]
+                                <form action="/cgi-bin/koha/admin/cash_registers.pl" method="get">
+                                    <input type="hidden" name="op" value="add_form" />
+                                    <button class="new" type="submit"><i class="fa fa-plus"></i> Create a new cash register</button>
+                                </form>
+                            [% END %]
                         </div>
                         [% END %]
                         <fieldset class="rows">
@@ -274,7 +282,7 @@
 
                                 [% INCLUDE 'transaction_types.inc' type="payout" %]
 
-                                [% IF Koha.Preference('UseCashRegisters') %]
+                                [% IF Koha.Preference('UseCashRegisters') && ( registers.size >= 1 ) %]
                                 <li>
                                     <label for="registerid">Cash register: </label>
                                     <select name="registerid" id="payout_registerid">
@@ -311,8 +319,16 @@
                     </div>
                     <div class="modal-body">
                         [% IF Koha.Preference('UseCashRegisters') && ( registers.size == 0 ) %]
-                        <div id="refund_error" class="dialog alert">
-                            You must have at least one cash register associated with this branch before you can record cash refunds.
+                        <div id="refund_error" class="dialog message">
+                            <p>
+                                You must have at least one cash register associated with this branch before you can record cash refunds.
+                            </p>
+                            [% IF ( CAN_user_parameters_manage_cash_registers ) %]
+                                <form action="/cgi-bin/koha/admin/cash_registers.pl" method="get">
+                                    <input type="hidden" name="op" value="add_form" />
+                                    <button class="new" type="submit"><i class="fa fa-plus"></i> Create a new cash register</button>
+                                </form>
+                            [% END %]
                         </div>
                         [% END %]
                         <fieldset class="rows">
@@ -331,7 +347,7 @@
 
                                 [% INCLUDE 'transaction_types.inc' type="refund" %]
 
-                                [% IF Koha.Preference('UseCashRegisters') %]
+                                [% IF Koha.Preference('UseCashRegisters') && ( registers.size >= 1 ) %]
                                 <li>
                                     <label for="registerid">Cash register: </label>
                                     <select name="registerid" id="refund_registerid">
-- 
2.45.2