From fa48df281d68fe1d27cc6fb10b41e4504a70afb9 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Tue, 23 Aug 2016 16:33:10 +0200 Subject: [PATCH] Bug 14390: [Follow-up] Only update FU record in UpdateFine Exclude O, F and M when outstanding == 0. Check if the issue_id points to a FU record. Note: We only warn now when we see a second FU record with this issue id. That should be a rare exception. As before, we are just counting it in our total. Added a FIXME. Signed-off-by: Marcel de Rooy Tested fine on overdue. Renewed and backdated for a second fine. The F and FU can be seen on the Fines tab and are totaled on Check out. Signed-off-by: Jacek Ablewicz Signed-off-by: Kyle M Hall --- C4/Overdues.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/C4/Overdues.pm b/C4/Overdues.pm index 3f0c32da64..71c8606cf0 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -537,8 +537,9 @@ sub UpdateFine { # "REF" is Cash Refund my $sth = $dbh->prepare( "SELECT * FROM accountlines - WHERE borrowernumber=? - AND accounttype IN ('FU','O','F','M')" + WHERE borrowernumber=? AND + (( accounttype IN ('O','F','M') AND amountoutstanding<>0 ) OR + accounttype = 'FU' )" ); $sth->execute( $borrowernumber ); my $data; @@ -549,9 +550,10 @@ sub UpdateFine { # - accumulate fines for other items # so we can update $itemnum fine taking in account fine caps while (my $rec = $sth->fetchrow_hashref) { - if ( $rec->{issue_id} == $issue_id ) { + if ( $rec->{issue_id} == $issue_id && $rec->{accounttype} eq 'FU' ) { if ($data) { warn "Not a unique accountlines record for issue_id $issue_id"; + #FIXME Should we still count this one in total_amount ?? } else { $data = $rec; -- 2.39.5