From e576d7f38a356358610f456dc367718b513f81cc Mon Sep 17 00:00:00 2001
From: Nick Clemens <nick@bywatersolutions.com>
Date: Tue, 19 Oct 2021 13:03:07 +0000
Subject: [PATCH] Bug 29271: Fix cash register report results

This patch changes accounts.inc to use the credit/debit type codes directly
rather than needlessly fetching the credit_type/debit_type object jsut to get
the code. This allows the BLOCK to work on non-object lines

We also only pass a debit or credit type to csv (accountline cannot be both)

empty-line.inc is also removed in favor of correcting the markup

one more column added to total line

To test:
1 - Add some debits and credits to accounts
2 - Browse to Reports->Cash register
3 - Select transaction type 'All transactions'
4 - Output to screen
5 - Run report
6 - Note transaction types column is empty
7 - Output to a file
8 - Run report
9 - Open file and note:
      amount column is out of place
      extra line before total
10 - Apply patch
11 - Repeat and note display and export are correct
---
 koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc |  8 ++++----
 .../prog/en/modules/reports/cash_register_stats.tt    |  9 ++-------
 .../en/modules/reports/csv/cash_register_stats.tt     | 11 ++++-------
 .../opac-tmpl/bootstrap/en/includes/accounts.inc      |  8 ++++----
 reports/cash_register_stats.pl                        |  5 ++---
 5 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc
index e57195717c..ca749fb7c9 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc
@@ -1,16 +1,16 @@
 [%- BLOCK account_type_description -%]
     <span>
     [%- IF account.credit_type_code -%]
-        [%- PROCESS credit_type_description credit_type = account.credit_type -%]
+        [%- PROCESS credit_type_description credit_type_code = account.credit_type_code -%]
     [%- ELSIF account.debit_type_code -%]
-        [%- PROCESS debit_type_description debit_type = account.debit_type -%]
+        [%- PROCESS debit_type_description debit_type_code = account.debit_type_code -%]
     [%- END -%]
     [%- PROCESS account_status_description account=account -%]
     </span>
 [%- END -%]
 
 [%- BLOCK debit_type_description -%]
-    [%- SWITCH debit_type.code -%]
+    [%- SWITCH debit_type_code -%]
         [%- CASE 'ACCOUNT'          -%]Account creation fee
         [%- CASE 'ACCOUNT_RENEW'    -%]Account renewal fee
         [%- CASE 'LOST'             -%]Lost item
@@ -30,7 +30,7 @@
 [%- END -%]
 
 [%- BLOCK credit_type_description -%]
-    [%- SWITCH credit_type.code -%]
+    [%- SWITCH credit_type_code -%]
         [%- CASE 'PAYMENT'      -%]Payment
         [%- CASE 'WRITEOFF'     -%]Writeoff
         [%- CASE 'FORGIVEN'     -%]Forgiven
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt
index d2f54f421c..ef8efd3bc8 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt
@@ -16,6 +16,7 @@
 <body id="cash_register_stats" class="rep">
 [% INCLUDE 'header.inc' %]
 [% INCLUDE 'cat-search.inc' %]
+[% INCLUDE 'accounts.inc' %]
 
 <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
     <ol>
@@ -178,13 +179,7 @@
                 <td>[% loopresul.branchname | html %]</td>
                 <td>[% loopresul.date | $KohaDates %]</td>
                 <td>[% loopresul.timestamp | $KohaDates with_hours = 1 %]</td>
-                <td>
-                    [% IF loopresul.credit_type == "ACT" %]
-                        <span>All payments to the library</span>
-                    [% ELSE %]
-                        [%- PROCESS account_type_description account=loopresul -%]
-                    [% END %]
-                </td>
+                <td>[% PROCESS account_type_description account=loopresul %]</td>
                 <td>[% loopresul.note | html %]</td>
                 <td style="text-align:right;">[% loopresul.amount | $Price %]</td>
                 <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loopresul.biblionumber | uri %]">[% loopresul.title | html %]</a></td>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/csv/cash_register_stats.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/csv/cash_register_stats.tt
index 553eaa72cd..87664018b3 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/csv/cash_register_stats.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/csv/cash_register_stats.tt
@@ -1,9 +1,6 @@
 [%- USE ItemTypes -%]
 [%- INCLUDE csv_headers/reports/cash_register_stats.tt -%]
-[%- INCLUDE empty_line.inc -%]
-[%- FOREACH row IN rows -%]
-    [%- FOREACH field IN row; field IF !loop.last; ItemTypes.GetDescription(field) IF loop.last; sep IF !loop.last; END -%]
-    [%- INCLUDE empty_line.inc -%]
-[%- END -%]
-TOTAL[%- INCLUDE empty_line.inc -%]
-[%- FOREACH field IN total; field; sep IF !loop.last; END -%]
+[%- FOREACH row IN rows %]
+    [% FOREACH field IN row; field IF !loop.last; ItemTypes.GetDescription(field) IF loop.last; sep IF !loop.last; END %]
+[%- END %]
+TOTAL[% sep %][%- FOREACH field IN total; field; sep IF !loop.last; END -%]
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc
index e57195717c..ca749fb7c9 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc
@@ -1,16 +1,16 @@
 [%- BLOCK account_type_description -%]
     <span>
     [%- IF account.credit_type_code -%]
-        [%- PROCESS credit_type_description credit_type = account.credit_type -%]
+        [%- PROCESS credit_type_description credit_type_code = account.credit_type_code -%]
     [%- ELSIF account.debit_type_code -%]
-        [%- PROCESS debit_type_description debit_type = account.debit_type -%]
+        [%- PROCESS debit_type_description debit_type_code = account.debit_type_code -%]
     [%- END -%]
     [%- PROCESS account_status_description account=account -%]
     </span>
 [%- END -%]
 
 [%- BLOCK debit_type_description -%]
-    [%- SWITCH debit_type.code -%]
+    [%- SWITCH debit_type_code -%]
         [%- CASE 'ACCOUNT'          -%]Account creation fee
         [%- CASE 'ACCOUNT_RENEW'    -%]Account renewal fee
         [%- CASE 'LOST'             -%]Lost item
@@ -30,7 +30,7 @@
 [%- END -%]
 
 [%- BLOCK credit_type_description -%]
-    [%- SWITCH credit_type.code -%]
+    [%- SWITCH credit_type_code -%]
         [%- CASE 'PAYMENT'      -%]Payment
         [%- CASE 'WRITEOFF'     -%]Writeoff
         [%- CASE 'FORGIVEN'     -%]Forgiven
diff --git a/reports/cash_register_stats.pl b/reports/cash_register_stats.pl
index 0dcc38f08c..96d3570955 100755
--- a/reports/cash_register_stats.pl
+++ b/reports/cash_register_stats.pl
@@ -164,8 +164,7 @@ if ($do_it) {
                         $row->{branchname},
                         $row->{date},
                         $row->{timestamp},
-                        $row->{credit_type_code},
-                        $row->{debit_type_code},
+                        $row->{credit_type_code} || $row->{debit_type_code},
                         $row->{note},
                         $row->{amount},
                         $row->{title},
@@ -174,7 +173,7 @@ if ($do_it) {
                     push (@rows, \@rowValues) ;
                 }
                 my @total;
-                for (1..6){push(@total,"")};
+                for (1..7){push(@total,"")};
                 push(@total, $grantotal);
         print $input->header(
             -type       => 'text/csv',
-- 
2.20.1