[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SF.net SVN: ledger-smb: [1382] trunk/LedgerSMB/IR.pm



Revision: 1382
          http://svn.sourceforge.net/ledger-smb/?rev=1382&view=rev
Author:   einhverfr
Date:     2007-07-11 21:32:05 -0700 (Wed, 11 Jul 2007)

Log Message:
-----------
Committing Victor's reversal cogs patch

Modified Paths:
--------------
    trunk/LedgerSMB/IR.pm

Modified: trunk/LedgerSMB/IR.pm
===================================================================
--- trunk/LedgerSMB/IR.pm	2007-07-12 00:58:46 UTC (rev 1381)
+++ trunk/LedgerSMB/IR.pm	2007-07-12 04:32:05 UTC (rev 1382)
@@ -315,6 +315,29 @@
             }
 
             if ( $form->{"inventory_accno_id_$i"} ) {
+		if($form->{"qty_$i"}<0) {
+                    # check for unallocated entries at the same price to match our entry
+                    $query = 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
+				    |;
+            	    $sth = $dbh->prepare($query);
+                    $sth->execute( $form->{"id_$i"}, $form->{"sellprice_$i"}) || $form->dberror($query);
+                    my $totalqty = $form->{"qty_$i"};
+            	    while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
+                        $form->db_parse_numeric(sth=>$sth, hashref => $ref);
+                    	my $qty = $ref->{qty} + $ref->{allocated};
+                        if ( ( $qty - $totalqty ) < 0 ) { $qty = $totalqty; }
+                    	# update allocated for sold item
+                        $form->update_balance( $dbh, "invoice", "allocated", qq|id = $ref->{id}|, $qty * -1 );
+                        $allocated += $qty;
+                        last if ( ( $totalqty -= $qty ) >= 0 );
+            	    }
+		}
 
                 # add purchase to inventory
                 push @{ $form->{acc_trans}{lineitems} },


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.