# 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) {