From: senator Date: Fri, 7 Jan 2011 20:04:34 +0000 (+0000) Subject: Acq: fix prorating bug X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=3c3e3d08821e4fbaa2669a164aef909f3f24fcf0;p=contrib%2FConifer.git Acq: fix prorating bug When prorating, the system decides what funds to target by looking at what funds have already been spent against. Previously, the system only looked at acqie objects, but an invoice can also be composed of acqii objects. git-svn-id: svn://svn.open-ils.org/ILS/trunk@19134 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Invoice.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Invoice.pm index 25e5e8a853..d0c20d296a 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Invoice.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Invoice.pm @@ -392,9 +392,16 @@ sub prorate_invoice { my @lid_debits; push(@lid_debits, @{find_entry_debits($e, $_, 'f', entry_amount_per_item($_))}) for @{$invoice->entries}; + my $inv_items = $e->search_acq_invoice_item([ + {"invoice" => $invoice_id, "fund_debit" => {"!=" => undef}}, + {"flesh" => 1, "flesh_fields" => {"acqii" => ["fund_debit"]}} + ]) or return $e->die_event; + + my @item_debits = map { $_->fund_debit } @$inv_items; + my %fund_totals; my $total_entry_paid = 0; - for my $debit (@lid_debits) { + for my $debit (@lid_debits, @item_debits) { $fund_totals{$debit->fund} = 0 unless $fund_totals{$debit->fund}; $fund_totals{$debit->fund} += $debit->amount; $total_entry_paid += $debit->amount;