From: Mike Rylander Date: Tue, 12 Jul 2016 19:42:01 +0000 (-0400) Subject: Avoid replacing the loop target in-loop X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=d7cce8c2ef83e2c8a91a8278394366dc16f0004d;p=working%2FEvergreen.git Avoid replacing the loop target in-loop Signed-off-by: Mike Rylander --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm index 9da9dd8205..09f2a8e138 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CircCommon.pm @@ -802,17 +802,19 @@ sub bill_payment_map_for_xact { # Try to map payments to bills by amounts starting with the # largest payments: + my @p; foreach my $payment (sort {$b->amount() <=> $a->amount()} @$payments) { my @bills2pay = grep {$_->{bill}->amount() == $payment->amount()} @entries; if (@bills2pay) { my $entry = $bills2pay[0]; $entry->{bill}->amount(0); push @{$entry->{payments}}, $payment; - # Remove the payment from the master list. - my @p = grep {$_->id() != $payment->id()} @$payments; - $payments = \@p; + } else { + # keep the payment on the master list. + push @p, $payment } } + $payments = \@p; # Map remaining bills to payments in whatever order. foreach my $entry (grep {$_->{bill}->amount() > 0} @entries) {