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

Reply via email to