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

SF.net SVN: ledger-smb: [1740] trunk/LedgerSMB



Revision: 1740
          http://ledger-smb.svn.sourceforge.net/ledger-smb/?rev=1740&view=rev
Author:   einhverfr
Date:     2007-10-10 23:11:07 -0700 (Wed, 10 Oct 2007)

Log Message:
-----------
Fixed bug 1765161, post button duplicates invoices.
Adding a minor fixes to COGS edge cases for reversed invoices.

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

Modified: trunk/LedgerSMB/IR.pm
===================================================================
--- trunk/LedgerSMB/IR.pm	2007-10-11 06:08:50 UTC (rev 1739)
+++ trunk/LedgerSMB/IR.pm	2007-10-11 06:11:07 UTC (rev 1740)
@@ -40,6 +40,9 @@
 sub post_invoice {
     my ( $self, $myconfig, $form ) = @_;
 
+    if ($form->{id}){
+        delete_invoice($self, $myconfig, $form);
+    }
     my $dbh = $form->{dbh};
     $form->{invnumber} = $form->update_defaults( $myconfig, "vinumber", $dbh )
       unless $form->{invnumber};
@@ -937,6 +940,7 @@
 sub delete_invoice {
     my ( $self, $myconfig, $form ) = @_;
 
+
     # connect to database
     my $dbh = $form->{dbh};
 
@@ -963,10 +967,6 @@
 
     &reverse_invoice( $dbh, $form );
 
-    # delete AP record
-    $query = qq|DELETE FROM ap WHERE id = ?|;
-    my $sth = $dbh->prepare($query);
-    $sth->execute( $form->{id} ) || $form->dberror($query);
 
     # delete spool files
     $query = qq|
@@ -1005,7 +1005,13 @@
               if $spoolfile;
         }
     }
-
+    $query = "DELETE FROM invoice WHERE trans_id = ?";
+    $sth = $dbh->prepare($query);
+    $sth->execute($form->{id});
+    # delete AP record
+    $query = qq|DELETE FROM ap WHERE id = ?|;
+    my $sth = $dbh->prepare($query);
+    $sth->execute( $form->{id} ) || $form->dberror($query);
     my $rc = $dbh->commit;
 
     $rc;

Modified: trunk/LedgerSMB/IS.pm
===================================================================
--- trunk/LedgerSMB/IS.pm	2007-10-11 06:08:50 UTC (rev 1739)
+++ trunk/LedgerSMB/IS.pm	2007-10-11 06:11:07 UTC (rev 1740)
@@ -1611,6 +1611,11 @@
     # If there are unallocated items for the current invoice at the end, we 
     # will throw an error until we have an understanding of other workflows 
     # that need to be supported.  -- CT
+    #
+    # Note:  Victor's original patch selected items to reverse based on 
+    # sell price.  This causes issues with restocking fees and the like so
+    # I am removing that restriction.  This should be discussed more fully 
+    # however.  -- CT
         $query = qq|
         	      SELECT i.id, i.qty, i.allocated, a.transdate,
 		             -1 * (i.allocated + i.qty) AS available,
@@ -1619,11 +1624,10 @@
 		        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($id, $sellprice) || $form->dberror($query);
+        $sth->execute($id) || $form->dberror($query);
         my $qty;
         while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
             $form->db_parse_numeric(sth=>$sth, hashref => $ref);
@@ -1662,7 +1666,7 @@
 		    FROM invoice i
 		    JOIN parts p ON (i.parts_id = p.id)
 		    JOIN ap a ON (i.trans_id = a.id)
-		   WHERE (i.allocated + i.qty) < 0
+		   WHERE allocated > 0
 		         AND i.parts_id = ?
 		ORDER BY a.transdate DESC, a.id DESC
             |;


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