details:   https://code.openbravo.com/erp/stable/2.50/rev/eb52bd659a25
changeset: 9821:eb52bd659a25
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Feb 20 12:27:03 2012 +0100
summary:   fixed issue 19583: Implement incremental Average Cost generation

diffstat:

 src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml |  82 ++++++++---
 src-db/database/sourcedata/AD_ELEMENT.xml                    |  13 +
 src-db/database/sourcedata/AD_MESSAGE.xml                    |  11 +
 src-db/database/sourcedata/AD_PROCESS_PARA.xml               |  20 ++
 4 files changed, 103 insertions(+), 23 deletions(-)

diffs (215 lines):

diff -r ac95bc3365b3 -r eb52bd659a25 
src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml
--- a/src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml      Mon Feb 
27 09:08:03 2012 +0000
+++ b/src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml      Mon Feb 
20 12:27:03 2012 +0100
@@ -16,7 +16,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2001-2009 Openbravo SLU
+* All portions are Copyright (C) 2001-2012 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -44,6 +44,8 @@
   v_PriceNew NUMBER;
   v_Client VARCHAR2(32);
   v_BaseCurrency VARCHAR2(32);
+  v_Incremental BOOLEAN := FALSE;
+  v_doNothing BOOLEAN := FALSE;
   -- Parameter
   TYPE RECORD IS REF CURSOR;
     Cur_Parameter RECORD;
@@ -85,6 +87,9 @@
       v_Record_ID:=Cur_Parameter.Record_ID;
       v_User:=Cur_Parameter.AD_User_ID;
       v_Client:=Cur_Parameter.AD_Client_ID;
+      IF (Cur_Parameter.ParameterName = 'IsIncremental') THEN
+        v_Incremental := COALESCE(Cur_Parameter.P_String, 'N')='Y';
+      END IF;
     END LOOP; --  Get Parameter
     SELECT AD_CLIENT.C_CURRENCY_ID 
       INTO v_BaseCurrency
@@ -94,16 +99,43 @@
     -- BEGIN CHECK IF COST USED TO POST A DOCUMENT
     -- 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.
-    SELECT MIN(DATEFROM)
-    INTO v_MinDateCosting
-    FROM M_COSTING
-    WHERE ISPERMANENT='N'
-      AND ISMANUAL='N'
-      AND COSTTYPE='AV'
-      AND ISPRODUCTION = 'N'
-      AND AD_CLIENT_ID = v_Client;
+
+    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
+      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
+        AND M_PRODUCT.COSTTYPE='AV'
+        AND M_INOUT.ISSOTRX='N'
+        AND M_INOUT.PROCESSED='Y'
+        AND M_INOUTLINE.MOVEMENTQTY>0
+        AND M_INOUT.DOCSTATUS <> 'DR' AND M_INOUT.DOCSTATUS <> 'RE' AND 
M_INOUT.DOCSTATUS <> 'VO'
+        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_MinDateCosting IS NOT NULL) THEN
+         v_MinDateCosting := TRUNC(v_MinDateCosting);
+       ELSE
+         -- There is no M_InOut with lines without costing, nothing to do
+         v_Message := '@NoNewCostingGenerationNeeded@';
+         v_doNothing := TRUE;
+       END IF;
+    ELSE
+      SELECT MIN(DATEFROM)
+      INTO v_MinDateCosting
+      FROM M_COSTING
+      WHERE ISPERMANENT='N'
+        AND ISMANUAL='N'
+        AND COSTTYPE='AV'
+        AND ISPRODUCTION = 'N'
+        AND AD_CLIENT_ID = v_Client;
+    END IF;
 
     v_CheckResultStr := '';
+   IF (NOT v_doNothing) THEN
     SELECT MAX(MOVEMENTDATE) INTO v_Date FROM M_MOVEMENT WHERE 
AD_CLIENT_ID=v_Client AND POSTED='Y';
     IF (v_MinDateCosting <= v_Date) THEN
       v_FirstIteration:=TRUE;
@@ -127,7 +159,7 @@
       END LOOP;
       v_CheckResultStr:=v_CheckResultStr || '.';
     END IF;
-
+   
     SELECT MAX(MOVEMENTDATE) INTO v_Date FROM M_INVENTORY WHERE 
AD_CLIENT_ID=v_Client AND POSTED='Y';
     IF (v_MinDateCosting <= v_Date) THEN
       v_FirstIteration:=TRUE;
@@ -230,24 +262,27 @@
       END LOOP;
       v_CheckResultStr:=v_CheckResultStr || '.';
     END IF;
-
+  
     IF (COALESCE(length(v_CheckResultStr),0) > 0) THEN
       RAISE_APPLICATION_ERROR(-20000, v_CheckResultStr);
     END IF;
     -- END CHECK IF COST USED TO POST A DOCUMENT
 
-    DELETE
-    FROM M_COSTING
-    WHERE ISPERMANENT='N'
-      AND ISMANUAL='N'
-      AND COSTTYPE='AV'
-      AND ISPRODUCTION = 'N'
-      AND AD_CLIENT_ID = v_Client;
-    v_rowcount:=SQL%ROWCOUNT;
-    v_Deleted:=v_Deleted + v_rowcount;
-    v_rowcount:=SQL%ROWCOUNT;
-    DBMS_OUTPUT.PUT_LINE('  deleted=' || v_rowcount) ;
-    --RECALCULATE THE DATETO OF MANUAL COSTS
+    IF (NOT v_Incremental) THEN
+      DELETE
+      FROM M_COSTING
+      WHERE ISPERMANENT='N'
+        AND ISMANUAL='N'
+        AND COSTTYPE='AV'
+        AND ISPRODUCTION = 'N'
+        AND AD_CLIENT_ID = v_Client;
+      v_rowcount:=SQL%ROWCOUNT;
+      v_Deleted:=v_Deleted + v_rowcount;
+      v_rowcount:=SQL%ROWCOUNT;
+      DBMS_OUTPUT.PUT_LINE('  deleted=' || v_rowcount) ;
+    END IF;
+
+    --RECALCULATE THE DATETO OF ALREADY CALCULATED COSTS
     FOR Cur_ManualCost IN
       (SELECT M_COSTING_ID, M_PRODUCT_ID, DATEFROM
        FROM M_COSTING
@@ -441,6 +476,7 @@
       v_DateOld:=Cur_InOutLine.MOVEMENTDATE;
       v_ProductOld:=Cur_InOutLine.M_PRODUCT_ID;
     END LOOP;
+   END IF;  
     --<<FINISH_PROCESS>>
     --  Update AD_PInstance
     DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || v_Message);
diff -r ac95bc3365b3 -r eb52bd659a25 src-db/database/sourcedata/AD_ELEMENT.xml
--- a/src-db/database/sourcedata/AD_ELEMENT.xml Mon Feb 27 09:08:03 2012 +0000
+++ b/src-db/database/sourcedata/AD_ELEMENT.xml Mon Feb 20 12:27:03 2012 +0100
@@ -22094,6 +22094,19 @@
 <!--2E25DF9EA05D415B851BDB301BA12D0A-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--2E25DF9EA05D415B851BDB301BA12D0A--></AD_ELEMENT>
 
+<!--2E2C9A366AD843778A3FE4A6360A16DC--><AD_ELEMENT>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  
<AD_ELEMENT_ID><![CDATA[2E2C9A366AD843778A3FE4A6360A16DC]]></AD_ELEMENT_ID>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  
<COLUMNNAME><![CDATA[IsIncremental]]></COLUMNNAME>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  <NAME><![CDATA[Incremental]]></NAME>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  
<PRINTNAME><![CDATA[Incremental]]></PRINTNAME>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  <DESCRIPTION><![CDATA[Calculate 
Average Costs incrementally]]></DESCRIPTION>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  <HELP><![CDATA[When this value is not 
checked, already calculated costs are removed and recalculated again. If 
checked, existent costs are preserved and new ones are added.]]></HELP>
+<!--2E2C9A366AD843778A3FE4A6360A16DC-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--2E2C9A366AD843778A3FE4A6360A16DC--></AD_ELEMENT>
+
 <!--2EB6010EAA174169880C588220EFE7B8--><AD_ELEMENT>
 <!--2EB6010EAA174169880C588220EFE7B8-->  
<AD_ELEMENT_ID><![CDATA[2EB6010EAA174169880C588220EFE7B8]]></AD_ELEMENT_ID>
 <!--2EB6010EAA174169880C588220EFE7B8-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r ac95bc3365b3 -r eb52bd659a25 src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Mon Feb 27 09:08:03 2012 +0000
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Mon Feb 20 12:27:03 2012 +0100
@@ -31094,6 +31094,17 @@
 <!--45FB8C27317D441CAFD96F2EE0005EA1-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--45FB8C27317D441CAFD96F2EE0005EA1--></AD_MESSAGE>
 
+<!--466602FE48454BF588E9458DFB75CB16--><AD_MESSAGE>
+<!--466602FE48454BF588E9458DFB75CB16-->  
<AD_MESSAGE_ID><![CDATA[466602FE48454BF588E9458DFB75CB16]]></AD_MESSAGE_ID>
+<!--466602FE48454BF588E9458DFB75CB16-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--466602FE48454BF588E9458DFB75CB16-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--466602FE48454BF588E9458DFB75CB16-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--466602FE48454BF588E9458DFB75CB16-->  
<VALUE><![CDATA[NoNewCostingGenerationNeeded]]></VALUE>
+<!--466602FE48454BF588E9458DFB75CB16-->  <MSGTEXT><![CDATA[There is no new 
incremental costing to generate since last calculated costs.]]></MSGTEXT>
+<!--466602FE48454BF588E9458DFB75CB16-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--466602FE48454BF588E9458DFB75CB16-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--466602FE48454BF588E9458DFB75CB16--></AD_MESSAGE>
+
 <!--467F2D9DFA8E4254B205D872DC75193C--><AD_MESSAGE>
 <!--467F2D9DFA8E4254B205D872DC75193C-->  
<AD_MESSAGE_ID><![CDATA[467F2D9DFA8E4254B205D872DC75193C]]></AD_MESSAGE_ID>
 <!--467F2D9DFA8E4254B205D872DC75193C-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r ac95bc3365b3 -r eb52bd659a25 
src-db/database/sourcedata/AD_PROCESS_PARA.xml
--- a/src-db/database/sourcedata/AD_PROCESS_PARA.xml    Mon Feb 27 09:08:03 
2012 +0000
+++ b/src-db/database/sourcedata/AD_PROCESS_PARA.xml    Mon Feb 20 12:27:03 
2012 +0100
@@ -5030,6 +5030,26 @@
 <!--0324F423A8F74D9A9B91F7FF0DBD25CF-->  
<AD_ELEMENT_ID><![CDATA[1143]]></AD_ELEMENT_ID>
 <!--0324F423A8F74D9A9B91F7FF0DBD25CF--></AD_PROCESS_PARA>
 
+<!--04E33DC0F96740A799476B208528157F--><AD_PROCESS_PARA>
+<!--04E33DC0F96740A799476B208528157F-->  
<AD_PROCESS_PARA_ID><![CDATA[04E33DC0F96740A799476B208528157F]]></AD_PROCESS_PARA_ID>
+<!--04E33DC0F96740A799476B208528157F-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--04E33DC0F96740A799476B208528157F-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--04E33DC0F96740A799476B208528157F-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--04E33DC0F96740A799476B208528157F-->  <NAME><![CDATA[Incremental]]></NAME>
+<!--04E33DC0F96740A799476B208528157F-->  <DESCRIPTION><![CDATA[Calculate 
Average Costs incrementally]]></DESCRIPTION>
+<!--04E33DC0F96740A799476B208528157F-->  <HELP><![CDATA[When this value is not 
checked, already calculated costs are removed and recalculated again. If 
checked, existent costs are preserved and new ones are added.]]></HELP>
+<!--04E33DC0F96740A799476B208528157F-->  
<AD_PROCESS_ID><![CDATA[800085]]></AD_PROCESS_ID>
+<!--04E33DC0F96740A799476B208528157F-->  <SEQNO><![CDATA[10]]></SEQNO>
+<!--04E33DC0F96740A799476B208528157F-->  
<AD_REFERENCE_ID><![CDATA[20]]></AD_REFERENCE_ID>
+<!--04E33DC0F96740A799476B208528157F-->  
<COLUMNNAME><![CDATA[IsIncremental]]></COLUMNNAME>
+<!--04E33DC0F96740A799476B208528157F-->  
<ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--04E33DC0F96740A799476B208528157F-->  
<FIELDLENGTH><![CDATA[10]]></FIELDLENGTH>
+<!--04E33DC0F96740A799476B208528157F-->  
<ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--04E33DC0F96740A799476B208528157F-->  <ISRANGE><![CDATA[N]]></ISRANGE>
+<!--04E33DC0F96740A799476B208528157F-->  
<DEFAULTVALUE><![CDATA[N]]></DEFAULTVALUE>
+<!--04E33DC0F96740A799476B208528157F-->  
<AD_ELEMENT_ID><![CDATA[2E2C9A366AD843778A3FE4A6360A16DC]]></AD_ELEMENT_ID>
+<!--04E33DC0F96740A799476B208528157F--></AD_PROCESS_PARA>
+
 <!--0A83F9207E2A49C99E275A6EE7340989--><AD_PROCESS_PARA>
 <!--0A83F9207E2A49C99E275A6EE7340989-->  
<AD_PROCESS_PARA_ID><![CDATA[0A83F9207E2A49C99E275A6EE7340989]]></AD_PROCESS_PARA_ID>
 <!--0A83F9207E2A49C99E275A6EE7340989-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to