From f742576c9b53dcd320d4863ac23658a84340e9cd Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 13 May 2020 14:11:38 +0100 Subject: [PATCH] Bug 8338: Remove zero amount overdues on backdated returns where appropriate This patch removes any overdues which would be reversed on a backdated return if CalcFineOnBackdate is enabled and the user has not already attempted to pay off the accruing fine. --- C4/Circulation.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 5f48cfc288..d84fbd9735 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2430,9 +2430,12 @@ sub _FixOverduesOnReturn { return 0 unless $accountlines->count; # no warning, there's just nothing to fix my $accountline = $accountlines->next; + my $payments = $accountline->credits; my $amountoutstanding = $accountline->amountoutstanding; - if ($exemptfine && ($amountoutstanding != 0)) { + if ( $accountline->amount == 0 && $payments->count == 0 ) { + $accountline->delete; + } elsif ($exemptfine && ($amountoutstanding != 0)) { my $account = Koha::Account->new({patron_id => $borrowernumber}); my $credit = $account->add_credit( { @@ -2448,15 +2451,15 @@ sub _FixOverduesOnReturn { $credit->apply({ debits => [ $accountline ], offset_type => 'Forgiven' }); $accountline->status('FORGIVEN'); + $accountline->store(); if (C4::Context->preference("FinesLog")) { &logaction("FINES", 'MODIFY',$borrowernumber,"Overdue forgiven: item $item"); } } else { $accountline->status($status); + $accountline->store(); } - - return $accountline->store(); } ); -- 2.20.1