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

SF.net SVN: ledger-smb: [1411] branches/1.2/LedgerSMB



Revision: 1411
          http://svn.sourceforge.net/ledger-smb/?rev=1411&view=rev
Author:   einhverfr
Date:     2007-07-16 18:36:00 -0700 (Mon, 16 Jul 2007)

Log Message:
-----------
Applying Victor's patch for ar/ap revere bugs (bug 1752439)

Modified Paths:
--------------
    branches/1.2/LedgerSMB/IS.pm
    branches/1.2/LedgerSMB/Session/DB.pm

Modified: branches/1.2/LedgerSMB/IS.pm
===================================================================
--- branches/1.2/LedgerSMB/IS.pm	2007-07-17 00:28:55 UTC (rev 1410)
+++ branches/1.2/LedgerSMB/IS.pm	2007-07-17 01:36:00 UTC (rev 1411)
@@ -1057,33 +1057,44 @@
                             &cogs( $dbh, $form, $form->{"id_$i"}, 
                                    $form->{"qty_$i"}, $project_id );
                     } else {
-			#search for entries on ap invoices, that have been allocated already for that product.
-                	$query = qq|
-		        	    SELECT i.id, i.qty, i.allocated, a.transdate, i.sellprice
-				      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.allocated > 0 
-                                 ORDER BY transdate,id DESC
-                                     |;
-			$sth = $dbh->prepare($query);
-			$sth->execute( $form->{"id_$i"}) || $form->dberror($query);
+			$query = qq|
+			              SELECT i.id, i.qty, i.allocated, a.transdate
+					FROM invoice i
+				        JOIN parts p ON (p.id = i.parts_id)
+                                        JOIN ar 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"};
-			my $total_inventory = 0;
 			while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
-			    #deallocate the necessary entries
-			    $form->db_parse_numeric(sth=>$sth, hashref => $ref);
-			    my $qty = $ref->{allocated};
-			    if($totalqty + $qty > 0) { $qty = -$totalqty; }
-			    $allocated+=$qty;
-			    $form->update_balance( $dbh, "invoice", "allocated", qq|id = $ref->{id}|, $qty * -1 );
-			    $total_inventory += $qty*$ref->{sellprice};
-			    last if ( ( $totalqty += $qty ) >= 0 );
-			}
-			# increase the inventory account for that product
-                        $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id) VALUES (?, ?, ?, ?, ?)|;
+		    	    $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 );
+		        }
+			
+                        $query = qq|
+				INSERT INTO acc_trans 
+					(trans_id, chart_id, amount, 
+					transdate, project_id) 
+				VALUES (?, ?, ?, ?, ?)|;
 			$sth = $dbh->prepare($query);
-    			$sth->execute($form->{id}, $form->{"expense_accno_id_$i"}, $total_inventory, $form->{transdate}, $form->{"project_id_$i"}) || $form->dberror($query);
+    			$sth->execute(
+                                $form->{id}, 
+                                $form->{"expense_accno_id_$i"}, 
+                                $total_inventory, $form->{transdate}, 
+                                $form->{"project_id_$i"}
+                        ) || $form->dberror($query);
 
 			$total_inventory = (-1)*$total_inventory;
                         $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id) VALUES (?, ?, ?, ?, ?)|;
@@ -1541,8 +1552,9 @@
 		   SELECT i.id, i.trans_id, i.qty, i.allocated, i.sellprice,
 		          i.fxsellprice, p.inventory_accno_id, 
 		          p.expense_accno_id
-		     FROM invoice i, parts p
+		     FROM invoice i, parts p, ap a 
 		    WHERE i.parts_id = p.id
+		      AND i.trans_id = a.id
 		      AND i.parts_id = ?
 		      AND (i.qty + i.allocated) < 0
 		 ORDER BY trans_id|;

Modified: branches/1.2/LedgerSMB/Session/DB.pm
===================================================================
--- branches/1.2/LedgerSMB/Session/DB.pm	2007-07-17 00:28:55 UTC (rev 1410)
+++ branches/1.2/LedgerSMB/Session/DB.pm	2007-07-17 01:36:00 UTC (rev 1411)
@@ -84,7 +84,7 @@
         my ( $sessionLogin, $sessionTransaction ) = $checkQuery->fetchrow_array;
 
         my $login = $form->{login};
-        $login =~ s/[^a-zA-Z0-9._+@'-]//g;
+        $login =~ s/[^a-zA-Z0-9._+\@'-]//g;
 
         if (    ( $sessionLogin eq $login )
             and ( $sessionTransaction eq $transactionID ) )


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