From: Martin Renvoize Date: Wed, 13 May 2020 13:11:38 +0000 (+0100) Subject: Bug 8338: Remove zero amount overdues on backdated returns where appropriate X-Git-Url: http://git.equinoxoli.org/?p=koha-equinox.git;a=commitdiff_plain;h=3f3534a8eeed87869fd6a858866455c10087d7e1 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. Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Katrin Fischer Signed-off-by: Jonathan Druart --- diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 00fefee..6b95b83 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2441,9 +2441,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( { @@ -2459,15 +2462,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(); } );