details:   https://code.openbravo.com/erp/devel/pi/rev/5eedba0298f0
changeset: 21341:5eedba0298f0
user:      Naiara Garcia <naiara.garcia <at> openbravo.com>
date:      Thu Oct 17 18:28:13 2013 +0200
summary:   Fixed issue 24264: The c_elementvalue_trg is performing and update 
when it is
 not needed. Can cause performance issues in some cases

details:   https://code.openbravo.com/erp/devel/pi/rev/c4d4ca9a75dc
changeset: 21342:c4d4ca9a75dc
user:      Naiara Garcia <naiara.garcia <at> openbravo.com>
date:      Mon Oct 21 17:37:49 2013 +0200
summary:   Fixed issue 24493: When creating a price list based on costs, new 
engine costs
 not found if the product has a cost type defined

diffstat:

 src-db/database/model/functions/M_PRICELIST_CREATE.xml |  16 +++++++++++-----
 src-db/database/model/triggers/C_ELEMENTVALUE_TRG.xml  |   4 +++-
 2 files changed, 14 insertions(+), 6 deletions(-)

diffs (58 lines):

diff -r eaae54aaa147 -r c4d4ca9a75dc 
src-db/database/model/functions/M_PRICELIST_CREATE.xml
--- a/src-db/database/model/functions/M_PRICELIST_CREATE.xml    Tue Oct 22 
07:12:28 2013 +0200
+++ b/src-db/database/model/functions/M_PRICELIST_CREATE.xml    Mon Oct 21 
17:37:49 2013 +0200
@@ -51,6 +51,7 @@
     v_temp VARCHAR2(32);
     v_Costbased M_PriceList.Costbased%TYPE;
     v_validfromdate M_PriceList_Version.ValidFrom%TYPE;
+    v_isCostMigrated NUMBER;
     --
     -- Get PL Parameter
     Cur_DiscountLine RECORD;
@@ -85,6 +86,11 @@
         DBMS_OUTPUT.PUT_LINE('*** Unknown Parameter=' || 
Cur_Parameter.ParameterName) ;
       END IF;
     END LOOP; -- Get Parameter
+    -- Checks if instance is migrated to new cost engine
+    SELECT count(1) INTO v_isCostMigrated
+    FROM DUAL
+    WHERE EXISTS (SELECT 1 FROM ad_preference
+                  WHERE attribute = 'Cost_Eng_Ins_Migrated');
     SELECT M_PriceList_Version_Base_ID , Costbased, validfrom
     INTO v_PriceList_Version_Base_ID, v_Costbased, v_validfromdate
     FROM M_PriceList p,
@@ -366,15 +372,15 @@
             SELECT  get_uuid(), v_PriceList_Version_ID,
             mp.M_Product_ID, v_Client_ID, v_Org_ID, 'Y',
             now(), v_UpdatedBy, now(), v_UpdatedBy, 
-            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), mp.costtype, v_Org_ID, mp.ad_client_id, null, ac.c_currency_id, 
v_Currency_ID),0), 
-            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), mp.costtype, v_Org_ID, mp.ad_client_id, null, ac.c_currency_id, 
v_Currency_ID),0), 
-            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), mp.costtype, v_Org_ID, mp.ad_client_id, null, ac.c_currency_id, 
v_Currency_ID),0), 
-            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), mp.costtype, v_Org_ID, mp.ad_client_id, null, ac.c_currency_id, 
v_Currency_ID),0)
+            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), CASE v_isCostMigrated WHEN 0 THEN mp.costtype ELSE null END, v_Org_ID, 
mp.ad_client_id, null, ac.c_currency_id, v_Currency_ID),0), 
+            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), CASE v_isCostMigrated WHEN 0 THEN mp.costtype ELSE null END, v_Org_ID, 
mp.ad_client_id, null, ac.c_currency_id, v_Currency_ID),0), 
+            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), CASE v_isCostMigrated WHEN 0 THEN mp.costtype ELSE null END, v_Org_ID, 
mp.ad_client_id, null, ac.c_currency_id, v_Currency_ID),0), 
+            COALESCE(M_GET_COST (mp.M_Product_ID, add_hms(v_validfromdate, 23, 
59, 59), CASE v_isCostMigrated WHEN 0 THEN mp.costtype ELSE null END, v_Org_ID, 
mp.ad_client_id, null, ac.c_currency_id, v_Currency_ID),0)
             from m_product mp, ad_client ac
             where mp.ad_client_id=ac.ad_client_id
             AND EXISTS
             (SELECT 1 FROM C_TEMP_Selection s WHERE 
mp.M_Product_ID=s.C_TEMP_Selection_ID)
-            AND mp.IsActive='Y';    
+            AND mp.IsActive='Y'; 
          ELSE
           -- Copy and Convert from other PriceList_Version
           v_ResultStr:=v_ResultStr || ',Copy_PL';
diff -r eaae54aaa147 -r c4d4ca9a75dc 
src-db/database/model/triggers/C_ELEMENTVALUE_TRG.xml
--- a/src-db/database/model/triggers/C_ELEMENTVALUE_TRG.xml     Tue Oct 22 
07:12:28 2013 +0200
+++ b/src-db/database/model/triggers/C_ELEMENTVALUE_TRG.xml     Mon Oct 21 
17:37:49 2013 +0200
@@ -186,7 +186,9 @@
                    END IF;
      END IF;         
 
-     UPDATE Fact_Acct SET AcctValue=:new.VALUE,AcctDescription=:new.NAME WHERE 
Account_ID=:new.C_ElementValue_ID;
+     IF (COALESCE(:old.value, '.') <> COALESCE(:new.value, '.')) OR 
(COALESCE(:old.name, '.') <> COALESCE(:new.name, '.')) THEN
+        UPDATE Fact_Acct SET AcctValue=:new.VALUE,AcctDescription=:new.NAME 
WHERE Account_ID=:new.C_ElementValue_ID;
+     END IF;
   END IF;
   -- Updating
   IF DELETING THEN

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to