Added checking for location selected in the info bpartner window whether the location is a shipping location, a billing location or both.
This commit is contained in:
parent
e573983f5f
commit
d4286e392f
|
@ -33,7 +33,7 @@ import org.compiere.util.Msg;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Order Callouts.
|
* Order Callouts.
|
||||||
*
|
*
|
||||||
* @author Jorg Janke
|
* @author Jorg Janke
|
||||||
* @version $Id: CalloutOrder.java,v 1.5 2006/10/08 06:57:33 comdivision Exp $
|
* @version $Id: CalloutOrder.java,v 1.5 2006/10/08 06:57:33 comdivision Exp $
|
||||||
*/
|
*/
|
||||||
|
@ -97,7 +97,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
rs = null;
|
rs = null;
|
||||||
pstmt = null;
|
pstmt = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
pstmt = DB.prepareStatement(sql, null);
|
pstmt = DB.prepareStatement(sql, null);
|
||||||
pstmt.setInt(1, C_DocType_ID.intValue());
|
pstmt.setInt(1, C_DocType_ID.intValue());
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
|
@ -113,7 +113,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
// No Drop Ship other than Standard
|
// No Drop Ship other than Standard
|
||||||
if (!DocSubTypeSO.equals(MOrder.DocSubTypeSO_Standard))
|
if (!DocSubTypeSO.equals(MOrder.DocSubTypeSO_Standard))
|
||||||
mTab.setValue ("IsDropShip", "N");
|
mTab.setValue ("IsDropShip", "N");
|
||||||
|
|
||||||
// Delivery Rule
|
// Delivery Rule
|
||||||
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS))
|
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS))
|
||||||
mTab.setValue ("DeliveryRule", X_C_Order.DELIVERYRULE_Force);
|
mTab.setValue ("DeliveryRule", X_C_Order.DELIVERYRULE_Force);
|
||||||
|
@ -121,7 +121,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
mTab.setValue ("DeliveryRule", X_C_Order.DELIVERYRULE_AfterReceipt);
|
mTab.setValue ("DeliveryRule", X_C_Order.DELIVERYRULE_AfterReceipt);
|
||||||
else
|
else
|
||||||
mTab.setValue ("DeliveryRule", X_C_Order.DELIVERYRULE_Availability);
|
mTab.setValue ("DeliveryRule", X_C_Order.DELIVERYRULE_Availability);
|
||||||
|
|
||||||
// Invoice Rule
|
// Invoice Rule
|
||||||
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS)
|
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS)
|
||||||
|| DocSubTypeSO.equals(MOrder.DocSubTypeSO_Prepay)
|
|| DocSubTypeSO.equals(MOrder.DocSubTypeSO_Prepay)
|
||||||
|
@ -129,7 +129,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
mTab.setValue ("InvoiceRule", X_C_Order.INVOICERULE_Immediate);
|
mTab.setValue ("InvoiceRule", X_C_Order.INVOICERULE_Immediate);
|
||||||
else
|
else
|
||||||
mTab.setValue ("InvoiceRule", X_C_Order.INVOICERULE_AfterDelivery);
|
mTab.setValue ("InvoiceRule", X_C_Order.INVOICERULE_AfterDelivery);
|
||||||
|
|
||||||
// Payment Rule - POS Order
|
// Payment Rule - POS Order
|
||||||
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS))
|
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS))
|
||||||
mTab.setValue("PaymentRule", X_C_Order.PAYMENTRULE_Cash);
|
mTab.setValue("PaymentRule", X_C_Order.PAYMENTRULE_Cash);
|
||||||
|
@ -156,9 +156,9 @@ public class CalloutOrder extends CalloutEngine
|
||||||
if ("Y".equals(rs.getString(9)))
|
if ("Y".equals(rs.getString(9)))
|
||||||
{
|
{
|
||||||
String dateColumn = rs.getString(10);
|
String dateColumn = rs.getString(10);
|
||||||
mTab.setValue("DocumentNo",
|
mTab.setValue("DocumentNo",
|
||||||
"<"
|
"<"
|
||||||
+ MSequence.getPreliminaryNoByYear(mTab, rs.getInt(7), dateColumn, null)
|
+ MSequence.getPreliminaryNoByYear(mTab, rs.getInt(7), dateColumn, null)
|
||||||
+ ">");
|
+ ">");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -168,15 +168,15 @@ public class CalloutOrder extends CalloutEngine
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DB.close(rs, pstmt);
|
DB.close(rs, pstmt);
|
||||||
rs = null;
|
rs = null;
|
||||||
pstmt = null;
|
pstmt = null;
|
||||||
|
|
||||||
// When BPartner is changed, the Rules are not set if
|
// When BPartner is changed, the Rules are not set if
|
||||||
// it is a POS or Credit Order (i.e. defaults from Standard BPartner)
|
// it is a POS or Credit Order (i.e. defaults from Standard BPartner)
|
||||||
// This re-reads the Rules and applies them.
|
// This re-reads the Rules and applies them.
|
||||||
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS)
|
if (DocSubTypeSO.equals(MOrder.DocSubTypeSO_POS)
|
||||||
|| DocSubTypeSO.equals(MOrder.DocSubTypeSO_Prepay)) // not for POS/PrePay
|
|| DocSubTypeSO.equals(MOrder.DocSubTypeSO_Prepay)) // not for POS/PrePay
|
||||||
;
|
;
|
||||||
else
|
else
|
||||||
|
@ -225,7 +225,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
if (s != null && s.length() != 0)
|
if (s != null && s.length() != 0)
|
||||||
mTab.setValue("DeliveryViaRule", s);
|
mTab.setValue("DeliveryViaRule", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// re-read customer rules
|
// re-read customer rules
|
||||||
}
|
}
|
||||||
catch (SQLException e)
|
catch (SQLException e)
|
||||||
|
@ -270,11 +270,11 @@ public class CalloutOrder extends CalloutEngine
|
||||||
+ " p.InvoiceRule,p.DeliveryRule,p.FreightCostRule,DeliveryViaRule,"
|
+ " p.InvoiceRule,p.DeliveryRule,p.FreightCostRule,DeliveryViaRule,"
|
||||||
+ " p.SO_CreditLimit, p.SO_CreditLimit-p.SO_CreditUsed AS CreditAvailable,"
|
+ " p.SO_CreditLimit, p.SO_CreditLimit-p.SO_CreditUsed AS CreditAvailable,"
|
||||||
+ " lship.C_BPartner_Location_ID,c.AD_User_ID,"
|
+ " lship.C_BPartner_Location_ID,c.AD_User_ID,"
|
||||||
+ " COALESCE(p.PO_PriceList_ID,g.PO_PriceList_ID) AS PO_PriceList_ID, p.PaymentRulePO,p.PO_PaymentTerm_ID,"
|
+ " COALESCE(p.PO_PriceList_ID,g.PO_PriceList_ID) AS PO_PriceList_ID, p.PaymentRulePO,p.PO_PaymentTerm_ID,"
|
||||||
+ " lbill.C_BPartner_Location_ID AS Bill_Location_ID, p.SOCreditStatus, "
|
+ " lbill.C_BPartner_Location_ID AS Bill_Location_ID, p.SOCreditStatus, "
|
||||||
+ " p.SalesRep_ID "
|
+ " p.SalesRep_ID "
|
||||||
+ "FROM C_BPartner p"
|
+ "FROM C_BPartner p"
|
||||||
+ " INNER JOIN C_BP_Group g ON (p.C_BP_Group_ID=g.C_BP_Group_ID)"
|
+ " INNER JOIN C_BP_Group g ON (p.C_BP_Group_ID=g.C_BP_Group_ID)"
|
||||||
+ " LEFT OUTER JOIN C_BPartner_Location lbill ON (p.C_BPartner_ID=lbill.C_BPartner_ID AND lbill.IsBillTo='Y' AND lbill.IsActive='Y')"
|
+ " LEFT OUTER JOIN C_BPartner_Location lbill ON (p.C_BPartner_ID=lbill.C_BPartner_ID AND lbill.IsBillTo='Y' AND lbill.IsActive='Y')"
|
||||||
+ " LEFT OUTER JOIN C_BPartner_Location lship ON (p.C_BPartner_ID=lship.C_BPartner_ID AND lship.IsShipTo='Y' AND lship.IsActive='Y')"
|
+ " LEFT OUTER JOIN C_BPartner_Location lship ON (p.C_BPartner_ID=lship.C_BPartner_ID AND lship.IsShipTo='Y' AND lship.IsActive='Y')"
|
||||||
+ " LEFT OUTER JOIN AD_User c ON (p.C_BPartner_ID=c.C_BPartner_ID) "
|
+ " LEFT OUTER JOIN AD_User c ON (p.C_BPartner_ID=c.C_BPartner_ID) "
|
||||||
|
@ -296,7 +296,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
{
|
{
|
||||||
mTab.setValue("SalesRep_ID", salesRep);
|
mTab.setValue("SalesRep_ID", salesRep);
|
||||||
}
|
}
|
||||||
|
|
||||||
// PriceList (indirect: IsTaxIncluded & Currency)
|
// PriceList (indirect: IsTaxIncluded & Currency)
|
||||||
Integer ii = new Integer(rs.getInt(IsSOTrx ? "M_PriceList_ID" : "PO_PriceList_ID"));
|
Integer ii = new Integer(rs.getInt(IsSOTrx ? "M_PriceList_ID" : "PO_PriceList_ID"));
|
||||||
if (!rs.wasNull())
|
if (!rs.wasNull())
|
||||||
|
@ -310,21 +310,35 @@ public class CalloutOrder extends CalloutEngine
|
||||||
|
|
||||||
// Bill-To
|
// Bill-To
|
||||||
mTab.setValue("Bill_BPartner_ID", C_BPartner_ID);
|
mTab.setValue("Bill_BPartner_ID", C_BPartner_ID);
|
||||||
int bill_Location_ID = rs.getInt("Bill_Location_ID");
|
|
||||||
|
int shipTo_ID = 0;
|
||||||
|
int bill_Location_ID =0;
|
||||||
|
// overwritten by InfoBP selection - works only if InfoWindow
|
||||||
|
// was used otherwise creates error (uses last value, may belong to different BP)
|
||||||
|
if (C_BPartner_ID.toString().equals(Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_ID")))
|
||||||
|
{
|
||||||
|
String loc = Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_Location_ID");
|
||||||
|
int locationId = 0;
|
||||||
|
if (loc.length() > 0)
|
||||||
|
locationId = Integer.parseInt(loc);
|
||||||
|
if (locationId > 0) {
|
||||||
|
MBPartnerLocation bpLocation = new MBPartnerLocation(ctx, locationId, null);
|
||||||
|
if (bpLocation.isBillTo())
|
||||||
|
bill_Location_ID = locationId;
|
||||||
|
if (bpLocation.isShipTo())
|
||||||
|
shipTo_ID = locationId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bill_Location_ID == 0)
|
||||||
|
bill_Location_ID = rs.getInt("Bill_Location_ID");
|
||||||
if (bill_Location_ID == 0)
|
if (bill_Location_ID == 0)
|
||||||
mTab.setValue("Bill_Location_ID", null);
|
mTab.setValue("Bill_Location_ID", null);
|
||||||
else
|
else
|
||||||
mTab.setValue("Bill_Location_ID", new Integer(bill_Location_ID));
|
mTab.setValue("Bill_Location_ID", new Integer(bill_Location_ID));
|
||||||
// Ship-To Location
|
// Ship-To Location
|
||||||
int shipTo_ID = rs.getInt("C_BPartner_Location_ID");
|
if (shipTo_ID == 0)
|
||||||
// overwritten by InfoBP selection - works only if InfoWindow
|
shipTo_ID = rs.getInt("C_BPartner_Location_ID");
|
||||||
// was used otherwise creates error (uses last value, may belong to differnt BP)
|
|
||||||
if (C_BPartner_ID.toString().equals(Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_ID")))
|
|
||||||
{
|
|
||||||
String loc = Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_Location_ID");
|
|
||||||
if (loc.length() > 0)
|
|
||||||
shipTo_ID = Integer.parseInt(loc);
|
|
||||||
}
|
|
||||||
if (shipTo_ID == 0)
|
if (shipTo_ID == 0)
|
||||||
mTab.setValue("C_BPartner_Location_ID", null);
|
mTab.setValue("C_BPartner_Location_ID", null);
|
||||||
else
|
else
|
||||||
|
@ -346,11 +360,10 @@ public class CalloutOrder extends CalloutEngine
|
||||||
mTab.setValue("Bill_User_ID", new Integer(contID));
|
mTab.setValue("Bill_User_ID", new Integer(contID));
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreditAvailable
|
// CreditAvailable
|
||||||
if (IsSOTrx)
|
if (IsSOTrx)
|
||||||
{
|
{
|
||||||
double CreditLimit = rs.getDouble("SO_CreditLimit");
|
double CreditLimit = rs.getDouble("SO_CreditLimit");
|
||||||
String SOCreditStatus = rs.getString("SOCreditStatus");
|
|
||||||
if (CreditLimit != 0)
|
if (CreditLimit != 0)
|
||||||
{
|
{
|
||||||
double CreditAvailable = rs.getDouble("CreditAvailable");
|
double CreditAvailable = rs.getDouble("CreditAvailable");
|
||||||
|
@ -368,8 +381,8 @@ public class CalloutOrder extends CalloutEngine
|
||||||
// should not be reset to null if we entered already value! VHARCQ, accepted YS makes sense that way
|
// should not be reset to null if we entered already value! VHARCQ, accepted YS makes sense that way
|
||||||
// TODO: should get checked and removed if no longer needed!
|
// TODO: should get checked and removed if no longer needed!
|
||||||
/*else
|
/*else
|
||||||
mTab.setValue("POReference", null);*/
|
mTab.setValue("POReference", null);*/
|
||||||
|
|
||||||
// SO Description
|
// SO Description
|
||||||
s = rs.getString("SO_Description");
|
s = rs.getString("SO_Description");
|
||||||
if (s != null && s.trim().length() != 0)
|
if (s != null && s.trim().length() != 0)
|
||||||
|
@ -505,9 +518,15 @@ public class CalloutOrder extends CalloutEngine
|
||||||
// was used otherwise creates error (uses last value, may belong to differnt BP)
|
// was used otherwise creates error (uses last value, may belong to differnt BP)
|
||||||
if (bill_BPartner_ID.toString().equals(Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_ID")))
|
if (bill_BPartner_ID.toString().equals(Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_ID")))
|
||||||
{
|
{
|
||||||
|
int locationId = 0;
|
||||||
String loc = Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_Location_ID");
|
String loc = Env.getContext(ctx, WindowNo, Env.TAB_INFO, "C_BPartner_Location_ID");
|
||||||
if (loc.length() > 0)
|
if (loc.length() > 0)
|
||||||
bill_Location_ID = Integer.parseInt(loc);
|
locationId = Integer.parseInt(loc);
|
||||||
|
if (locationId > 0) {
|
||||||
|
MBPartnerLocation bpLocation = new MBPartnerLocation(ctx, locationId, null);
|
||||||
|
if (bpLocation.isBillTo())
|
||||||
|
bill_Location_ID = locationId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (bill_Location_ID == 0)
|
if (bill_Location_ID == 0)
|
||||||
mTab.setValue("Bill_Location_ID", null);
|
mTab.setValue("Bill_Location_ID", null);
|
||||||
|
@ -527,7 +546,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
else
|
else
|
||||||
mTab.setValue("Bill_User_ID", new Integer(contID));
|
mTab.setValue("Bill_User_ID", new Integer(contID));
|
||||||
|
|
||||||
// CreditAvailable
|
// CreditAvailable
|
||||||
if (IsSOTrx)
|
if (IsSOTrx)
|
||||||
{
|
{
|
||||||
double CreditLimit = rs.getDouble("SO_CreditLimit");
|
double CreditLimit = rs.getDouble("SO_CreditLimit");
|
||||||
|
@ -646,7 +665,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
else if (mTab.getAD_Table_ID() == I_C_Invoice.Table_ID)
|
else if (mTab.getAD_Table_ID() == I_C_Invoice.Table_ID)
|
||||||
date = Env.getContextAsDate(ctx, WindowNo, "DateInvoiced");
|
date = Env.getContextAsDate(ctx, WindowNo, "DateInvoiced");
|
||||||
pstmt.setTimestamp(2, date);
|
pstmt.setTimestamp(2, date);
|
||||||
|
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
{
|
{
|
||||||
|
@ -676,7 +695,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
return "";
|
return "";
|
||||||
} // priceList
|
} // priceList
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Order Line - Product.
|
* Order Line - Product.
|
||||||
* - reset C_Charge_ID / M_AttributeSetInstance_ID
|
* - reset C_Charge_ID / M_AttributeSetInstance_ID
|
||||||
|
@ -705,7 +724,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
mTab.setValue("M_AttributeSetInstance_ID", Env.getContextAsInt(ctx, WindowNo, Env.TAB_INFO, "M_AttributeSetInstance_ID"));
|
mTab.setValue("M_AttributeSetInstance_ID", Env.getContextAsInt(ctx, WindowNo, Env.TAB_INFO, "M_AttributeSetInstance_ID"));
|
||||||
else
|
else
|
||||||
mTab.setValue("M_AttributeSetInstance_ID", null);
|
mTab.setValue("M_AttributeSetInstance_ID", null);
|
||||||
|
|
||||||
/***** Price Calculation see also qty ****/
|
/***** Price Calculation see also qty ****/
|
||||||
int C_BPartner_ID = Env.getContextAsInt(ctx, WindowNo, "C_BPartner_ID");
|
int C_BPartner_ID = Env.getContextAsInt(ctx, WindowNo, "C_BPartner_ID");
|
||||||
BigDecimal Qty = (BigDecimal)mTab.getValue("QtyOrdered");
|
BigDecimal Qty = (BigDecimal)mTab.getValue("QtyOrdered");
|
||||||
|
@ -725,14 +744,14 @@ public class CalloutOrder extends CalloutEngine
|
||||||
+ " AND plv.ValidFrom <= ? "
|
+ " AND plv.ValidFrom <= ? "
|
||||||
+ "ORDER BY plv.ValidFrom DESC";
|
+ "ORDER BY plv.ValidFrom DESC";
|
||||||
// Use newest price list - may not be future
|
// Use newest price list - may not be future
|
||||||
|
|
||||||
M_PriceList_Version_ID = DB.getSQLValueEx(null, sql, M_PriceList_ID, orderDate);
|
M_PriceList_Version_ID = DB.getSQLValueEx(null, sql, M_PriceList_ID, orderDate);
|
||||||
if ( M_PriceList_Version_ID > 0 )
|
if ( M_PriceList_Version_ID > 0 )
|
||||||
Env.setContext(ctx, WindowNo, "M_PriceList_Version_ID", M_PriceList_Version_ID );
|
Env.setContext(ctx, WindowNo, "M_PriceList_Version_ID", M_PriceList_Version_ID );
|
||||||
}
|
}
|
||||||
pp.setM_PriceList_Version_ID(M_PriceList_Version_ID);
|
pp.setM_PriceList_Version_ID(M_PriceList_Version_ID);
|
||||||
pp.setPriceDate(orderDate);
|
pp.setPriceDate(orderDate);
|
||||||
//
|
//
|
||||||
mTab.setValue("PriceList", pp.getPriceList());
|
mTab.setValue("PriceList", pp.getPriceList());
|
||||||
mTab.setValue("PriceLimit", pp.getPriceLimit());
|
mTab.setValue("PriceLimit", pp.getPriceLimit());
|
||||||
mTab.setValue("PriceActual", pp.getPriceStd());
|
mTab.setValue("PriceActual", pp.getPriceStd());
|
||||||
|
@ -743,7 +762,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
mTab.setValue("QtyOrdered", mTab.getValue("QtyEntered"));
|
mTab.setValue("QtyOrdered", mTab.getValue("QtyEntered"));
|
||||||
Env.setContext(ctx, WindowNo, "EnforcePriceLimit", pp.isEnforcePriceLimit() ? "Y" : "N");
|
Env.setContext(ctx, WindowNo, "EnforcePriceLimit", pp.isEnforcePriceLimit() ? "Y" : "N");
|
||||||
Env.setContext(ctx, WindowNo, "DiscountSchema", pp.isDiscountSchema() ? "Y" : "N");
|
Env.setContext(ctx, WindowNo, "DiscountSchema", pp.isDiscountSchema() ? "Y" : "N");
|
||||||
|
|
||||||
// Check/Update Warehouse Setting
|
// Check/Update Warehouse Setting
|
||||||
// int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
// int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
||||||
// Integer wh = (Integer)mTab.getValue("M_Warehouse_ID");
|
// Integer wh = (Integer)mTab.getValue("M_Warehouse_ID");
|
||||||
|
@ -753,7 +772,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
// ADialog.warn(,WindowNo, "WarehouseChanged");
|
// ADialog.warn(,WindowNo, "WarehouseChanged");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
if (Env.isSOTrx(ctx, WindowNo))
|
if (Env.isSOTrx(ctx, WindowNo))
|
||||||
{
|
{
|
||||||
MProduct product = MProduct.get (ctx, M_Product_ID.intValue());
|
MProduct product = MProduct.get (ctx, M_Product_ID.intValue());
|
||||||
|
@ -763,7 +782,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
||||||
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
|
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
|
||||||
BigDecimal available = MStorage.getQtyAvailable
|
BigDecimal available = MStorage.getQtyAvailable
|
||||||
(M_Warehouse_ID, M_Product_ID.intValue(), M_AttributeSetInstance_ID, null);
|
(M_Warehouse_ID, 0, M_Product_ID.intValue(), M_AttributeSetInstance_ID, null);
|
||||||
if (available == null)
|
if (available == null)
|
||||||
available = Env.ZERO;
|
available = Env.ZERO;
|
||||||
if (available.signum() == 0)
|
if (available.signum() == 0)
|
||||||
|
@ -775,7 +794,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
Integer C_OrderLine_ID = (Integer)mTab.getValue("C_OrderLine_ID");
|
Integer C_OrderLine_ID = (Integer)mTab.getValue("C_OrderLine_ID");
|
||||||
if (C_OrderLine_ID == null)
|
if (C_OrderLine_ID == null)
|
||||||
C_OrderLine_ID = new Integer(0);
|
C_OrderLine_ID = new Integer(0);
|
||||||
BigDecimal notReserved = MOrderLine.getNotReserved(ctx,
|
BigDecimal notReserved = MOrderLine.getNotReserved(ctx,
|
||||||
M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID,
|
M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID,
|
||||||
C_OrderLine_ID.intValue());
|
C_OrderLine_ID.intValue());
|
||||||
if (notReserved == null)
|
if (notReserved == null)
|
||||||
|
@ -783,9 +802,9 @@ public class CalloutOrder extends CalloutEngine
|
||||||
BigDecimal total = available.subtract(notReserved);
|
BigDecimal total = available.subtract(notReserved);
|
||||||
if (total.compareTo(QtyOrdered) < 0)
|
if (total.compareTo(QtyOrdered) < 0)
|
||||||
{
|
{
|
||||||
String info = Msg.parseTranslation(ctx, "@QtyAvailable@=" + available
|
String info = Msg.parseTranslation(ctx, "@QtyAvailable@=" + available
|
||||||
+ " - @QtyNotReserved@=" + notReserved + " = " + total);
|
+ " - @QtyNotReserved@=" + notReserved + " = " + total);
|
||||||
mTab.fireDataStatusEEvent ("InsufficientQtyAvailable",
|
mTab.fireDataStatusEEvent ("InsufficientQtyAvailable",
|
||||||
info, false);
|
info, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -822,7 +841,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
mTab.setValue("M_AttributeSetInstance_ID", null);
|
mTab.setValue("M_AttributeSetInstance_ID", null);
|
||||||
mTab.setValue("S_ResourceAssignment_ID", null);
|
mTab.setValue("S_ResourceAssignment_ID", null);
|
||||||
mTab.setValue("C_UOM_ID", new Integer(100)); // EA
|
mTab.setValue("C_UOM_ID", new Integer(100)); // EA
|
||||||
|
|
||||||
Env.setContext(ctx, WindowNo, "DiscountSchema", "N");
|
Env.setContext(ctx, WindowNo, "DiscountSchema", "N");
|
||||||
String sql = "SELECT ChargeAmt FROM C_Charge WHERE C_Charge_ID=?";
|
String sql = "SELECT ChargeAmt FROM C_Charge WHERE C_Charge_ID=?";
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
|
@ -875,7 +894,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
if (value == null)
|
if (value == null)
|
||||||
return "";
|
return "";
|
||||||
if (steps) log.warning("init");
|
if (steps) log.warning("init");
|
||||||
|
|
||||||
// Check Product
|
// Check Product
|
||||||
int M_Product_ID = 0;
|
int M_Product_ID = 0;
|
||||||
if (column.equals("M_Product_ID"))
|
if (column.equals("M_Product_ID"))
|
||||||
|
@ -987,14 +1006,14 @@ public class CalloutOrder extends CalloutEngine
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Product Qty changed - recalc price
|
// Product Qty changed - recalc price
|
||||||
else if ((mField.getColumnName().equals("QtyOrdered")
|
else if ((mField.getColumnName().equals("QtyOrdered")
|
||||||
|| mField.getColumnName().equals("QtyEntered")
|
|| mField.getColumnName().equals("QtyEntered")
|
||||||
|| mField.getColumnName().equals("M_Product_ID"))
|
|| mField.getColumnName().equals("M_Product_ID"))
|
||||||
&& !"N".equals(Env.getContext(ctx, WindowNo, "DiscountSchema")))
|
&& !"N".equals(Env.getContext(ctx, WindowNo, "DiscountSchema")))
|
||||||
{
|
{
|
||||||
int C_BPartner_ID = Env.getContextAsInt(ctx, WindowNo, "C_BPartner_ID");
|
int C_BPartner_ID = Env.getContextAsInt(ctx, WindowNo, "C_BPartner_ID");
|
||||||
if (mField.getColumnName().equals("QtyEntered"))
|
if (mField.getColumnName().equals("QtyEntered"))
|
||||||
QtyOrdered = MUOMConversion.convertProductTo (ctx, M_Product_ID,
|
QtyOrdered = MUOMConversion.convertProductTo (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, QtyEntered);
|
C_UOM_To_ID, QtyEntered);
|
||||||
if (QtyOrdered == null)
|
if (QtyOrdered == null)
|
||||||
QtyOrdered = QtyEntered;
|
QtyOrdered = QtyEntered;
|
||||||
|
@ -1006,12 +1025,12 @@ public class CalloutOrder extends CalloutEngine
|
||||||
Timestamp date = (Timestamp)mTab.getValue("DateOrdered");
|
Timestamp date = (Timestamp)mTab.getValue("DateOrdered");
|
||||||
pp.setPriceDate(date);
|
pp.setPriceDate(date);
|
||||||
//
|
//
|
||||||
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, pp.getPriceStd());
|
C_UOM_To_ID, pp.getPriceStd());
|
||||||
if (PriceEntered == null)
|
if (PriceEntered == null)
|
||||||
PriceEntered = pp.getPriceStd();
|
PriceEntered = pp.getPriceStd();
|
||||||
//
|
//
|
||||||
log.fine("QtyChanged -> PriceActual=" + pp.getPriceStd()
|
log.fine("QtyChanged -> PriceActual=" + pp.getPriceStd()
|
||||||
+ ", PriceEntered=" + PriceEntered + ", Discount=" + pp.getDiscount());
|
+ ", PriceEntered=" + PriceEntered + ", Discount=" + pp.getDiscount());
|
||||||
mTab.setValue("PriceActual", pp.getPriceStd());
|
mTab.setValue("PriceActual", pp.getPriceStd());
|
||||||
mTab.setValue("Discount", pp.getDiscount());
|
mTab.setValue("Discount", pp.getDiscount());
|
||||||
|
@ -1021,28 +1040,28 @@ public class CalloutOrder extends CalloutEngine
|
||||||
else if (mField.getColumnName().equals("PriceActual"))
|
else if (mField.getColumnName().equals("PriceActual"))
|
||||||
{
|
{
|
||||||
PriceActual = (BigDecimal)value;
|
PriceActual = (BigDecimal)value;
|
||||||
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, PriceActual);
|
C_UOM_To_ID, PriceActual);
|
||||||
if (PriceEntered == null)
|
if (PriceEntered == null)
|
||||||
PriceEntered = PriceActual;
|
PriceEntered = PriceActual;
|
||||||
//
|
//
|
||||||
log.fine("PriceActual=" + PriceActual
|
log.fine("PriceActual=" + PriceActual
|
||||||
+ " -> PriceEntered=" + PriceEntered);
|
+ " -> PriceEntered=" + PriceEntered);
|
||||||
mTab.setValue("PriceEntered", PriceEntered);
|
mTab.setValue("PriceEntered", PriceEntered);
|
||||||
}
|
}
|
||||||
else if (mField.getColumnName().equals("PriceEntered"))
|
else if (mField.getColumnName().equals("PriceEntered"))
|
||||||
{
|
{
|
||||||
PriceEntered = (BigDecimal)value;
|
PriceEntered = (BigDecimal)value;
|
||||||
PriceActual = MUOMConversion.convertProductTo (ctx, M_Product_ID,
|
PriceActual = MUOMConversion.convertProductTo (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, PriceEntered);
|
C_UOM_To_ID, PriceEntered);
|
||||||
if (PriceActual == null)
|
if (PriceActual == null)
|
||||||
PriceActual = PriceEntered;
|
PriceActual = PriceEntered;
|
||||||
//
|
//
|
||||||
log.fine("PriceEntered=" + PriceEntered
|
log.fine("PriceEntered=" + PriceEntered
|
||||||
+ " -> PriceActual=" + PriceActual);
|
+ " -> PriceActual=" + PriceActual);
|
||||||
mTab.setValue("PriceActual", PriceActual);
|
mTab.setValue("PriceActual", PriceActual);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Discount entered - Calculate Actual/Entered
|
// Discount entered - Calculate Actual/Entered
|
||||||
if (mField.getColumnName().equals("Discount"))
|
if (mField.getColumnName().equals("Discount"))
|
||||||
{
|
{
|
||||||
|
@ -1050,7 +1069,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
PriceActual = new BigDecimal ((100.0 - Discount.doubleValue()) / 100.0 * PriceList.doubleValue());
|
PriceActual = new BigDecimal ((100.0 - Discount.doubleValue()) / 100.0 * PriceList.doubleValue());
|
||||||
if (PriceActual.scale() > StdPrecision)
|
if (PriceActual.scale() > StdPrecision)
|
||||||
PriceActual = PriceActual.setScale(StdPrecision, BigDecimal.ROUND_HALF_UP);
|
PriceActual = PriceActual.setScale(StdPrecision, BigDecimal.ROUND_HALF_UP);
|
||||||
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, PriceActual);
|
C_UOM_To_ID, PriceActual);
|
||||||
if (PriceEntered == null)
|
if (PriceEntered == null)
|
||||||
PriceEntered = PriceActual;
|
PriceEntered = PriceActual;
|
||||||
|
@ -1080,7 +1099,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
&& PriceActual.compareTo(PriceLimit) < 0)
|
&& PriceActual.compareTo(PriceLimit) < 0)
|
||||||
{
|
{
|
||||||
PriceActual = PriceLimit;
|
PriceActual = PriceLimit;
|
||||||
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, PriceLimit);
|
C_UOM_To_ID, PriceLimit);
|
||||||
if (PriceEntered == null)
|
if (PriceEntered == null)
|
||||||
PriceEntered = PriceLimit;
|
PriceEntered = PriceLimit;
|
||||||
|
@ -1127,7 +1146,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
if (steps) log.warning("init - M_Product_ID=" + M_Product_ID + " - " );
|
if (steps) log.warning("init - M_Product_ID=" + M_Product_ID + " - " );
|
||||||
BigDecimal QtyOrdered = Env.ZERO;
|
BigDecimal QtyOrdered = Env.ZERO;
|
||||||
BigDecimal QtyEntered, PriceActual, PriceEntered;
|
BigDecimal QtyEntered, PriceActual, PriceEntered;
|
||||||
|
|
||||||
// No Product
|
// No Product
|
||||||
if (M_Product_ID == 0)
|
if (M_Product_ID == 0)
|
||||||
{
|
{
|
||||||
|
@ -1143,24 +1162,24 @@ public class CalloutOrder extends CalloutEngine
|
||||||
BigDecimal QtyEntered1 = QtyEntered.setScale(MUOM.getPrecision(ctx, C_UOM_To_ID), BigDecimal.ROUND_HALF_UP);
|
BigDecimal QtyEntered1 = QtyEntered.setScale(MUOM.getPrecision(ctx, C_UOM_To_ID), BigDecimal.ROUND_HALF_UP);
|
||||||
if (QtyEntered.compareTo(QtyEntered1) != 0)
|
if (QtyEntered.compareTo(QtyEntered1) != 0)
|
||||||
{
|
{
|
||||||
log.fine("Corrected QtyEntered Scale UOM=" + C_UOM_To_ID
|
log.fine("Corrected QtyEntered Scale UOM=" + C_UOM_To_ID
|
||||||
+ "; QtyEntered=" + QtyEntered + "->" + QtyEntered1);
|
+ "; QtyEntered=" + QtyEntered + "->" + QtyEntered1);
|
||||||
QtyEntered = QtyEntered1;
|
QtyEntered = QtyEntered1;
|
||||||
mTab.setValue("QtyEntered", QtyEntered);
|
mTab.setValue("QtyEntered", QtyEntered);
|
||||||
}
|
}
|
||||||
QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, QtyEntered);
|
C_UOM_To_ID, QtyEntered);
|
||||||
if (QtyOrdered == null)
|
if (QtyOrdered == null)
|
||||||
QtyOrdered = QtyEntered;
|
QtyOrdered = QtyEntered;
|
||||||
boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
|
boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
|
||||||
PriceActual = (BigDecimal)mTab.getValue("PriceActual");
|
PriceActual = (BigDecimal)mTab.getValue("PriceActual");
|
||||||
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
PriceEntered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, PriceActual);
|
C_UOM_To_ID, PriceActual);
|
||||||
if (PriceEntered == null)
|
if (PriceEntered == null)
|
||||||
PriceEntered = PriceActual;
|
PriceEntered = PriceActual;
|
||||||
log.fine("UOM=" + C_UOM_To_ID
|
log.fine("UOM=" + C_UOM_To_ID
|
||||||
+ ", QtyEntered/PriceActual=" + QtyEntered + "/" + PriceActual
|
+ ", QtyEntered/PriceActual=" + QtyEntered + "/" + PriceActual
|
||||||
+ " -> " + conversion
|
+ " -> " + conversion
|
||||||
+ " QtyOrdered/PriceEntered=" + QtyOrdered + "/" + PriceEntered);
|
+ " QtyOrdered/PriceEntered=" + QtyOrdered + "/" + PriceEntered);
|
||||||
Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
|
Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
|
||||||
mTab.setValue("QtyOrdered", QtyOrdered);
|
mTab.setValue("QtyOrdered", QtyOrdered);
|
||||||
|
@ -1174,19 +1193,19 @@ public class CalloutOrder extends CalloutEngine
|
||||||
BigDecimal QtyEntered1 = QtyEntered.setScale(MUOM.getPrecision(ctx, C_UOM_To_ID), BigDecimal.ROUND_HALF_UP);
|
BigDecimal QtyEntered1 = QtyEntered.setScale(MUOM.getPrecision(ctx, C_UOM_To_ID), BigDecimal.ROUND_HALF_UP);
|
||||||
if (QtyEntered.compareTo(QtyEntered1) != 0)
|
if (QtyEntered.compareTo(QtyEntered1) != 0)
|
||||||
{
|
{
|
||||||
log.fine("Corrected QtyEntered Scale UOM=" + C_UOM_To_ID
|
log.fine("Corrected QtyEntered Scale UOM=" + C_UOM_To_ID
|
||||||
+ "; QtyEntered=" + QtyEntered + "->" + QtyEntered1);
|
+ "; QtyEntered=" + QtyEntered + "->" + QtyEntered1);
|
||||||
QtyEntered = QtyEntered1;
|
QtyEntered = QtyEntered1;
|
||||||
mTab.setValue("QtyEntered", QtyEntered);
|
mTab.setValue("QtyEntered", QtyEntered);
|
||||||
}
|
}
|
||||||
QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, QtyEntered);
|
C_UOM_To_ID, QtyEntered);
|
||||||
if (QtyOrdered == null)
|
if (QtyOrdered == null)
|
||||||
QtyOrdered = QtyEntered;
|
QtyOrdered = QtyEntered;
|
||||||
boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
|
boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
|
||||||
log.fine("UOM=" + C_UOM_To_ID
|
log.fine("UOM=" + C_UOM_To_ID
|
||||||
+ ", QtyEntered=" + QtyEntered
|
+ ", QtyEntered=" + QtyEntered
|
||||||
+ " -> " + conversion
|
+ " -> " + conversion
|
||||||
+ " QtyOrdered=" + QtyOrdered);
|
+ " QtyOrdered=" + QtyOrdered);
|
||||||
Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
|
Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
|
||||||
mTab.setValue("QtyOrdered", QtyOrdered);
|
mTab.setValue("QtyOrdered", QtyOrdered);
|
||||||
|
@ -1196,23 +1215,23 @@ public class CalloutOrder extends CalloutEngine
|
||||||
{
|
{
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
||||||
QtyOrdered = (BigDecimal)value;
|
QtyOrdered = (BigDecimal)value;
|
||||||
int precision = MProduct.get(ctx, M_Product_ID).getUOMPrecision();
|
int precision = MProduct.get(ctx, M_Product_ID).getUOMPrecision();
|
||||||
BigDecimal QtyOrdered1 = QtyOrdered.setScale(precision, BigDecimal.ROUND_HALF_UP);
|
BigDecimal QtyOrdered1 = QtyOrdered.setScale(precision, BigDecimal.ROUND_HALF_UP);
|
||||||
if (QtyOrdered.compareTo(QtyOrdered1) != 0)
|
if (QtyOrdered.compareTo(QtyOrdered1) != 0)
|
||||||
{
|
{
|
||||||
log.fine("Corrected QtyOrdered Scale "
|
log.fine("Corrected QtyOrdered Scale "
|
||||||
+ QtyOrdered + "->" + QtyOrdered1);
|
+ QtyOrdered + "->" + QtyOrdered1);
|
||||||
QtyOrdered = QtyOrdered1;
|
QtyOrdered = QtyOrdered1;
|
||||||
mTab.setValue("QtyOrdered", QtyOrdered);
|
mTab.setValue("QtyOrdered", QtyOrdered);
|
||||||
}
|
}
|
||||||
QtyEntered = MUOMConversion.convertProductTo (ctx, M_Product_ID,
|
QtyEntered = MUOMConversion.convertProductTo (ctx, M_Product_ID,
|
||||||
C_UOM_To_ID, QtyOrdered);
|
C_UOM_To_ID, QtyOrdered);
|
||||||
if (QtyEntered == null)
|
if (QtyEntered == null)
|
||||||
QtyEntered = QtyOrdered;
|
QtyEntered = QtyOrdered;
|
||||||
boolean conversion = QtyOrdered.compareTo(QtyEntered) != 0;
|
boolean conversion = QtyOrdered.compareTo(QtyEntered) != 0;
|
||||||
log.fine("UOM=" + C_UOM_To_ID
|
log.fine("UOM=" + C_UOM_To_ID
|
||||||
+ ", QtyOrdered=" + QtyOrdered
|
+ ", QtyOrdered=" + QtyOrdered
|
||||||
+ " -> " + conversion
|
+ " -> " + conversion
|
||||||
+ " QtyEntered=" + QtyEntered);
|
+ " QtyEntered=" + QtyEntered);
|
||||||
Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
|
Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
|
||||||
mTab.setValue("QtyEntered", QtyEntered);
|
mTab.setValue("QtyEntered", QtyEntered);
|
||||||
|
@ -1222,9 +1241,9 @@ public class CalloutOrder extends CalloutEngine
|
||||||
// QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
|
// QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
|
||||||
QtyOrdered = (BigDecimal)mTab.getValue("QtyOrdered");
|
QtyOrdered = (BigDecimal)mTab.getValue("QtyOrdered");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Storage
|
// Storage
|
||||||
if (M_Product_ID != 0
|
if (M_Product_ID != 0
|
||||||
&& Env.isSOTrx(ctx, WindowNo)
|
&& Env.isSOTrx(ctx, WindowNo)
|
||||||
&& QtyOrdered.signum() > 0) // no negative (returns)
|
&& QtyOrdered.signum() > 0) // no negative (returns)
|
||||||
{
|
{
|
||||||
|
@ -1234,7 +1253,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
||||||
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
|
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
|
||||||
BigDecimal available = MStorage.getQtyAvailable
|
BigDecimal available = MStorage.getQtyAvailable
|
||||||
(M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID, null);
|
(M_Warehouse_ID, 0, M_Product_ID, M_AttributeSetInstance_ID, null);
|
||||||
if (available == null)
|
if (available == null)
|
||||||
available = Env.ZERO;
|
available = Env.ZERO;
|
||||||
if (available.signum() == 0)
|
if (available.signum() == 0)
|
||||||
|
@ -1246,7 +1265,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
Integer C_OrderLine_ID = (Integer)mTab.getValue("C_OrderLine_ID");
|
Integer C_OrderLine_ID = (Integer)mTab.getValue("C_OrderLine_ID");
|
||||||
if (C_OrderLine_ID == null)
|
if (C_OrderLine_ID == null)
|
||||||
C_OrderLine_ID = new Integer(0);
|
C_OrderLine_ID = new Integer(0);
|
||||||
BigDecimal notReserved = MOrderLine.getNotReserved(ctx,
|
BigDecimal notReserved = MOrderLine.getNotReserved(ctx,
|
||||||
M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID,
|
M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID,
|
||||||
C_OrderLine_ID.intValue());
|
C_OrderLine_ID.intValue());
|
||||||
if (notReserved == null)
|
if (notReserved == null)
|
||||||
|
@ -1254,9 +1273,9 @@ public class CalloutOrder extends CalloutEngine
|
||||||
BigDecimal total = available.subtract(notReserved);
|
BigDecimal total = available.subtract(notReserved);
|
||||||
if (total.compareTo(QtyOrdered) < 0)
|
if (total.compareTo(QtyOrdered) < 0)
|
||||||
{
|
{
|
||||||
String info = Msg.parseTranslation(ctx, "@QtyAvailable@=" + available
|
String info = Msg.parseTranslation(ctx, "@QtyAvailable@=" + available
|
||||||
+ " - @QtyNotReserved@=" + notReserved + " = " + total);
|
+ " - @QtyNotReserved@=" + notReserved + " = " + total);
|
||||||
mTab.fireDataStatusEEvent ("InsufficientQtyAvailable",
|
mTab.fireDataStatusEEvent ("InsufficientQtyAvailable",
|
||||||
info, false);
|
info, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1265,6 +1284,6 @@ public class CalloutOrder extends CalloutEngine
|
||||||
//
|
//
|
||||||
return "";
|
return "";
|
||||||
} // qty
|
} // qty
|
||||||
|
|
||||||
} // CalloutOrder
|
} // CalloutOrder
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue