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