details:   https://code.openbravo.com/erp/stable/2.50/rev/c3fbfefd94e8
changeset: 9860:c3fbfefd94e8
user:      Javier Etxarri <javier.echarri <at> openbravo.com>
date:      Wed Mar 28 13:34:04 2012 +0200
summary:   Fixes issue 19861, Fixes issue 19860:
Generate Average Cost process should take into account goods receipts of same 
day checked as "permanent" and
Generate Average cost process is not raising unposting error if all costing 
lines are set as "permanent".
To solve the first problem I have added the permanets quantitites of the day 
first and to solve the second problem, now I take the min date from M_INOUT

diffstat:

 src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml |  39 +++++++++--
 1 files changed, 32 insertions(+), 7 deletions(-)

diffs (83 lines):

diff -r fc37e35a0783 -r c3fbfefd94e8 
src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml
--- a/src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml      Wed Mar 
28 12:45:48 2012 +0200
+++ b/src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml      Wed Mar 
28 13:34:04 2012 +0200
@@ -33,9 +33,11 @@
   v_Price NUMBER;
   v_DateOld DATE;
   v_MinDateCosting DATE;
+  v_MinFirstInOut DATE;
   v_FirstIteration BOOLEAN;
   v_CheckResultStr VARCHAR2(2000):='';
   v_CumQty NUMBER;
+  v_PermanentQty NUMBER;
   v_Processed VARCHAR2(60) ;
   v_count NUMBER;
   v_Deleted NUMBER;
@@ -100,11 +102,8 @@
     -- If a document has been posted, and in the entry the costing has been 
used to calculate any amount,
     -- process is not allowed to be launched.
 
-    IF (v_Incremental) THEN
-      -- In case of incremental computation, calculate since first 
m_inOut.MovementDate from the ones
-      -- not included yet in any costing
-      SELECT MIN(M_INOUT.MOVEMENTDATE)
-      INTO v_MinDateCosting
+    SELECT MIN(M_INOUT.MOVEMENTDATE)
+      INTO v_MinFirstInOut
       FROM M_INOUT, M_INOUTLINE, M_PRODUCT
       WHERE M_INOUT.M_INOUT_ID=M_INOUTLINE.M_INOUT_ID
         AND M_INOUTLINE.M_PRODUCT_ID=M_PRODUCT.M_PRODUCT_ID
@@ -116,6 +115,12 @@
         AND M_INOUT.AD_CLIENT_ID = v_Client
         AND NOT EXISTS
            (SELECT 1 FROM M_COSTING WHERE 
M_INOUTLINE_ID=M_INOUTLINE.M_INOUTLINE_ID);
+
+
+    IF (v_Incremental) THEN
+      -- In case of incremental computation, calculate since first 
m_inOut.MovementDate from the ones
+      -- not included yet in any costing
+       v_MinDateCosting := v_MinFirstInOut;
        IF (v_MinDateCosting IS NOT NULL) THEN
          v_MinDateCosting := TRUNC(v_MinDateCosting);
        ELSE
@@ -132,6 +137,10 @@
         AND COSTTYPE='AV'
         AND ISPRODUCTION = 'N'
         AND AD_CLIENT_ID = v_Client;
+
+      IF (v_MinDateCosting IS NULL OR v_MinFirstInOut < v_MinDateCosting) THEN
+        v_MinDateCosting := v_MinFirstInOut;
+      END IF;
     END IF;
 
     v_CheckResultStr := '';
@@ -320,11 +329,27 @@
       )
     LOOP
       v_ResultStr:='new albaran:   '||Cur_InOutLine.M_INOUTLINE_ID;
+
+      SELECT SUM(QTY)
+      INTO v_PermanentQty
+      FROM M_COSTING
+      WHERE ISPERMANENT='Y'
+        AND COSTTYPE='AV'
+        AND ISPRODUCTION = 'N'
+        AND M_INOUTLINE_ID IS NOT NULL
+        AND AD_CLIENT_ID = v_Client
+        AND M_PRODUCT_ID=Cur_InOutLine.M_PRODUCT_ID
+        AND DATEFROM = Cur_InOutLine.MOVEMENTDATE;
+
+      IF (v_PermanentQty IS NULL) THEN
+        v_PermanentQty:=0;
+      END IF;
+      
       IF(Cur_InOutLine.M_PRODUCT_ID<>v_ProductOld) THEN
         v_Date:=NULL;
-        v_CumQty:=0;
+        v_CumQty:=v_PermanentQty;
       ELSIF (Cur_InOutLine.MOVEMENTDATE<>v_DateOld) THEN
-        v_CumQty:=0;
+        v_CumQty:=v_PermanentQty;
       END IF;
       SELECT COUNT(*)
       INTO v_Count

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to