Bug 3341: Fines calculation erroneous when a repeatable holiday is added
authorFrédérick Capovilla <frederick.capovilla@sys-tech.net>
Sat, 5 Mar 2011 19:15:04 +0000 (08:15 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Sat, 5 Mar 2011 19:15:44 +0000 (08:15 +1300)
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
C4/Overdues.pm

index adba979..b5e3cdf 100644 (file)
@@ -488,12 +488,12 @@ sub UpdateFine {
 
     if ( my $data = $sth->fetchrow_hashref ) {
 
-               # we're updating an existing fine.  Only modify if we're adding to the charge.
+               # we're updating an existing fine.  Only modify if amount changed
         # Note that in the current implementation, you cannot pay against an accruing fine
         # (i.e. , of accounttype 'FU').  Doing so will break accrual.
        if ( $data->{'amount'} != $amount ) {
             my $diff = $amount - $data->{'amount'};
-            $diff = 0 if ( $data->{amount} > $amount);
+           #3341: diff could be positive or negative!
             my $out  = $data->{'amountoutstanding'} + $diff;
             my $query = "
                 UPDATE accountlines