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
