diff options
author | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-07-19 18:03:33 +0000 |
---|---|---|
committer | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-07-19 18:03:33 +0000 |
commit | a756ca0a8ce12be46940050eede79959f1f85947 (patch) | |
tree | 76093ed3c37cc3dfce9593c8b70a2e3b845b4ec8 /LedgerSMB | |
parent | 6522290542982f7aece6a9fad9e77f868c611323 (diff) |
Applying Victor's patch 1766387
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/branches/1.2@1427 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB')
-rwxr-xr-x | LedgerSMB/IS.pm | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/LedgerSMB/IS.pm b/LedgerSMB/IS.pm index 5232b02b..a45e0000 100755 --- a/LedgerSMB/IS.pm +++ b/LedgerSMB/IS.pm @@ -1120,6 +1120,29 @@ sub post_invoice { $linetotal, $form->{transdate}, $form->{"project_id_$i"}, $ref->{id} ) || $form->dberror($query); + my $allocated1 = 0; + my $totalqty1 = $qty; + my $query_ap = qq|SELECT i.id, i.qty, i.allocated, a.transdate + FROM invoice i + JOIN parts p ON (p.id = i.parts_id) + JOIN ap a ON (a.id = i.trans_id) + WHERE i.parts_id = ? AND (i.qty + i.allocated) > 0 AND i.sellprice = ? + ORDER BY transdate|; + my $sth1 = $dbh->prepare($query_ap); + $sth1->execute( + $form->{"id_$i"}, $ref->{"sellprice"} + ) || $form->dberror($query_ap); + while ( my $ref1 = $sth1->fetchrow_hashref(NAME_lc) ) { + $form->db_parse_numeric(sth=>$sth1, hashref => $ref1); + my $qty = $ref1->{qty} + $ref1->{allocated}; + if ( ( $qty - $totalqty ) > 0 ) { $qty = $totalqty; } + $form->update_balance( + $dbh, "invoice", "allocated", + qq|id = $ref1->{id}|, $qty ); + $allocated1 += $qty; + last if ( ( $totalqty1 -= $qty ) <= 0 ); + } + $form->update_balance( $dbh, "invoice", "allocated", qq|id = $ref->{id}|, $allocated1 * -1 ); last if ( ( $totalqty += $qty ) >= 0 ); } |