From 75d126ea1e81d16c73d4430a7dc9c92232d27270 Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Fri, 14 May 2021 15:39:03 +0100
Subject: [PATCH] Bug 22435: Update accountline-details page to show all
 history

The accountline-details page took a simplistic approach to displaying
the history of an accountline. This patch drops the now defunct
offset_type_description template block from it's respective include
files, and then updates the accountline-details teplate and controller
to show a full history of what's happend to the accountlines passed,
including creation, increment/decrement, payments, cancellation and
voids.

Test plan
1/ Create some credits and debits and apply them to each other in
various combinations
2/ View the 'Details' page for some of the debit/credits
3/ Compare before patch and after for the Details page.
---
 .../prog/en/includes/accounts.inc             | 14 ----
 .../en/modules/members/accountline-details.tt | 78 +++++++++----------
 .../bootstrap/en/includes/accounts.inc        | 14 ----
 members/accountline-details.pl                | 17 ++--
 4 files changed, 47 insertions(+), 76 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc
index 6c5450b0de..e57195717c 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/accounts.inc
@@ -56,17 +56,3 @@
         [%- CASE              -%]
     [%- END -%]
 [%- END -%]
-
-[%- BLOCK offset_type_description -%]
-    [%- SWITCH account_offset.type -%]
-        [%- CASE 'Credit Applied' -%]<span>Credit applied</span>
-        [%- CASE 'Payment'        -%]<span>Payment</span>
-        [%- CASE 'Manual Credit'  -%]<span>Manual credit</span>
-        [%- CASE 'Manual Debit'   -%]<span>Manual invoice</span>
-        [%- CASE 'Lost Item'      -%]<span>Lost item returned</span>
-        [%- CASE 'Writeoff'       -%]<span>Writeoff</span>
-        [%- CASE 'Void Payment'   -%]<span>Void payment</span>
-        [%- CASE 'CANCELLATION'   -%]<span>Cancelled charge</span>
-        [%- CASE                  -%][% account_offset.type | html %]
-    [%- END -%]
-[%- END -%]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt
index c8d50f0a5e..ba4ce08a52 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt
@@ -60,9 +60,9 @@
             [% INCLUDE 'members-toolbar.inc' borrowernumber=patron.borrowernumber %]
 
             [% IF accountline %]
-                [% IF type == 'credit' %]
+                [% IF accountline.credit_type_code %]
                     <h2>Details of payment</h2>
-                [% ELSIF type == 'debit' %]
+                [% ELSIF accountline.debit_type_code %]
                     <h2>Details of fee</h2>
                 [% END %]
 
@@ -134,63 +134,61 @@
                     </tbody>
                 </table>
 
-
-                [% IF type == 'credit' %]
-                    <h3>Fees paid</h3>
-                [% ELSIF type == 'debit' %]
-                    <h3>Payments</h3>
-                [% END %]
-
+                <h3>History</h3>
                 <table class="accountline-offsets-table" id="accountline-debits-table">
                     <thead>
                         <tr>
-                            <th>Date created</th>
-                            <th>Date updated</th>
-                            <th>Amount</th>
-                            <th>Amount outstanding</th>
-                            <th>Type</th>
-                            <th>Note</th>
+                            <th>Date</th>
+                            <th>Change amount</th>
+                            <th>Change type</th>
                             <th>Transacting librarian</th>
-                            <th>Date/time of change</th>
-                            <th>Amount of change</th>
-                            <th>Type of change</th>
+                            <th>Note</th>
                             <th>&nbsp;</th>
                         </tr>
                     </thead>
 
                     <tbody>
                         [% FOREACH ao IN account_offsets %]
-                            [% IF type == 'credit' %]
-                                [% SET offset_accountline = ao.debit %]
-                            [% ELSIF type == 'debit' %]
-                                [% SET offset_accountline = ao.credit %]
-                            [% END %]
+                                [% IF ao.credit_id == accountline.accountlines_id %]
+                                    [% SET offset_accountline = ao.debit %]
+                                [% ELSIF ao.debit_id == accountline.accountlines_id %]
+                                    [% SET offset_accountline = ao.credit %]
+                                [% END %]
+
+                                [%- BLOCK ao_description -%]
+                                    [%- SWITCH ao.type -%]
+                                        [%- CASE 'CREATE'           -%]<span>Created</span>
+                                        [%- CASE 'OVERDUE_INCREASE' -%]<span>Increase</span>
+                                        [%- CASE 'OVERDUE_DECREASE' -%]<span>Decrease</span>
+                                        [%- CASE 'APPLY'            -%]<span>Applied</span>
+                                        [%- CASE 'VOID'             -%]<span>Reversed</span>
+                                    [%- END -%]
+                                [%- END -%]
 
-                            [% IF offset_accountline %]
                                 <tr>
-                                    <td>[% offset_accountline.date | $KohaDates %]</td>
-                                    <td>[% offset_accountline.timestamp | $KohaDates  with_hours => 1 %]</td>
-                                    <td>[% offset_accountline.amount | $Price %]</td>
-                                    <td>[% offset_accountline.amountoutstanding | $Price %]</td>
-                                    <td>[% PROCESS account_type_description account=offset_accountline %]</td>
-                                    <td>[% offset_accountline.note | html %]</td>
-                                    <td>[% IF offset_accountline.manager_id %]<a href="moremember.pl?borrowernumber=[% offset_accountline.manager_id | uri %]">[% offset_accountline.manager_id | html %]</a>[% END %]</td>
-                                    <td>[% ao.created_on | $KohaDates  with_hours => 1 %]</td>
+                                    <td>[% ao.created_on | $KohaDates with_hours => 1%]</td>
                                     <td>[% ao.amount | $Price %]</td>
-                                    <td>[% PROCESS offset_type_description account_offset=ao %]</td>
-                                    <td><a href="accountline-details.pl?accountlines_id=[% offset_accountline.id | uri %]" class="btn btn-default btn-xs"><i class="fa fa-list"></i> Details</a></td>
+                                    <td>
+                                        [%- IF offset_accountline -%]
+                                            [% PROCESS account_type_description account=offset_accountline %] ([% PROCESS ao_description ao=ao %])
+                                        [%- ELSE -%]
+                                            [% PROCESS ao_description ao=ao %]
+                                        [%- END -%]
+                                    </td>
+                                    <td>[% IF offset_accountline.manager_id %]<a href="moremember.pl?borrowernumber=[% offset_accountline.manager_id | uri %]">[% offset_accountline.manager_id | html %]</a>[% END %]</td>
+                                    <td>[% offset_accountline.note | html %]</td>
+                                    <td>
+                                        [%- IF offset_accountline -%]
+                                        <a href="accountline-details.pl?accountlines_id=[% offset_accountline.id | uri %]" class="btn btn-default btn-xs"><i class="fa fa-list"></i> Details</a>
+                                        [%- END -%]
+                                    </td>
                                 </tr>
-                            [% END %]
                         [% END %]
                     </tbody>
                 </table>
             [% ELSE %]
                 <div class="dialog message">
-                    [% IF type == 'credit' %]
-                        Payment not found
-                    [% ELSIF type == 'debit' %]
-                        Fee not found
-                    [% END %]
+                    Account not found
                 </div>
             [% END %]
 
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc
index 6c5450b0de..e57195717c 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/accounts.inc
@@ -56,17 +56,3 @@
         [%- CASE              -%]
     [%- END -%]
 [%- END -%]
-
-[%- BLOCK offset_type_description -%]
-    [%- SWITCH account_offset.type -%]
-        [%- CASE 'Credit Applied' -%]<span>Credit applied</span>
-        [%- CASE 'Payment'        -%]<span>Payment</span>
-        [%- CASE 'Manual Credit'  -%]<span>Manual credit</span>
-        [%- CASE 'Manual Debit'   -%]<span>Manual invoice</span>
-        [%- CASE 'Lost Item'      -%]<span>Lost item returned</span>
-        [%- CASE 'Writeoff'       -%]<span>Writeoff</span>
-        [%- CASE 'Void Payment'   -%]<span>Void payment</span>
-        [%- CASE 'CANCELLATION'   -%]<span>Cancelled charge</span>
-        [%- CASE                  -%][% account_offset.type | html %]
-    [%- END -%]
-[%- END -%]
diff --git a/members/accountline-details.pl b/members/accountline-details.pl
index a5c37079aa..ee2b9fc758 100755
--- a/members/accountline-details.pl
+++ b/members/accountline-details.pl
@@ -45,20 +45,21 @@ my $accountlines_id = $input->param('accountlines_id');
 my $accountline = Koha::Account::Lines->find($accountlines_id);
 
 if ($accountline) {
-    my $type = $accountline->amount < 0 ? 'credit' : 'debit';
-    my $column = $type eq 'credit' ? 'credit_id' : 'debit_id';
-
     my $account_offsets = Koha::Account::Offsets->search(
-        { $column  => $accountlines_id },
-        { order_by => 'created_on' },
+        [
+            {
+                credit_id => $accountline->accountlines_id
+            },
+            {
+                debit_id => $accountline->accountlines_id
+            }
+        ],
+        { order_by => 'created_on' }
     );
 
     $template->param(
-        type            => $type,
         accountline     => $accountline,
         account_offsets => $account_offsets,
-
-        finesview => 1,
     );
 
     my $patron = Koha::Patrons->find( $accountline->borrowernumber );
-- 
2.20.1