From ad274f6ad20949c288131ef885d8e17b179c8e2f Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sat, 3 Aug 2013 10:04:38 -0500 Subject: [PATCH] IDEMPIERE-1140 Copy record uses wrong quantity when used in shipment line / receipt line - implemented: - calculate running qty on same shipment/receipt - when user choose same order line twice the callout subtract the running qty of orderline - callout set qty to 1 when using a serialized ASI --- .../src/org/compiere/model/CalloutInOut.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/org.adempiere.base.callout/src/org/compiere/model/CalloutInOut.java b/org.adempiere.base.callout/src/org/compiere/model/CalloutInOut.java index d75fa50d5d..8f70134894 100644 --- a/org.adempiere.base.callout/src/org/compiere/model/CalloutInOut.java +++ b/org.adempiere.base.callout/src/org/compiere/model/CalloutInOut.java @@ -425,6 +425,13 @@ public class CalloutInOut extends CalloutEngine // mTab.setValue("C_UOM_ID", new Integer(ol.getC_UOM_ID())); BigDecimal MovementQty = ol.getQtyOrdered().subtract(ol.getQtyDelivered()); + BigDecimal runningqty = DB.getSQLValueBDEx(null, "SELECT SUM(MovementQty) FROM M_InOutLine WHERE M_InOut_ID=? AND M_InOutLine_ID!=? AND C_OrderLine_ID=?", + Env.getContextAsInt(ctx, WindowNo, "M_InOut_ID"), + Env.getContextAsInt(ctx, WindowNo, "M_InOutLine_ID"), + ol.get_ID()); + if (runningqty != null) { + MovementQty = MovementQty.subtract(runningqty); // IDEMPIERE-1140 + } mTab.setValue("MovementQty", MovementQty); BigDecimal QtyEntered = MovementQty; if (ol.getQtyEntered().compareTo(ol.getQtyOrdered()) != 0) @@ -694,6 +701,12 @@ public class CalloutInOut extends CalloutEngine mTab.setValue("M_Locator_ID", new Integer (selectedM_Locator_ID)); } } + MAttributeSetInstance asi = MAttributeSetInstance.get(ctx, M_ASI_ID.intValue(), 0); + if (asi.getSerNo() != null) { + // serialized ASI - force qty yo 1 - IDEMPIERE-1140 + mTab.setValue("MovementQty", Env.ONE); + mTab.setValue("QtyEntered", Env.ONE); + } return ""; } // asi