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
