From 4bd1e91bf213e7c860283b1eb8452f6ec96d3b7c Mon Sep 17 00:00:00 2001
From: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Date: Thu, 1 Nov 2018 13:28:25 +0000
Subject: [PATCH] Bug 21721: Use Koha::Account->add_debit in AddRenewal

Known Side Effect: Prior to this patch renewal charges were not
recorded in the FinesLog. After this patch, if the FinesLog is
enabled then the 'action' will be recorded as `create_rent`.

Sponsored-by: PTFS Europe

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
---
 C4/Circulation.pm | 29 ++++++-----------------------
 1 file changed, 6 insertions(+), 23 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index e51b9a188f..1a78ddc208 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -1421,7 +1421,8 @@ sub AddIssue {
            # If it costs to borrow this book, charge it to the patron's account.
             my ( $charge, $itemtype ) = GetIssuingCharges( $item->{'itemnumber'}, $borrower->{'borrowernumber'} );
             if ( $charge > 0 ) {
-                AddIssuingCharge( $issue, $charge );
+                my $description = "Rental";
+                AddIssuingCharge( $issue, $charge, $description );
                 $item->{'charge'} = $charge;
             }
 
@@ -2873,26 +2874,8 @@ sub AddRenewal {
     # Charge a new rental fee, if applicable?
     my ( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber );
     if ( $charge > 0 ) {
-        my $accountno = C4::Accounts::getnextacctno( $borrowernumber );
-        my $manager_id = 0;
-        $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; 
-        my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
-        Koha::Account::Line->new(
-            {
-                date              => dt_from_string(),
-                borrowernumber    => $borrowernumber,
-                accountno         => $accountno,
-                amount            => $charge,
-                manager_id        => $manager_id,
-                accounttype       => 'Rent',
-                amountoutstanding => $charge,
-                itemnumber        => $itemnumber,
-                branchcode        => $branchcode,
-                description       => 'Renewal of Rental Item '
-                  . $biblio->title
-                  . " $item->{'barcode'}",
-            }
-        )->store();
+        my $description = "Renewal of Rental Item " . $biblio->title . " $item->{'barcode'}";
+        AddIssuingCharge($issue, $charge, $description);
     }
 
     # Send a renewal slip according to checkout alert preferencei
@@ -3217,7 +3200,7 @@ sub _get_discount_from_rule {
 =cut
 
 sub AddIssuingCharge {
-    my ( $checkout, $charge ) = @_;
+    my ( $checkout, $charge, $description ) = @_;
 
     # FIXME What if checkout does not exist?
 
@@ -3225,7 +3208,7 @@ sub AddIssuingCharge {
     my $accountline = $account->add_debit(
         {
             amount      => $charge,
-            description => 'Rental',
+            description => $description,
             note        => undef,
             user_id     => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0,
             library_id  => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef,
-- 
2.20.1