details:   https://code.openbravo.com/erp/devel/pi/rev/1b4d38a8f8b1
changeset: 21230:1b4d38a8f8b1
user:      Javier Etxarri <javier.echarri <at> openbravo.com>
date:      Wed Oct 02 12:43:36 2013 +0200
summary:   Fixes issue 24462: Warehouse field (goods shipment window)
does not take user“s default warehouse

details:   https://code.openbravo.com/erp/devel/pi/rev/3f15c3810c05
changeset: 21231:3f15c3810c05
user:      Javier Etxarri <javier.echarri <at> openbravo.com>
date:      Wed Oct 02 13:49:10 2013 +0200
summary:   Fixes issue 24139: Available quantity wrongly updated when voiding
a goods shipment of a reactivated order

diffstat:

 src-db/database/model/functions/M_INOUT_POST.xml    |  26 ++++++++++---
 src-db/database/model/triggers/C_ORDERLINE2_TRG.xml |  41 ++++++++++++--------
 src-db/database/sourcedata/AD_COLUMN.xml            |   2 +-
 3 files changed, 45 insertions(+), 24 deletions(-)

diffs (106 lines):

diff -r 16bf89788599 -r 3f15c3810c05 
src-db/database/model/functions/M_INOUT_POST.xml
--- a/src-db/database/model/functions/M_INOUT_POST.xml  Wed Oct 02 16:41:19 
2013 +0200
+++ b/src-db/database/model/functions/M_INOUT_POST.xml  Wed Oct 02 13:49:10 
2013 +0200
@@ -49,6 +49,7 @@
   v_Record_ID VARCHAR2(32);
   v_User VARCHAR2(32);
   v_PUser VARCHAR2(32);
+  v_DocStatus VARCHAR2(60);
   v_is_included NUMBER:=0;
   v_DocType_ID VARCHAR2(32);
   v_isreturndoctype CHAR(1);
@@ -602,12 +603,25 @@
               -- stocked product
               IF(Cur_InOutLine.M_Product_ID IS NOT NULL AND v_IsStocked=1) THEN
                 -- Update OrderLine (if C-, Qty is negative)
-                UPDATE C_ORDERLINE
-                  SET QtyReserved=QtyReserved - v_QtyPO - v_QtySO,
-                  QtyDelivered=QtyDelivered + v_QtySO,
-                  Updated=now(),
-                  UpdatedBy=v_User
-                WHERE C_OrderLine_ID=Cur_InOutLine.C_OrderLine_ID;
+                SELECT DOCSTATUS into v_DocStatus
+                FROM C_ORDER
+                WHERE C_ORDER_ID = (SELECT C_ORDER_ID
+                                    FROM C_ORDERLINE 
+                                    WHERE 
C_ORDERLINE_ID=Cur_InOutLine.C_OrderLine_ID);
+                IF (v_DocStatus = 'DR') THEN
+                  UPDATE C_ORDERLINE
+                    SET QtyDelivered=QtyDelivered + v_QtySO,
+                    Updated=now(),
+                    UpdatedBy=v_User
+                  WHERE C_OrderLine_ID=Cur_InOutLine.C_OrderLine_ID;
+                ELSE 
+                  UPDATE C_ORDERLINE
+                    SET QtyReserved=QtyReserved - v_QtyPO - v_QtySO,
+                    QtyDelivered=QtyDelivered + v_QtySO,
+                    Updated=now(),
+                    UpdatedBy=v_User
+                   WHERE C_OrderLine_ID=Cur_InOutLine.C_OrderLine_ID;
+                END IF;
                 -- Products not stocked
               ELSE
                 -- Update OrderLine (if C-, Qty is negative)
diff -r 16bf89788599 -r 3f15c3810c05 
src-db/database/model/triggers/C_ORDERLINE2_TRG.xml
--- a/src-db/database/model/triggers/C_ORDERLINE2_TRG.xml       Wed Oct 02 
16:41:19 2013 +0200
+++ b/src-db/database/model/triggers/C_ORDERLINE2_TRG.xml       Wed Oct 02 
13:49:10 2013 +0200
@@ -40,23 +40,30 @@
 
   IF(UPDATING) THEN
     IF(:NEW.M_PRODUCT_ID IS NOT NULL) THEN
-      IF((COALESCE(:old.QtyDelivered, 0) <> COALESCE(:NEW.QtyDelivered, 0))) 
THEN
-        -- Get ID
-        v_ID:=:new.C_Order_ID;
-        v_QtyReserved:=-(:new.qtydelivered - :old.qtydelivered) ;
-        IF :old.qtydelivered=0 AND :new.qtydelivered=:new.qtyordered THEN
-          v_QtyOrderReserved:=-:new.QuantityOrder;
-        ELSIF :new.M_Product_UOM_ID IS NOT NULL THEN
-          v_QtyOrderReserved:=C_Uom_Convert(v_QtyReserved, :new.C_UOM_ID, 
:new.m_product_uom_id, 'Y') ;
-        END IF;
-        SELECT COUNT(*)
-        INTO V_STOCKED
-        FROM M_PRODUCT
-        WHERE M_Product_ID=:NEW.M_PRODUCT_ID
-          AND IsStocked='Y'
-          AND ProductType='I';
-        IF V_STOCKED > 0 THEN
-          M_UPDATE_STORAGE_PENDING(:new.AD_Client_ID, :new.AD_Org_ID, 
:new.UpdatedBy, :new.M_Product_ID, :new.M_Warehouse_ID, 
:new.M_AttributeSetInstance_ID, :new.C_UOM_ID, :new.M_PRODUCT_UOM_ID, 
v_QtyReserved, v_QtyOrderReserved, 0, NULL) ;
+    v_ID:=:old.C_Order_ID;
+    SELECT DocStatus
+    INTO v_DocStatus
+    FROM c_Order
+    WHERE c_order_id = v_ID;
+      IF(v_DocStatus <> 'DR') THEN
+        IF((COALESCE(:old.QtyDelivered, 0) <> COALESCE(:NEW.QtyDelivered, 0))) 
THEN
+          -- Get ID
+          v_ID:=:new.C_Order_ID;
+          v_QtyReserved:=-(:new.qtydelivered - :old.qtydelivered) ;
+          IF :old.qtydelivered=0 AND :new.qtydelivered=:new.qtyordered THEN
+            v_QtyOrderReserved:=-:new.QuantityOrder;
+          ELSIF :new.M_Product_UOM_ID IS NOT NULL THEN
+            v_QtyOrderReserved:=C_Uom_Convert(v_QtyReserved, :new.C_UOM_ID, 
:new.m_product_uom_id, 'Y') ;
+          END IF;
+          SELECT COUNT(*)
+          INTO V_STOCKED
+          FROM M_PRODUCT
+          WHERE M_Product_ID=:NEW.M_PRODUCT_ID
+            AND IsStocked='Y'
+            AND ProductType='I';
+          IF V_STOCKED > 0 THEN
+            M_UPDATE_STORAGE_PENDING(:new.AD_Client_ID, :new.AD_Org_ID, 
:new.UpdatedBy, :new.M_Product_ID, :new.M_Warehouse_ID, 
:new.M_AttributeSetInstance_ID, :new.C_UOM_ID, :new.M_PRODUCT_UOM_ID, 
v_QtyReserved, v_QtyOrderReserved, 0, NULL) ;
+          END IF;
         END IF;
       END IF;
     END IF;
diff -r 16bf89788599 -r 3f15c3810c05 src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml  Wed Oct 02 16:41:19 2013 +0200
+++ b/src-db/database/sourcedata/AD_COLUMN.xml  Wed Oct 02 13:49:10 2013 +0200
@@ -61536,7 +61536,7 @@
 <!--3798-->  
<AD_REFERENCE_ID><![CDATA[95E2A8B50A254B2AAE6774B8C2F28120]]></AD_REFERENCE_ID>
 <!--3798-->  
<AD_REFERENCE_VALUE_ID><![CDATA[263693E51C7847BF90C897ADB830E2BB]]></AD_REFERENCE_VALUE_ID>
 <!--3798-->  <FIELDLENGTH><![CDATA[22]]></FIELDLENGTH>
-<!--3798-->  <DEFAULTVALUE><![CDATA[@SQL=select m_warehouse_id from 
ad_org_warehouse  where ad_org_id = @ad_org_id@ group by m_warehouse_id, 
priority having min(priority) = priority]]></DEFAULTVALUE>
+<!--3798-->  <DEFAULTVALUE><![CDATA[@SQL=select coalesce( 
warehouse,m_warehouse_id) as m_warehouse_id from ad_org_warehouse , (select 
min(m_warehouse_id) as warehouse from ad_org_warehouse where m_warehouse_id 
=@m_warehouse_id@ and  ad_org_id = @ad_org_id@) a where ad_org_id = @ad_org_id@ 
group by m_warehouse_id, priority ,warehouse having min(priority) = priority 
]]></DEFAULTVALUE>
 <!--3798-->  <ISKEY><![CDATA[N]]></ISKEY>
 <!--3798-->  <ISPARENT><![CDATA[N]]></ISPARENT>
 <!--3798-->  <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>

------------------------------------------------------------------------------
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=60134791&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to