details: https://code.openbravo.com/erp/devel/pi/rev/387d054faef6 changeset: 19768:387d054faef6 user: Javier Etxarri <javier.echarri <at> openbravo.com> date: Fri Mar 01 13:57:28 2013 +0100 summary: Fixes issue 22508: "Sales Order" field in Goods Shipment header should be emptied when deleting referenced order line
diffstat: src-db/database/model/triggers/M_INOUTLINE_TRG.xml | 6 ++++++ src-db/database/model/triggers/M_INOUT_TRG_PROV.xml | 19 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diffs (47 lines): diff -r d63d93f6e256 -r 387d054faef6 src-db/database/model/triggers/M_INOUTLINE_TRG.xml --- a/src-db/database/model/triggers/M_INOUTLINE_TRG.xml Thu Feb 21 13:50:02 2013 +0100 +++ b/src-db/database/model/triggers/M_INOUTLINE_TRG.xml Fri Mar 01 13:57:28 2013 +0100 @@ -42,6 +42,12 @@ IF AD_isTriggerEnabled()='N' THEN RETURN; END IF; + --We need to check if we need to delete or not the column c_order_id in table m_inout + --we are going to delete only if all the related lines with the order has been deleted. For this reason we need to launch + --the m_inout trigger to check. Related to issue 22508 + IF (DELETING) THEN + Update m_inout set description=description where m_inout_id = :old.m_inout_id; + END IF; IF (INSERTING) THEN IF (:NEW.M_PRODUCT_ID IS NOT NULL) THEN diff -r d63d93f6e256 -r 387d054faef6 src-db/database/model/triggers/M_INOUT_TRG_PROV.xml --- a/src-db/database/model/triggers/M_INOUT_TRG_PROV.xml Thu Feb 21 13:50:02 2013 +0100 +++ b/src-db/database/model/triggers/M_INOUT_TRG_PROV.xml Fri Mar 01 13:57:28 2013 +0100 @@ -56,10 +56,25 @@ RAISE_APPLICATION_ERROR(-20000, '@20501@') ; ELSIF (V_COUNT <> 0) THEN RAISE_APPLICATION_ERROR(-20000, '@20632@') ; - ELSE - UPDATE M_MATCHINV SET DATETRX = :NEW.DATEACCT WHERE M_INOUTLINE_ID IN (SELECT MI.M_INOUTLINE_ID FROM M_INOUTLINE MI WHERE MI.M_INOUT_ID = :old.M_INOUT_ID); + ELSE + UPDATE M_MATCHINV SET DATETRX = :NEW.DATEACCT WHERE M_INOUTLINE_ID IN (SELECT MI.M_INOUTLINE_ID FROM M_INOUTLINE MI WHERE MI.M_INOUT_ID = :old.M_INOUT_ID); END IF; END IF; + + + IF (:old.c_order_id is not null) THEN + SELECT count(*) + INTO v_count + FROM c_orderline col + WHERE col.c_order_id = :old.c_order_id + AND col.c_orderline_id IN ( + SELECT c_orderline_id + FROM m_inoutline + WHERE m_inout_id = :old.m_inout_id); + IF (v_count = 0) THEN + :new.c_order_id = null; + END IF; + END IF; END IF; END M_INOUT_TRG_PROV ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits