From 968b4f37dbdd67df247005b8b657e2991c24beaa Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Thu, 23 Jan 2020 15:52:25 +0000
Subject: [PATCH] Bug 24082: Add `anonymous_refund` permission to
 `cash_management`

This patch adds the new `anonymous_refund` permission to the
`cash_management` flag and binds it to the visability of the register
details page.
---
 installer/data/mysql/atomicupdate/bug_24082.perl     | 12 ++++++++++++
 installer/data/mysql/userpermissions.sql             |  1 +
 .../intranet-tmpl/prog/en/includes/permissions.inc   |  5 +++++
 .../intranet-tmpl/prog/en/includes/pos-menu.inc      |  2 +-
 .../intranet-tmpl/prog/en/modules/pos/register.tt    |  2 ++
 pos/register.pl                                      |  2 +-
 6 files changed, 22 insertions(+), 2 deletions(-)
 create mode 100644 installer/data/mysql/atomicupdate/bug_24082.perl

diff --git a/installer/data/mysql/atomicupdate/bug_24082.perl b/installer/data/mysql/atomicupdate/bug_24082.perl
new file mode 100644
index 0000000000..be66c07777
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/bug_24082.perl
@@ -0,0 +1,12 @@
+$DBversion = 'XXX';    # will be replaced by the RM
+if ( CheckVersion($DBversion) ) {
+
+    $dbh->do(qq{
+        INSERT IGNORE permissions (module_bit, code, description)
+        VALUES
+        (25, 'anonymous_refund', 'Perform refund actions from cash registers')
+    });
+
+    SetVersion($DBversion);
+    print "Upgrade to $DBversion done (Bug 23442 - Add a refund option to the point of sale system)\n";
+}
diff --git a/installer/data/mysql/userpermissions.sql b/installer/data/mysql/userpermissions.sql
index ebf869641f..2b41fa24b1 100644
--- a/installer/data/mysql/userpermissions.sql
+++ b/installer/data/mysql/userpermissions.sql
@@ -121,6 +121,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    (23, 'self_checkout_module', 'Perform self checkout at the OPAC. It should be used for the patron matching the AutoSelfCheckID'),
    (24, 'manage_rotas', 'Create, edit and delete rotas'),
    (24, 'manage_rota_items', 'Add and remove items from rotas'),
+   (25, 'anonymous_refund', 'Perform refund actions from cash registers'),
    (25, 'cashup', 'Perform cash register cashup action'),
    (25, 'takepayment', 'Access the point of sale page and take payments')
 ;
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc
index 25943655fd..942fd5b6f6 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc
@@ -701,5 +701,10 @@
             Perform cash register cashup action
         </span>
         <span class="permissioncode">([% name | html %])</span>
+    [%- CASE 'anonymous_refund' -%]
+        <span class="sub_permission anonymous_refund_subpermission">
+            Perform anonymous refund actions
+        </span>
+        <span class="permissioncode">([% name | html %])</span>
   [%- END -%]
 [%- END -%]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc
index c9579b5492..c2ad730e5a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc
@@ -1,6 +1,6 @@
 <div id="navmenu">
     <div id="navmenulist">
-        [% IF ( CAN_user_cash_management_cashup ) %]
+        [% IF ( CAN_user_cash_management_cashup || CAN_user_cash_management_anonymous_refund ) %]
         <h5>Point of sale</h5>
         <ul>
             <li><a href="/cgi-bin/koha/pos/register.pl">Register details</a></li>
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 8a4b09f4e0..dc3685e9f2 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt
@@ -27,9 +27,11 @@
             </div>
             [% ELSE %]
 
+            [% IF ( CAN_user_cash_management_cashup ) %]
             <div id="toolbar" class="btn-toolbar">
                 <a id="cashup" href="/cgi-bin/koha/pos/register.pl?op=cashup" class="btn btn-default"><i class="fa fa-money"></i> Record cashup</a>
             </div>
+            [% END %]
 
             <h1>Register transaction details for [% register.name | html %]</h1>
 
diff --git a/pos/register.pl b/pos/register.pl
index 8ad143a5b7..a7fde86ce2 100755
--- a/pos/register.pl
+++ b/pos/register.pl
@@ -35,7 +35,7 @@ my ( $template, $loggedinuser, $cookie, $user_flags ) = get_template_and_user(
         query           => $input,
         type            => 'intranet',
         authnotrequired => 0,
-        flagsrequired   => { cash_management => 'cashup' },
+        flagsrequired   => { cash_management => [ 'cashup', 'anonymous_refund' ] },
     }
 );
 my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in";
-- 
2.20.1