@@ -, +, @@ --- C4/Overdues.pm | 30 ++++++++++++++++-------------- 1 files changed, 16 insertions(+), 14 deletions(-) --- a/C4/Overdues.pm +++ a/C4/Overdues.pm @@ -515,20 +515,22 @@ sub UpdateFine { my $offset = 0; if ($fine) { - if ( - sprintf( "%.6f", $fine->amount_original() ) - ne - sprintf( "%.6f", $amount ) ) - { - my $difference = $amount - $fine->amount_original(); + if ( $fine->accruing() ) { # Don't update or recreate fines no longer accruing + if ( + sprintf( "%.6f", $fine->amount_original() ) + ne + sprintf( "%.6f", $amount ) ) + { + my $difference = $amount - $fine->amount_original(); - $fine->amount_original( $fine->amount_original() + $difference ); - $fine->amount_outstanding( $fine->amount_outstanding() + $difference ); - $fine->amount_last_increment($difference); - $fine->updated_on($timestamp); - $fine->update(); + $fine->amount_original( $fine->amount_original() + $difference ); + $fine->amount_outstanding( $fine->amount_outstanding() + $difference ); + $fine->amount_last_increment($difference); + $fine->updated_on($timestamp); + $fine->update(); - $offset = 1; + $offset = 1; + } } } else { --