details:   /erp/devel/pi/rev/719c3bbbf9f5
changeset: 8021:719c3bbbf9f5
user:      Sivaraman Rajagopal <sivaraman.rajagopal <at> openbravo.com>
date:      Thu Aug 05 13:44:10 2010 +0530
summary:   Fixes issue 14070: You can not reactivate a sales order if it has a 
discount

Root cause:
In C_ORDER_POST1, we delete C_ORDERLINE but there is a foreign key constrain in 
M_INOUTLINE.C_ORDERLINE_ID. Thus, it throws exception in order to prevent 
C_ORDERLINE.

Fix:
When a sales order with discount is reactivated, null value is updated to it's 
corresponding m_inoutline.c_orderline_id field before deleting C_ORDERLINE. 
Thus, foreign key violation is avoided. Also m_inoutline trigger is changed in 
order to allow to modify c_orderline_id column for voided documents even after 
processed.

Impacts:
It has been verified that there is no impacts except resolving the issue

diffstat:

 src-db/database/model/functions/C_ORDER_POST1.xml                |  6 ++++++
 src-db/database/model/triggers/M_IOLINE_CHK_RESTRICTIONS_TRG.xml |  5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diffs (45 lines):

diff -r f90ffc74fb0a -r 719c3bbbf9f5 
src-db/database/model/functions/C_ORDER_POST1.xml
--- a/src-db/database/model/functions/C_ORDER_POST1.xml Thu Aug 05 11:42:54 
2010 +0530
+++ b/src-db/database/model/functions/C_ORDER_POST1.xml Thu Aug 05 13:44:10 
2010 +0530
@@ -276,6 +276,12 @@
             Updated=now(),
             UpdatedBy=v_User
           WHERE C_Order_ID=v_Record_ID;
+          UPDATE M_INOUTLINE SET C_ORDERLINE_ID = NULL
+          WHERE (SELECT DISTINCT A.DOCSTATUS FROM M_INOUT A, M_INOUTLINE B, 
C_ORDERLINE C
+          WHERE A.M_INOUT_ID = B.M_INOUT_ID AND B.C_ORDERLINE_ID = 
C.C_ORDERLINE_ID
+          AND C.C_ORDER_DISCOUNT_ID IS NOT NULL AND C.C_ORDER_ID = 
v_Record_ID) = 'VO'
+          AND C_ORDERLINE_ID IN (SELECT C_ORDERLINE_ID FROM C_ORDERLINE WHERE 
C_ORDER_DISCOUNT_ID IS NOT NULL 
+          AND C_ORDER_ID = v_Record_ID);
          DELETE
           FROM C_ORDERLINE
           WHERE C_ORDER_DISCOUNT_ID IS NOT NULL
diff -r f90ffc74fb0a -r 719c3bbbf9f5 
src-db/database/model/triggers/M_IOLINE_CHK_RESTRICTIONS_TRG.xml
--- a/src-db/database/model/triggers/M_IOLINE_CHK_RESTRICTIONS_TRG.xml  Thu Aug 
05 11:42:54 2010 +0530
+++ b/src-db/database/model/triggers/M_IOLINE_CHK_RESTRICTIONS_TRG.xml  Thu Aug 
05 13:44:10 2010 +0530
@@ -24,6 +24,7 @@
 * Contributor(s):  ______________________________________.
 ************************************************************************/
   v_Processed VARCHAR(60) ;
+  v_DocStatus VARCHAR(60) ;
   v_M_INOUT_ID VARCHAR2(32) ;
     
 BEGIN
@@ -37,7 +38,7 @@
   ELSE
     v_M_INOUT_ID:=:old.M_INOUT_ID;
   END IF;
-  SELECT PROCESSED INTO v_Processed FROM M_INOUT WHERE M_INOUT_ID=v_M_INOUT_ID;
+  SELECT PROCESSED, DOCSTATUS INTO v_Processed, v_DocStatus FROM M_INOUT WHERE 
M_INOUT_ID=v_M_INOUT_ID;
   IF UPDATING THEN
     IF(v_Processed='Y' AND ((COALESCE(:old.LINE, 0) <> COALESCE(:new.LINE, 0))
    OR (COALESCE(:old.M_PRODUCT_ID, '0') <> COALESCE(:new.M_PRODUCT_ID, '0'))
@@ -45,7 +46,7 @@
    OR(COALESCE(:old.M_ATTRIBUTESETINSTANCE_ID, '0') <> 
COALESCE(:new.M_ATTRIBUTESETINSTANCE_ID, '0'))
    OR(COALESCE(:old.MOVEMENTQTY, 0) <> COALESCE(:new.MOVEMENTQTY, 0))
    OR(COALESCE(:old.M_PRODUCT_UOM_ID, '0') <> COALESCE(:new.M_PRODUCT_UOM_ID, 
'0'))
-   OR(COALESCE(:old.C_ORDERLINE_ID, '0') <> COALESCE(:new.C_ORDERLINE_ID, '0'))
+   OR(COALESCE(:old.C_ORDERLINE_ID, '0') <> COALESCE(:new.C_ORDERLINE_ID, '0') 
AND v_DocStatus != 'VO')
    OR(COALESCE(:old.M_LOCATOR_ID, '0') <> COALESCE(:new.M_LOCATOR_ID, '0'))
    OR(COALESCE(:old.AD_ORG_ID, '0') <> COALESCE(:new.AD_ORG_ID, '0'))
    OR(COALESCE(:old.AD_CLIENT_ID, '0') <> COALESCE(:new.AD_CLIENT_ID, '0'))))

------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to