details:   /erp/devel/int/rev/94a406d2d299
changeset: 6600:94a406d2d299
user:      Adrián Romero <adrianromero <at> openbravo.com>
date:      Wed Mar 03 17:36:36 2010 +0100
summary:   Fixes issue 0012505: m_generate_average_costs when there is no 
pricelist associated

details:   /erp/devel/int/rev/2c71d76b9c31
changeset: 6601:2c71d76b9c31
user:      David Baz Fayos <david.baz <at> openbravo.com>
date:      Wed Mar 03 18:32:05 2010 +0100
summary:   Related to issue 12538: Changed js to adapt changes to readOnlyLogic

diffstat:

 src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml |  92 ++++++++---
 src-db/database/sourcedata/AD_MESSAGE.xml                    |  33 ++++
 src-db/database/sourcedata/AD_PROCESS.xml                    |   4 +-
 src/org/openbravo/erpCommon/security/Login_F1.html           |   2 +-
 web/js/utils.js                                              |   6 +-
 5 files changed, 107 insertions(+), 30 deletions(-)

diffs (263 lines):

diff -r f7c2fc0000fc -r 2c71d76b9c31 
src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml
--- a/src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml      Wed Mar 
03 13:44:47 2010 +0100
+++ b/src-db/database/model/functions/M_GENERATE_AVERAGE_COSTS.xml      Wed Mar 
03 18:32:05 2010 +0100
@@ -22,8 +22,9 @@
 ************************************************************************/
   -- Logistice
   v_ResultStr VARCHAR2(2000):='';
-  v_Result NUMBER;
+  v_Result NUMBER:=1;
   v_Message VARCHAR2(2000):='';
+  v_MessageCount NUMBER:=0;
   v_Record_ID VARCHAR2(32);
   v_Date DATE;
   v_Qty NUMBER;
@@ -36,6 +37,8 @@
   v_count NUMBER;
   v_Deleted NUMBER;
   v_ProductOld VARCHAR2(32);
+  v_CostNew NUMBER;
+  v_PriceNew NUMBER;
   v_Client VARCHAR2(32);
   v_BaseCurrency VARCHAR2(32);
   -- Parameter
@@ -45,6 +48,7 @@
     Cur_ProdCost RECORD;
     Cur_PriceList RECORD;
     Cur_ManualCost RECORD;
+    Cur_OldCost RECORD;
     v_rowcount NUMBER;
   BEGIN
     v_Qty:=0;
@@ -111,11 +115,12 @@
     v_ProductOld:='0';
     v_DateOld:=TO_DATE('01-01-1900', 'DD-MM-YYYY') ;
     FOR Cur_InOutLine IN
-      (SELECT M_INOUTLINE.M_INOUTLINE_ID, M_INOUTLINE.MOVEMENTQTY, 
M_PRODUCT.M_PRODUCT_ID, M_INOUT.MOVEMENTDATE,
-        M_INOUTLINE.AD_CLIENT_ID, M_INOUTLINE.AD_ORG_ID, M_INOUT.C_BPARTNER_ID
-      FROM M_INOUT, M_INOUTLINE, M_PRODUCT
+      (SELECT M_INOUTLINE.M_INOUTLINE_ID, M_INOUTLINE.MOVEMENTQTY, 
M_PRODUCT.M_PRODUCT_ID, M_PRODUCT.NAME AS PRODUCT_NAME, M_INOUT.MOVEMENTDATE,
+        M_INOUTLINE.AD_CLIENT_ID, M_INOUTLINE.AD_ORG_ID, 
M_INOUT.C_BPARTNER_ID, C_BPARTNER.NAME AS BPARTNER_NAME
+      FROM M_INOUT, M_INOUTLINE, M_PRODUCT, C_BPARTNER
       WHERE M_INOUT.M_INOUT_ID=M_INOUTLINE.M_INOUT_ID
         AND M_INOUTLINE.M_PRODUCT_ID=M_PRODUCT.M_PRODUCT_ID
+        AND M_INOUT.C_BPARTNER_ID = C_BPARTNER.C_BPARTNER_ID
         AND M_PRODUCT.COSTTYPE='AV'
         AND M_INOUT.ISSOTRX='N'
         AND M_INOUT.PROCESSED='Y'
@@ -220,29 +225,64 @@
           EXIT;
         END LOOP;
       END IF;
-      v_ResultStr:='insert costing:   '||Cur_InOutLine.M_INOUTLINE_ID;
-      INSERT
-      INTO M_COSTING
-        (
-          M_COSTING_ID, CREATED, CREATEDBY, UPDATED,
-          UPDATEDBY, AD_CLIENT_ID, AD_ORG_ID, M_PRODUCT_ID,
-          DATETO, DATEFROM, ISMANUAL, M_INOUTLINE_ID,
-          C_INVOICELINE_ID, QTY, PRICE, CUMQTY,
-          COST, COSTTYPE, ISPERMANENT
-        )
-        VALUES
-        (
-          Ad_Sequence_Nextno('M_Costing'), now(), v_User, now(),
-          v_User, Cur_InOutLine.AD_CLIENT_ID, Cur_InOutLine.AD_ORG_ID, 
Cur_InOutLine.M_PRODUCT_ID,
-          COALESCE(v_Date, TO_DATE('31-12-9999', 'DD-MM-YYYY')), 
Cur_InOutLine.MOVEMENTDATE, 'N', Cur_InOutLine.M_INOUTLINE_ID,
-          NULL, Cur_InOutLine.MOVEMENTQTY, v_Price, COALESCE(v_Qty, 0) + 
Cur_InOutLine.MOVEMENTQTY + v_CumQty,
-          ROUND((CASE
+
+      v_CostNew := ROUND((CASE
             WHEN v_Qty+v_CumQty<0 THEN v_Price
             WHEN (v_Qty+Cur_InOutLine.MOVEMENTQTY+v_CumQty) = 0 THEN 0
-            ELSE (((v_Qty+v_CumQty)*COALESCE(v_Cost, v_Price)) 
+(Cur_InOutLine.MOVEMENTQTY *v_Price)) 
/(v_Qty+Cur_InOutLine.MOVEMENTQTY+v_CumQty) END), 
c_get_currency_precision(v_basecurrency, 'C')),
-          'AV', 'N'
-        )
-        ;
+            ELSE (((v_Qty+v_CumQty)*COALESCE(v_Cost, v_Price)) 
+(Cur_InOutLine.MOVEMENTQTY *v_Price)) 
/(v_Qty+Cur_InOutLine.MOVEMENTQTY+v_CumQty) END), 
c_get_currency_precision(v_basecurrency, 'C'));
+      v_PriceNew := v_Price;
+
+      IF (v_PriceNew IS NULL) THEN
+        v_Result := 2;
+        v_MessageCount := v_MessageCount + 1;
+        IF (v_MessageCount < 20) THEN      
+           v_Message := v_Message || '<br><br>@CannotCalcCosts@:  ''' || 
Cur_InOutLine.BPARTNER_NAME || ''', ''' || Cur_InOutLine.PRODUCT_NAME || '''';
+       ELSE 
+           IF (v_MessageCount = 20) THEN
+               v_Message := v_Message || '<br><br>@NoMoreMessages@';
+           END IF;
+       END IF;
+
+             FOR Cur_OldCost IN
+               (SELECT PRICE, COST
+               FROM M_COSTING
+               WHERE DATETO <= Cur_InOutLine.MOVEMENTDATE
+                 AND M_PRODUCT_ID = Cur_InOutLine.M_PRODUCT_ID
+                 AND COSTTYPE = 'AV'
+               ORDER BY DATETO DESC
+               )
+             LOOP
+               v_CostNew := COALESCE(v_CostNew, Cur_OldCost.COST);
+               v_PriceNew := COALESCE(v_PriceNew, Cur_OldCost.PRICE);
+               EXIT;
+             END LOOP;
+      END IF;
+
+      IF (v_PriceNew IS NULL) THEN   
+       IF (v_MessageCount < 20) THEN    
+             v_Message := v_Message || '. @CannotCalcPrevCost@';
+       END IF;
+      ELSE     
+             v_ResultStr:='insert costing:   '||Cur_InOutLine.M_INOUTLINE_ID;
+             INSERT
+             INTO M_COSTING
+               (
+                 M_COSTING_ID, CREATED, CREATEDBY, UPDATED,
+                 UPDATEDBY, AD_CLIENT_ID, AD_ORG_ID, M_PRODUCT_ID,
+                 DATETO, DATEFROM, ISMANUAL, M_INOUTLINE_ID,
+                 C_INVOICELINE_ID, QTY, PRICE, CUMQTY,
+                 COST, COSTTYPE, ISPERMANENT
+               )
+               VALUES
+               (
+                 Ad_Sequence_Nextno('M_Costing'), now(), v_User, now(),
+                 v_User, Cur_InOutLine.AD_CLIENT_ID, Cur_InOutLine.AD_ORG_ID, 
Cur_InOutLine.M_PRODUCT_ID,
+                 COALESCE(v_Date, TO_DATE('31-12-9999', 'DD-MM-YYYY')), 
Cur_InOutLine.MOVEMENTDATE, 'N', Cur_InOutLine.M_INOUTLINE_ID,
+                 NULL, Cur_InOutLine.MOVEMENTQTY, v_PriceNew, COALESCE(v_Qty, 
0) + Cur_InOutLine.MOVEMENTQTY + v_CumQty, v_CostNew,
+                 'AV', 'N'
+               );
+      END IF; 
+
       v_CumQty:=v_CumQty + Cur_InOutLine.MOVEMENTQTY;
       v_DateOld:=Cur_InOutLine.MOVEMENTDATE;
       v_ProductOld:=Cur_InOutLine.M_PRODUCT_ID;
@@ -250,7 +290,7 @@
     --<<FINISH_PROCESS>>
     --  Update AD_PInstance
     DBMS_OUTPUT.PUT_LINE('Updating PInstance - Finished ' || v_Message);
-    AD_UPDATE_PINSTANCE(p_PInstance_ID, v_User, 'N', 1, v_Message);
+    AD_UPDATE_PINSTANCE(p_PInstance_ID, v_User, 'N', v_Result, v_Message);
     RETURN;
   END; --BODY
 EXCEPTION
diff -r f7c2fc0000fc -r 2c71d76b9c31 src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Wed Mar 03 13:44:47 2010 +0100
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Wed Mar 03 18:32:05 2010 +0100
@@ -29956,6 +29956,17 @@
 <!--1DAB5DCDF04B4FEE97200DE4D2028FAB-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--1DAB5DCDF04B4FEE97200DE4D2028FAB--></AD_MESSAGE>
 
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF--><AD_MESSAGE>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  
<AD_MESSAGE_ID><![CDATA[1E4DFEDC675F4BD8AFA6A8D707D77FFF]]></AD_MESSAGE_ID>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  
<VALUE><![CDATA[NoMoreMessages]]></VALUE>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  <MSGTEXT><![CDATA[More messages are 
not displayed...]]></MSGTEXT>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--1E4DFEDC675F4BD8AFA6A8D707D77FFF--></AD_MESSAGE>
+
 <!--1FBA26D3CE3F4C52B5B1EB2AA7E1C8D6--><AD_MESSAGE>
 <!--1FBA26D3CE3F4C52B5B1EB2AA7E1C8D6-->  
<AD_MESSAGE_ID><![CDATA[1FBA26D3CE3F4C52B5B1EB2AA7E1C8D6]]></AD_MESSAGE_ID>
 <!--1FBA26D3CE3F4C52B5B1EB2AA7E1C8D6-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -30046,6 +30057,17 @@
 <!--234443E5BAB34ABC892AFDE05F9C229D-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--234443E5BAB34ABC892AFDE05F9C229D--></AD_MESSAGE>
 
+<!--239B36AC9A144464861B1E76C83A07E9--><AD_MESSAGE>
+<!--239B36AC9A144464861B1E76C83A07E9-->  
<AD_MESSAGE_ID><![CDATA[239B36AC9A144464861B1E76C83A07E9]]></AD_MESSAGE_ID>
+<!--239B36AC9A144464861B1E76C83A07E9-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--239B36AC9A144464861B1E76C83A07E9-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--239B36AC9A144464861B1E76C83A07E9-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--239B36AC9A144464861B1E76C83A07E9-->  
<VALUE><![CDATA[CannotCalcPrevCost]]></VALUE>
+<!--239B36AC9A144464861B1E76C83A07E9-->  <MSGTEXT><![CDATA[Cannot insert 
previous cost.]]></MSGTEXT>
+<!--239B36AC9A144464861B1E76C83A07E9-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--239B36AC9A144464861B1E76C83A07E9-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--239B36AC9A144464861B1E76C83A07E9--></AD_MESSAGE>
+
 <!--23B122FD033649F7854EC76DCD746E72--><AD_MESSAGE>
 <!--23B122FD033649F7854EC76DCD746E72-->  
<AD_MESSAGE_ID><![CDATA[23B122FD033649F7854EC76DCD746E72]]></AD_MESSAGE_ID>
 <!--23B122FD033649F7854EC76DCD746E72-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -31361,6 +31383,17 @@
 <!--8437C016631646ED9643B0B53E4F2AF8-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--8437C016631646ED9643B0B53E4F2AF8--></AD_MESSAGE>
 
+<!--86AB14C5F80B4241A3E75E7D45CE62F6--><AD_MESSAGE>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  
<AD_MESSAGE_ID><![CDATA[86AB14C5F80B4241A3E75E7D45CE62F6]]></AD_MESSAGE_ID>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  
<VALUE><![CDATA[CannotCalcCosts]]></VALUE>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  <MSGTEXT><![CDATA[Cannot calculate 
costs for Business Partner and Product]]></MSGTEXT>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  <MSGTYPE><![CDATA[W]]></MSGTYPE>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--86AB14C5F80B4241A3E75E7D45CE62F6--></AD_MESSAGE>
+
 <!--873B575159384E1CAB008991116622BF--><AD_MESSAGE>
 <!--873B575159384E1CAB008991116622BF-->  
<AD_MESSAGE_ID><![CDATA[873B575159384E1CAB008991116622BF]]></AD_MESSAGE_ID>
 <!--873B575159384E1CAB008991116622BF-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r f7c2fc0000fc -r 2c71d76b9c31 src-db/database/sourcedata/AD_PROCESS.xml
--- a/src-db/database/sourcedata/AD_PROCESS.xml Wed Mar 03 13:44:47 2010 +0100
+++ b/src-db/database/sourcedata/AD_PROCESS.xml Wed Mar 03 18:32:05 2010 +0100
@@ -3359,7 +3359,8 @@
 <!--800085-->  <VALUE><![CDATA[GenerateAverageCosts]]></VALUE>
 <!--800085-->  <NAME><![CDATA[Generate Average Costs]]></NAME>
 <!--800085-->  <DESCRIPTION><![CDATA[Generates raw materials average 
costs.]]></DESCRIPTION>
-<!--800085-->  <HELP><![CDATA[Using the previous raw material orders, 
calculates its medium cost.]]></HELP>
+<!--800085-->  <HELP><![CDATA[Using the previous raw material receipts, 
calculates its medium cost.<br>
+The product price of each receipt is calculated based on the on the product 
price in the purchase invoice. If the invoice does not exist the price of the 
purchase order is used, if the order neither exists the price list of the 
provider is used. If none of these criterias exist, a warning is generated and 
the previous cost is used.]]></HELP>
 <!--800085-->  <ACCESSLEVEL><![CDATA[7]]></ACCESSLEVEL>
 <!--800085-->  <ISUSERSTARTABLE><![CDATA[Y]]></ISUSERSTARTABLE>
 <!--800085-->  
<PROCEDURENAME><![CDATA[M_Generate_Average_Costs]]></PROCEDURENAME>
@@ -3367,6 +3368,7 @@
 <!--800085-->  <ISDIRECTPRINT><![CDATA[N]]></ISDIRECTPRINT>
 <!--800085-->  <ISBACKGROUND><![CDATA[N]]></ISBACKGROUND>
 <!--800085-->  <ISJASPER><![CDATA[N]]></ISJASPER>
+<!--800085-->  <ISEXTERNALSERVICE><![CDATA[N]]></ISEXTERNALSERVICE>
 <!--800085-->  <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--800085-->  <UIPATTERN><![CDATA[S]]></UIPATTERN>
 <!--800085--></AD_PROCESS>
diff -r f7c2fc0000fc -r 2c71d76b9c31 
src/org/openbravo/erpCommon/security/Login_F1.html
--- a/src/org/openbravo/erpCommon/security/Login_F1.html        Wed Mar 03 
13:44:47 2010 +0100
+++ b/src/org/openbravo/erpCommon/security/Login_F1.html        Wed Mar 03 
18:32:05 2010 +0100
@@ -90,7 +90,7 @@
       clearForm();
     } catch (e) {}
     setWindowElementFocus('firstElement');
-    if ((!revisionControl('6553')) || (isOpsInstance() != 
isOpsInstanceCached())) {
+    if ((!revisionControl('6601')) || (isOpsInstance() != 
isOpsInstanceCached())) {
       alert(cacheMsg);
     }
 
diff -r f7c2fc0000fc -r 2c71d76b9c31 web/js/utils.js
--- a/web/js/utils.js   Wed Mar 03 13:44:47 2010 +0100
+++ b/web/js/utils.js   Wed Mar 03 18:32:05 2010 +0100
@@ -74,7 +74,7 @@
 * Return a number that would be checked at the Login screen to know if the 
file is cached with the correct version
 */
 function getCurrentRevision() {
-  var number = '6553';
+  var number = '6601';
   return number;
 }
 
@@ -3439,8 +3439,9 @@
     obj.className = obj.className.replace("ReadOnly","");
     obj.className = obj.className.replace("readonly","");
     obj.readOnly = false;
+    setObjAttribute(obj, 'readOnly', "false");
     if (obj.setReadOnly) {
-       obj.setReadOnly(false);
+      obj.setReadOnly(false);
     }
     if (obj.getAttribute('type') == "checkbox") {
       var onclickTextB = getObjAttribute(obj, 'onclick');
@@ -3454,6 +3455,7 @@
     }
 
     if (obj.className.indexOf("Combo")!=-1) {
+      obj.className = className.replace("NoUpdatable","");
       enableAttributeWithFunction(obj, 'obj', 'onChange');
       if (obj.getAttribute("onChange")) {
         onchange_combo = getObjAttribute(obj, 'onChange');

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to