hg merge release-2.1 (merge release2.1 into development)
This commit is contained in:
commit
bb9b63bdc7
|
@ -570,7 +570,7 @@ public class CalloutInOut extends CalloutEngine
|
||||||
if (isCalloutActive() || value == null)
|
if (isCalloutActive() || value == null)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
// log.log(Level.WARNING,"qty - init - M_Product_ID=" + M_Product_ID);
|
// log.log(Level.WARNING,"qty - init - M_Product_ID=" + M_Product_ID);
|
||||||
BigDecimal MovementQty, QtyEntered;
|
BigDecimal MovementQty, QtyEntered;
|
||||||
|
|
||||||
|
@ -606,7 +606,7 @@ public class CalloutInOut extends CalloutEngine
|
||||||
mTab.setValue("MovementQty", MovementQty);
|
mTab.setValue("MovementQty", MovementQty);
|
||||||
}
|
}
|
||||||
// No UOM defined
|
// No UOM defined
|
||||||
else if (Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID") == 0)
|
else if (Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID") == 0)
|
||||||
{
|
{
|
||||||
QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
|
QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
|
||||||
mTab.setValue("MovementQty", QtyEntered);
|
mTab.setValue("MovementQty", QtyEntered);
|
||||||
|
@ -614,7 +614,7 @@ public class CalloutInOut extends CalloutEngine
|
||||||
// QtyEntered changed - calculate MovementQty
|
// QtyEntered changed - calculate MovementQty
|
||||||
else if (mField.getColumnName().equals("QtyEntered"))
|
else if (mField.getColumnName().equals("QtyEntered"))
|
||||||
{
|
{
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID");
|
||||||
QtyEntered = (BigDecimal)value;
|
QtyEntered = (BigDecimal)value;
|
||||||
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)
|
||||||
|
@ -639,7 +639,7 @@ public class CalloutInOut extends CalloutEngine
|
||||||
// MovementQty changed - calculate QtyEntered (should not happen)
|
// MovementQty changed - calculate QtyEntered (should not happen)
|
||||||
else if (mField.getColumnName().equals("MovementQty"))
|
else if (mField.getColumnName().equals("MovementQty"))
|
||||||
{
|
{
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID");
|
||||||
MovementQty = (BigDecimal)value;
|
MovementQty = (BigDecimal)value;
|
||||||
int precision = MProduct.get(ctx, M_Product_ID).getUOMPrecision();
|
int precision = MProduct.get(ctx, M_Product_ID).getUOMPrecision();
|
||||||
BigDecimal MovementQty1 = MovementQty.setScale(precision, BigDecimal.ROUND_HALF_UP);
|
BigDecimal MovementQty1 = MovementQty.setScale(precision, BigDecimal.ROUND_HALF_UP);
|
||||||
|
@ -683,9 +683,9 @@ public class CalloutInOut extends CalloutEngine
|
||||||
if (M_ASI_ID == null || M_ASI_ID.intValue() == 0)
|
if (M_ASI_ID == null || M_ASI_ID.intValue() == 0)
|
||||||
return "";
|
return "";
|
||||||
//
|
//
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
int M_Warehouse_ID = Env.getContextAsInt(ctx, WindowNo, "M_Warehouse_ID");
|
||||||
int M_Locator_ID = Env.getContextAsInt(ctx, WindowNo, "M_Locator_ID");
|
int M_Locator_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Locator_ID");
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("M_Product_ID=" + M_Product_ID
|
if (log.isLoggable(Level.FINE)) log.fine("M_Product_ID=" + M_Product_ID
|
||||||
+ ", M_ASI_ID=" + M_ASI_ID
|
+ ", M_ASI_ID=" + M_ASI_ID
|
||||||
+ " - M_Warehouse_ID=" + M_Warehouse_ID
|
+ " - M_Warehouse_ID=" + M_Warehouse_ID
|
||||||
|
|
|
@ -319,7 +319,7 @@ public class CalloutInvoice extends CalloutEngine
|
||||||
|
|
||||||
/***** Price Calculation see also qty ****/
|
/***** Price Calculation see also qty ****/
|
||||||
boolean IsSOTrx = Env.getContext(ctx, WindowNo, "IsSOTrx").equals("Y");
|
boolean IsSOTrx = Env.getContext(ctx, WindowNo, "IsSOTrx").equals("Y");
|
||||||
int C_BPartner_ID = Env.getContextAsInt(ctx, WindowNo, WindowNo, "C_BPartner_ID");
|
int C_BPartner_ID = Env.getContextAsInt(ctx, WindowNo, "C_BPartner_ID");
|
||||||
BigDecimal Qty = (BigDecimal)mTab.getValue("QtyInvoiced");
|
BigDecimal Qty = (BigDecimal)mTab.getValue("QtyInvoiced");
|
||||||
MProductPricing pp = new MProductPricing (M_Product_ID.intValue(), C_BPartner_ID, Qty, IsSOTrx);
|
MProductPricing pp = new MProductPricing (M_Product_ID.intValue(), C_BPartner_ID, Qty, IsSOTrx);
|
||||||
//
|
//
|
||||||
|
@ -444,12 +444,12 @@ public class CalloutInvoice extends CalloutEngine
|
||||||
if (column.equals("M_Product_ID"))
|
if (column.equals("M_Product_ID"))
|
||||||
M_Product_ID = ((Integer)value).intValue();
|
M_Product_ID = ((Integer)value).intValue();
|
||||||
else
|
else
|
||||||
M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
int C_Charge_ID = 0;
|
int C_Charge_ID = 0;
|
||||||
if (column.equals("C_Charge_ID"))
|
if (column.equals("C_Charge_ID"))
|
||||||
C_Charge_ID = ((Integer)value).intValue();
|
C_Charge_ID = ((Integer)value).intValue();
|
||||||
else
|
else
|
||||||
C_Charge_ID = Env.getContextAsInt(ctx, WindowNo, "C_Charge_ID");
|
C_Charge_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_Charge_ID");
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("Product=" + M_Product_ID + ", C_Charge_ID=" + C_Charge_ID);
|
if (log.isLoggable(Level.FINE)) log.fine("Product=" + M_Product_ID + ", C_Charge_ID=" + C_Charge_ID);
|
||||||
if (M_Product_ID == 0 && C_Charge_ID == 0)
|
if (M_Product_ID == 0 && C_Charge_ID == 0)
|
||||||
return amt (ctx, WindowNo, mTab, mField, value); //
|
return amt (ctx, WindowNo, mTab, mField, value); //
|
||||||
|
@ -506,8 +506,8 @@ public class CalloutInvoice extends CalloutEngine
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
// log.log(Level.WARNING,"amt - init");
|
// log.log(Level.WARNING,"amt - init");
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID");
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
int M_PriceList_ID = Env.getContextAsInt(ctx, WindowNo, "M_PriceList_ID");
|
int M_PriceList_ID = Env.getContextAsInt(ctx, WindowNo, "M_PriceList_ID");
|
||||||
int StdPrecision = MPriceList.getStandardPrecision(ctx, M_PriceList_ID);
|
int StdPrecision = MPriceList.getStandardPrecision(ctx, M_PriceList_ID);
|
||||||
MPriceList pl = new MPriceList(ctx, M_PriceList_ID, null);
|
MPriceList pl = new MPriceList(ctx, M_PriceList_ID, null);
|
||||||
|
@ -732,7 +732,7 @@ public class CalloutInvoice extends CalloutEngine
|
||||||
if (isCalloutActive() || value == null)
|
if (isCalloutActive() || value == null)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
// log.log(Level.WARNING,"qty - init - M_Product_ID=" + M_Product_ID);
|
// log.log(Level.WARNING,"qty - init - M_Product_ID=" + M_Product_ID);
|
||||||
BigDecimal QtyInvoiced, QtyEntered, PriceActual, PriceEntered;
|
BigDecimal QtyInvoiced, QtyEntered, PriceActual, PriceEntered;
|
||||||
|
|
||||||
|
@ -776,7 +776,7 @@ public class CalloutInvoice extends CalloutEngine
|
||||||
// QtyEntered changed - calculate QtyInvoiced
|
// QtyEntered changed - calculate QtyInvoiced
|
||||||
else if (mField.getColumnName().equals("QtyEntered"))
|
else if (mField.getColumnName().equals("QtyEntered"))
|
||||||
{
|
{
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID");
|
||||||
QtyEntered = (BigDecimal)value;
|
QtyEntered = (BigDecimal)value;
|
||||||
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)
|
||||||
|
@ -801,7 +801,7 @@ public class CalloutInvoice extends CalloutEngine
|
||||||
// QtyInvoiced changed - calculate QtyEntered (should not happen)
|
// QtyInvoiced changed - calculate QtyEntered (should not happen)
|
||||||
else if (mField.getColumnName().equals("QtyInvoiced"))
|
else if (mField.getColumnName().equals("QtyInvoiced"))
|
||||||
{
|
{
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID");
|
||||||
QtyInvoiced = (BigDecimal)value;
|
QtyInvoiced = (BigDecimal)value;
|
||||||
int precision = MProduct.get(ctx, M_Product_ID).getUOMPrecision();
|
int precision = MProduct.get(ctx, M_Product_ID).getUOMPrecision();
|
||||||
BigDecimal QtyInvoiced1 = QtyInvoiced.setScale(precision, BigDecimal.ROUND_HALF_UP);
|
BigDecimal QtyInvoiced1 = QtyInvoiced.setScale(precision, BigDecimal.ROUND_HALF_UP);
|
||||||
|
|
|
@ -76,7 +76,7 @@ public class CalloutMovement extends CalloutEngine
|
||||||
if (isCalloutActive() || value == null)
|
if (isCalloutActive() || value == null)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
checkQtyAvailable(ctx, mTab, WindowNo, M_Product_ID, (BigDecimal)value);
|
checkQtyAvailable(ctx, mTab, WindowNo, M_Product_ID, (BigDecimal)value);
|
||||||
//
|
//
|
||||||
return "";
|
return "";
|
||||||
|
@ -95,7 +95,7 @@ public class CalloutMovement extends CalloutEngine
|
||||||
public String locator(Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value) {
|
public String locator(Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value) {
|
||||||
if (value == null)
|
if (value == null)
|
||||||
return "";
|
return "";
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
checkQtyAvailable(ctx, mTab, WindowNo, M_Product_ID, null);
|
checkQtyAvailable(ctx, mTab, WindowNo, M_Product_ID, null);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -116,11 +116,11 @@ public class CalloutMovement extends CalloutEngine
|
||||||
if (product.isStocked()) {
|
if (product.isStocked()) {
|
||||||
if (MovementQty == null)
|
if (MovementQty == null)
|
||||||
MovementQty = (BigDecimal) mTab.getValue("MovementQty");
|
MovementQty = (BigDecimal) mTab.getValue("MovementQty");
|
||||||
int M_Locator_ID = Env.getContextAsInt(ctx, WindowNo, "M_Locator_ID");
|
int M_Locator_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Locator_ID");
|
||||||
// If no locator, don't check anything and assume is ok
|
// If no locator, don't check anything and assume is ok
|
||||||
if (M_Locator_ID <= 0)
|
if (M_Locator_ID <= 0)
|
||||||
return;
|
return;
|
||||||
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
|
int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_AttributeSetInstance_ID");
|
||||||
BigDecimal available = MStorageOnHand.getQtyOnHandForLocator(M_Product_ID, M_Locator_ID, M_AttributeSetInstance_ID, null);
|
BigDecimal available = MStorageOnHand.getQtyOnHandForLocator(M_Product_ID, M_Locator_ID, M_AttributeSetInstance_ID, null);
|
||||||
|
|
||||||
if (available == null)
|
if (available == null)
|
||||||
|
|
|
@ -841,7 +841,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
{
|
{
|
||||||
BigDecimal QtyOrdered = (BigDecimal)mTab.getValue("QtyOrdered");
|
BigDecimal QtyOrdered = (BigDecimal)mTab.getValue("QtyOrdered");
|
||||||
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, mTab.getTabNo(), "M_AttributeSetInstance_ID");
|
||||||
BigDecimal available = MStorageReservation.getQtyAvailable
|
BigDecimal available = MStorageReservation.getQtyAvailable
|
||||||
(M_Warehouse_ID, M_Product_ID.intValue(), M_AttributeSetInstance_ID, null);
|
(M_Warehouse_ID, M_Product_ID.intValue(), M_AttributeSetInstance_ID, null);
|
||||||
if (available == null)
|
if (available == null)
|
||||||
|
@ -961,12 +961,12 @@ public class CalloutOrder extends CalloutEngine
|
||||||
if (column.equals("M_Product_ID"))
|
if (column.equals("M_Product_ID"))
|
||||||
M_Product_ID = ((Integer)value).intValue();
|
M_Product_ID = ((Integer)value).intValue();
|
||||||
else
|
else
|
||||||
M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
int C_Charge_ID = 0;
|
int C_Charge_ID = 0;
|
||||||
if (column.equals("C_Charge_ID"))
|
if (column.equals("C_Charge_ID"))
|
||||||
C_Charge_ID = ((Integer)value).intValue();
|
C_Charge_ID = ((Integer)value).intValue();
|
||||||
else
|
else
|
||||||
C_Charge_ID = Env.getContextAsInt(ctx, WindowNo, "C_Charge_ID");
|
C_Charge_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_Charge_ID");
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("Product=" + M_Product_ID + ", C_Charge_ID=" + C_Charge_ID);
|
if (log.isLoggable(Level.FINE)) log.fine("Product=" + M_Product_ID + ", C_Charge_ID=" + C_Charge_ID);
|
||||||
if (M_Product_ID == 0 && C_Charge_ID == 0)
|
if (M_Product_ID == 0 && C_Charge_ID == 0)
|
||||||
return amt(ctx, WindowNo, mTab, mField, value); //
|
return amt(ctx, WindowNo, mTab, mField, value); //
|
||||||
|
@ -1034,9 +1034,9 @@ public class CalloutOrder extends CalloutEngine
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
if (steps) log.warning("init");
|
if (steps) log.warning("init");
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID");
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
int M_PriceList_ID = Env.getContextAsInt(ctx, WindowNo, "M_PriceList_ID");
|
int M_PriceList_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_PriceList_ID");
|
||||||
int StdPrecision = MPriceList.getStandardPrecision(ctx, M_PriceList_ID);
|
int StdPrecision = MPriceList.getStandardPrecision(ctx, M_PriceList_ID);
|
||||||
MPriceList pl = new MPriceList(ctx, M_PriceList_ID, null);
|
MPriceList pl = new MPriceList(ctx, M_PriceList_ID, null);
|
||||||
boolean isEnforcePriceLimit = pl.isEnforcePriceLimit();
|
boolean isEnforcePriceLimit = pl.isEnforcePriceLimit();
|
||||||
|
@ -1211,7 +1211,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
{
|
{
|
||||||
if (isCalloutActive() || value == null)
|
if (isCalloutActive() || value == null)
|
||||||
return "";
|
return "";
|
||||||
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
|
int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "M_Product_ID");
|
||||||
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;
|
||||||
|
@ -1257,7 +1257,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
// QtyEntered changed - calculate QtyOrdered
|
// QtyEntered changed - calculate QtyOrdered
|
||||||
else if (mField.getColumnName().equals("QtyEntered"))
|
else if (mField.getColumnName().equals("QtyEntered"))
|
||||||
{
|
{
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "C_UOM_ID");
|
||||||
QtyEntered = (BigDecimal)value;
|
QtyEntered = (BigDecimal)value;
|
||||||
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)
|
||||||
|
@ -1282,7 +1282,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
// QtyOrdered changed - calculate QtyEntered (should not happen)
|
// QtyOrdered changed - calculate QtyEntered (should not happen)
|
||||||
else if (mField.getColumnName().equals("QtyOrdered"))
|
else if (mField.getColumnName().equals("QtyOrdered"))
|
||||||
{
|
{
|
||||||
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
|
int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, mTab.getTabNo(), "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);
|
||||||
|
@ -1320,7 +1320,7 @@ public class CalloutOrder extends CalloutEngine
|
||||||
if (product.isStocked())
|
if (product.isStocked())
|
||||||
{
|
{
|
||||||
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, mTab.getTabNo(), "M_AttributeSetInstance_ID");
|
||||||
BigDecimal available = MStorageReservation.getQtyAvailable
|
BigDecimal available = MStorageReservation.getQtyAvailable
|
||||||
(M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID, null);
|
(M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID, null);
|
||||||
if (available == null)
|
if (available == null)
|
||||||
|
|
|
@ -781,7 +781,7 @@ public class MProductPricing
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MDiscountSchema sd = MDiscountSchema.get(Env.getCtx(), M_DiscountSchema_ID); // not correct
|
MDiscountSchema sd = MDiscountSchema.get(Env.getCtx(), M_DiscountSchema_ID); // not correct
|
||||||
if (sd.get_ID() == 0 || (MDiscountSchema.DISCOUNTTYPE_Breaks.equals(sd.getDiscountType()) && MDiscountSchema.CUMULATIVELEVEL_Line.equals(sd.getCumulativeLevel())))
|
if (sd.get_ID() == 0 || (MDiscountSchema.DISCOUNTTYPE_Breaks.equals(sd.getDiscountType()) && !MDiscountSchema.CUMULATIVELEVEL_Line.equals(sd.getCumulativeLevel())))
|
||||||
return;
|
return;
|
||||||
//
|
//
|
||||||
m_discountSchema = true;
|
m_discountSchema = true;
|
||||||
|
|
|
@ -3938,6 +3938,15 @@ public abstract class PO
|
||||||
int id = get_ID();
|
int id = get_ID();
|
||||||
if (id == 0)
|
if (id == 0)
|
||||||
id = get_IDOld();
|
id = get_IDOld();
|
||||||
|
|
||||||
|
// IDEMPIERE-2453
|
||||||
|
StringBuilder countSql = new StringBuilder("SELECT COUNT(*) FROM ")
|
||||||
|
.append(MTree_Base.getNodeTableName(treeType))
|
||||||
|
.append(" WHERE Parent_ID=?");
|
||||||
|
int cnt = DB.getSQLValue( get_TrxName(), countSql.toString(), id);
|
||||||
|
if (cnt > 0)
|
||||||
|
throw new AdempiereException(Msg.getMsg(Env.getCtx(),"NoParentDelete", new Object[] {cnt}));
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder ("DELETE FROM ")
|
StringBuilder sb = new StringBuilder ("DELETE FROM ")
|
||||||
.append(MTree_Base.getNodeTableName(treeType))
|
.append(MTree_Base.getNodeTableName(treeType))
|
||||||
.append(" n WHERE Node_ID=").append(id)
|
.append(" n WHERE Node_ID=").append(id)
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class PrintDataElement implements Serializable
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 2177482817458457236L;
|
private static final long serialVersionUID = -2121125127301364735L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print Data Element Constructor
|
* Print Data Element Constructor
|
||||||
|
@ -129,6 +129,13 @@ public class PrintDataElement implements Serializable
|
||||||
return m_foreignColumnName;
|
return m_foreignColumnName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set ForeignName
|
||||||
|
* @return name
|
||||||
|
*/
|
||||||
|
public void setForeignColumnName(String foreignColumnName) {
|
||||||
|
m_foreignColumnName = foreignColumnName;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Node Value
|
* Get Node Value
|
||||||
|
|
|
@ -72,6 +72,8 @@ import org.compiere.model.MPaySelectionCheck;
|
||||||
import org.compiere.model.MProject;
|
import org.compiere.model.MProject;
|
||||||
import org.compiere.model.MQuery;
|
import org.compiere.model.MQuery;
|
||||||
import org.compiere.model.MRfQResponse;
|
import org.compiere.model.MRfQResponse;
|
||||||
|
import org.compiere.model.MRole;
|
||||||
|
import org.compiere.model.MTable;
|
||||||
import org.compiere.model.PrintInfo;
|
import org.compiere.model.PrintInfo;
|
||||||
|
|
||||||
import static org.compiere.model.SystemIDs.*;
|
import static org.compiere.model.SystemIDs.*;
|
||||||
|
@ -652,6 +654,37 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount)
|
||||||
String value = pde.getValueDisplay(language); // formatted
|
String value = pde.getValueDisplay(language); // formatted
|
||||||
if (pde.getColumnName().endsWith("_ID") && extension != null)
|
if (pde.getColumnName().endsWith("_ID") && extension != null)
|
||||||
{
|
{
|
||||||
|
boolean isZoom = false;
|
||||||
|
if (item.getColumnName().equals("Record_ID")) {
|
||||||
|
Object tablePDE = m_printData.getNode("AD_Table_ID");
|
||||||
|
if (tablePDE != null && tablePDE instanceof PrintDataElement) {
|
||||||
|
int tableID = -1;
|
||||||
|
try {
|
||||||
|
tableID = Integer.parseInt(((PrintDataElement)tablePDE).getValueAsString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
tableID = -1;
|
||||||
|
}
|
||||||
|
if (tableID > 0) {
|
||||||
|
MTable mTable = MTable.get(getCtx(), tableID);
|
||||||
|
String foreignColumnName = mTable.getTableName() + "_ID";
|
||||||
|
pde.setForeignColumnName(foreignColumnName);
|
||||||
|
isZoom = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
isZoom = true;
|
||||||
|
}
|
||||||
|
if (isZoom) {
|
||||||
|
// check permission on the zoomed window
|
||||||
|
MTable mTable = MTable.get(getCtx(), pde.getForeignColumnName().substring(0, pde.getForeignColumnName().length()-3));
|
||||||
|
int Record_ID = Integer.parseInt(pde.getValueAsString());
|
||||||
|
int AD_Window_ID = Env.getZoomWindowID(mTable.get_ID(), Record_ID);
|
||||||
|
Boolean canAccess = MRole.getDefault().getWindowAccess(AD_Window_ID);
|
||||||
|
if (canAccess == null) {
|
||||||
|
isZoom = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isZoom) {
|
||||||
//link for column
|
//link for column
|
||||||
a href = new a("javascript:void(0)");
|
a href = new a("javascript:void(0)");
|
||||||
href.setID(pde.getColumnName() + "_" + row + "_a");
|
href.setID(pde.getColumnName() + "_" + row + "_a");
|
||||||
|
@ -659,8 +692,10 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount)
|
||||||
href.addElement(Util.maskHTML(value));
|
href.addElement(Util.maskHTML(value));
|
||||||
if (cssPrefix != null)
|
if (cssPrefix != null)
|
||||||
href.setClass(cssPrefix + "-href");
|
href.setClass(cssPrefix + "-href");
|
||||||
|
|
||||||
extension.extendIDColumn(row, td, href, pde);
|
extension.extendIDColumn(row, td, href, pde);
|
||||||
|
} else {
|
||||||
|
td.addElement(Util.maskHTML(value));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -121,7 +121,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
||||||
|
|
||||||
if(columnName.equalsIgnoreCase("IsActive") ||
|
if(columnName.equalsIgnoreCase("IsActive") ||
|
||||||
columnName.equalsIgnoreCase("IsTranslated")){
|
columnName.equalsIgnoreCase("IsTranslated")){
|
||||||
value = "true".equals(value) ? "Y" : "N";
|
value = "true".equals(value) || "Y".equals(value) ? "Y" : "N";
|
||||||
}
|
}
|
||||||
pstm.setString(i, value);
|
pstm.setString(i, value);
|
||||||
}
|
}
|
||||||
|
@ -161,7 +161,7 @@ public class CommonTranslationHandler extends AbstractElementHandler implements
|
||||||
if(columnName.equalsIgnoreCase("IsActive") ||
|
if(columnName.equalsIgnoreCase("IsActive") ||
|
||||||
columnName.equalsIgnoreCase("IsTranslated")){
|
columnName.equalsIgnoreCase("IsTranslated")){
|
||||||
|
|
||||||
value = "true".equals(value) ? "Y" : "N";
|
value = "true".equals(value) || "Y".equals(value) ? "Y" : "N";
|
||||||
}
|
}
|
||||||
|
|
||||||
pstm.setString(i, value);
|
pstm.setString(i, value);
|
||||||
|
|
|
@ -133,17 +133,8 @@ public class MenuElementHandler extends AbstractElementHandler {
|
||||||
int columnID = DB.getSQLValue(getTrxName(ctx), sql, colName, tableID);
|
int columnID = DB.getSQLValue(getTrxName(ctx), sql, colName, tableID);
|
||||||
sql = "SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = ?";
|
sql = "SELECT AD_Reference_ID FROM AD_COLUMN WHERE AD_Column_ID = ?";
|
||||||
int referenceID = DB.getSQLValue(getTrxName(ctx), sql, columnID);
|
int referenceID = DB.getSQLValue(getTrxName(ctx), sql, columnID);
|
||||||
if (referenceID == 20 || referenceID == 28)
|
|
||||||
if (rs.getObject(q).equals("Y"))
|
|
||||||
colValue = "true";
|
|
||||||
else
|
|
||||||
colValue = "false";
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Object obj = rs.getObject(q);
|
Object obj = rs.getObject(q);
|
||||||
colValue = obj == null ? "" : obj.toString();
|
colValue = obj == null ? "" : obj.toString();
|
||||||
}
|
|
||||||
|
|
||||||
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx.ctx, 0, getTrxName(ctx));
|
X_AD_Package_Imp_Backup backup = new X_AD_Package_Imp_Backup(ctx.ctx, 0, getTrxName(ctx));
|
||||||
backup.setAD_Package_Imp_Detail_ID(impDetail.getAD_Package_Imp_Detail_ID());
|
backup.setAD_Package_Imp_Detail_ID(impDetail.getAD_Package_Imp_Detail_ID());
|
||||||
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
backup.setAD_Package_Imp_ID(getPackageImpId(ctx.ctx));
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class PoExporter {
|
||||||
* @param boolValue
|
* @param boolValue
|
||||||
*/
|
*/
|
||||||
public void addBoolean(String name, boolean boolValue, AttributesImpl atts){
|
public void addBoolean(String name, boolean boolValue, AttributesImpl atts){
|
||||||
addTextElement(name, boolValue == true ? "true" : "false", atts);
|
addTextElement(name, boolValue == true ? "Y" : "N", atts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ public class PoExporter {
|
||||||
if(value instanceof String){
|
if(value instanceof String){
|
||||||
addTextElement(columnName, (String)value, atts);
|
addTextElement(columnName, (String)value, atts);
|
||||||
} else if(value instanceof Boolean) {
|
} else if(value instanceof Boolean) {
|
||||||
addTextElement(columnName, (Boolean)value == true ? "true" : "false", atts);
|
addTextElement(columnName, (Boolean)value == true ? "Y" : "N", atts);
|
||||||
} else if(value instanceof Integer) {
|
} else if(value instanceof Integer) {
|
||||||
addTextElement(columnName, value.toString(), atts);
|
addTextElement(columnName, value.toString(), atts);
|
||||||
} else if(value instanceof BigDecimal) {
|
} else if(value instanceof BigDecimal) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class PoFiller{
|
||||||
Element e = element.properties.get(columnName);
|
Element e = element.properties.get(columnName);
|
||||||
String value = e != null ? e.contents.toString() : null;
|
String value = e != null ? e.contents.toString() : null;
|
||||||
|
|
||||||
boolean bool = "true".equals(value) ? true : false;
|
boolean bool = "true".equals(value) || "Y".equals(value) ? true : false;
|
||||||
|
|
||||||
if (po.get_Value(columnName) != null && po.get_ValueAsBoolean(columnName) == bool)
|
if (po.get_Value(columnName) != null && po.get_ValueAsBoolean(columnName) == bool)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
source.. = src/
|
source.. = src/
|
||||||
output.. = bin/
|
output.. = bin/
|
||||||
bin.includes = META-INF/,\
|
bin.includes = META-INF/,\
|
||||||
.
|
.,\
|
||||||
|
plugin.xml
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?eclipse version="3.4"?>
|
||||||
|
<plugin>
|
||||||
|
|
||||||
|
<extension
|
||||||
|
id="org.adempiere.model.ExportModelValidator"
|
||||||
|
name="org.adempiere.model.ExportModelValidator"
|
||||||
|
point="org.adempiere.base.ModelValidator">
|
||||||
|
<listener
|
||||||
|
class="org.adempiere.model.ExportModelValidator">
|
||||||
|
</listener>
|
||||||
|
</extension>
|
||||||
|
|
||||||
|
</plugin>
|
|
@ -21,10 +21,10 @@ import java.util.logging.Level;
|
||||||
import org.adempiere.webui.LayoutUtils;
|
import org.adempiere.webui.LayoutUtils;
|
||||||
import org.adempiere.webui.component.Button;
|
import org.adempiere.webui.component.Button;
|
||||||
import org.adempiere.webui.component.ConfirmPanel;
|
import org.adempiere.webui.component.ConfirmPanel;
|
||||||
import org.adempiere.webui.component.VerticalBox;
|
|
||||||
import org.adempiere.webui.component.Window;
|
import org.adempiere.webui.component.Window;
|
||||||
import org.adempiere.webui.event.DialogEvents;
|
import org.adempiere.webui.event.DialogEvents;
|
||||||
import org.adempiere.webui.factory.ButtonFactory;
|
import org.adempiere.webui.factory.ButtonFactory;
|
||||||
|
import org.adempiere.webui.session.SessionManager;
|
||||||
import org.compiere.process.ProcessInfo;
|
import org.compiere.process.ProcessInfo;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
@ -33,7 +33,8 @@ import org.zkoss.zk.ui.event.Event;
|
||||||
import org.zkoss.zk.ui.event.EventListener;
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
import org.zkoss.zk.ui.event.Events;
|
import org.zkoss.zk.ui.event.Events;
|
||||||
import org.zkoss.zul.Div;
|
import org.zkoss.zul.Div;
|
||||||
import org.zkoss.zul.Hbox;
|
import org.zkoss.zul.Hlayout;
|
||||||
|
import org.zkoss.zul.Layout;
|
||||||
import org.zkoss.zul.Vlayout;
|
import org.zkoss.zul.Vlayout;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,8 +55,6 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -3260639688339379279L;
|
private static final long serialVersionUID = -3260639688339379279L;
|
||||||
|
|
||||||
private VerticalBox dialogBody;
|
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static CLogger log = CLogger.getCLogger(ProcessModalDialog.class);
|
private static CLogger log = CLogger.getCLogger(ProcessModalDialog.class);
|
||||||
//
|
//
|
||||||
|
@ -138,23 +137,32 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
|
||||||
|
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
this.setBorder("normal");
|
this.setBorder("normal");
|
||||||
dialogBody = new VerticalBox();
|
Layout dialogBody = new Vlayout();
|
||||||
dialogBody.setHflex("1");
|
dialogBody.setHflex("1");
|
||||||
|
dialogBody.setStyle(dialogBody.getStyle() + ";max-height:" + (SessionManager.getAppDesktop().getClientInfo().desktopHeight - 100) + "px");
|
||||||
|
|
||||||
|
|
||||||
Vlayout dialogContent = new Vlayout();
|
Vlayout dialogContent = new Vlayout();
|
||||||
dialogContent.setHflex("1");
|
dialogContent.setHflex("1");
|
||||||
dialogContent.setVflex("1");
|
dialogContent.setVflex("1");
|
||||||
dialogContent.setSclass("dialog-content");
|
dialogContent.setSclass("dialog-content");
|
||||||
dialogContent.setStyle("overflow-y: auto;");
|
dialogContent.setStyle("overflow-y: auto;");
|
||||||
dialogBody.appendChild(dialogContent);
|
dialogBody.appendChild(dialogContent);
|
||||||
|
// description
|
||||||
Div div = new Div();
|
Div div = new Div();
|
||||||
div.setId("message");
|
div.setId("message");
|
||||||
div.appendChild(getMessage());
|
div.appendChild(getMessage());
|
||||||
div.setStyle("max-height: 150pt; overflow: auto;");
|
div.setStyle("max-height: 150pt; overflow: auto;");
|
||||||
dialogContent.appendChild(div);
|
dialogContent.appendChild(div);
|
||||||
|
|
||||||
dialogContent.appendChild(getCenterPanel());
|
dialogContent.appendChild(getCenterPanel());
|
||||||
Hbox hbox = new Hbox();
|
// button panel
|
||||||
|
Layout hbox = new Hlayout();
|
||||||
|
hbox.setStyle("bottom:0;text-align:right");
|
||||||
|
dialogBody.appendChild(hbox);
|
||||||
hbox.setWidth("100%");
|
hbox.setWidth("100%");
|
||||||
hbox.setSclass("dialog-footer");
|
hbox.setSclass("dialog-footer");
|
||||||
|
|
||||||
Button btn = ButtonFactory.createNamedButton(ConfirmPanel.A_OK);
|
Button btn = ButtonFactory.createNamedButton(ConfirmPanel.A_OK);
|
||||||
btn.setId("Ok");
|
btn.setId("Ok");
|
||||||
btn.addEventListener(Events.ON_CLICK, this);
|
btn.addEventListener(Events.ON_CLICK, this);
|
||||||
|
@ -163,11 +171,10 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
|
||||||
btn = ButtonFactory.createNamedButton(ConfirmPanel.A_CANCEL);
|
btn = ButtonFactory.createNamedButton(ConfirmPanel.A_CANCEL);
|
||||||
btn.setId("Cancel");
|
btn.setId("Cancel");
|
||||||
btn.addEventListener(Events.ON_CLICK, this);
|
btn.addEventListener(Events.ON_CLICK, this);
|
||||||
|
|
||||||
hbox.appendChild(btn);
|
hbox.appendChild(btn);
|
||||||
hbox.setPack("end");
|
|
||||||
dialogBody.appendChild(hbox);
|
dialogBody.appendChild(hbox);
|
||||||
this.appendChild(dialogBody);
|
this.appendChild(dialogBody);
|
||||||
|
|
||||||
this.setSclass("popup-dialog");
|
this.setSclass("popup-dialog");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -201,15 +208,15 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showBusyDialog() {
|
public void showBusyDialog() {
|
||||||
this.setBorder("none");
|
|
||||||
this.setTitle(null);
|
|
||||||
dialogBody.setVisible(false);
|
|
||||||
|
|
||||||
BusyDialog progressWindow = createBusyDialog();
|
BusyDialog progressWindow = createBusyDialog();
|
||||||
if (this.getParent() != null)
|
if (this.getParent() != null){
|
||||||
|
this.getParent().appendChild(progressWindow);
|
||||||
LayoutUtils.openOverlappedWindow(this.getParent(), progressWindow, "middle_center");
|
LayoutUtils.openOverlappedWindow(this.getParent(), progressWindow, "middle_center");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateUI() {
|
public void updateUI() {
|
||||||
|
|
||||||
|
|
|
@ -466,7 +466,7 @@ public class NumberBox extends Div
|
||||||
*/
|
*/
|
||||||
public boolean isEnabled()
|
public boolean isEnabled()
|
||||||
{
|
{
|
||||||
return decimalBox.isReadonly();
|
return !decimalBox.isReadonly();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -15,8 +15,11 @@ package org.adempiere.webui.component;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.zkoss.lang.Objects;
|
||||||
import org.zkoss.zul.AbstractListModel;
|
import org.zkoss.zul.AbstractListModel;
|
||||||
import org.zkoss.zul.Listbox;
|
import org.zkoss.zul.Listbox;
|
||||||
import org.zkoss.zul.Listcell;
|
import org.zkoss.zul.Listcell;
|
||||||
|
@ -24,13 +27,14 @@ import org.zkoss.zul.Listitem;
|
||||||
import org.zkoss.zul.ListitemRenderer;
|
import org.zkoss.zul.ListitemRenderer;
|
||||||
import org.zkoss.zul.ListitemRendererExt;
|
import org.zkoss.zul.ListitemRendererExt;
|
||||||
import org.zkoss.zul.event.ListDataEvent;
|
import org.zkoss.zul.event.ListDataEvent;
|
||||||
|
import org.zkoss.zul.ext.Sortable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Low Heng Sin
|
* @author Low Heng Sin
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class SimpleListModel extends AbstractListModel<Object> implements ListitemRenderer<Object>, ListitemRendererExt {
|
public class SimpleListModel extends AbstractListModel<Object> implements ListitemRenderer<Object>, ListitemRendererExt, Sortable<Object> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -39,6 +43,10 @@ public class SimpleListModel extends AbstractListModel<Object> implements Listit
|
||||||
|
|
||||||
protected List<Object> list;
|
protected List<Object> list;
|
||||||
|
|
||||||
|
private Comparator<Object> _sorting;
|
||||||
|
|
||||||
|
private boolean _sortDir;
|
||||||
|
|
||||||
private int[] maxLength;
|
private int[] maxLength;
|
||||||
|
|
||||||
public SimpleListModel() {
|
public SimpleListModel() {
|
||||||
|
@ -50,6 +58,7 @@ public class SimpleListModel extends AbstractListModel<Object> implements Listit
|
||||||
this.list = (List<Object>)list;
|
this.list = (List<Object>)list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getElementAt(int index) {
|
public Object getElementAt(int index) {
|
||||||
if (index >= 0 && index < list.size())
|
if (index >= 0 && index < list.size())
|
||||||
return list.get(index);
|
return list.get(index);
|
||||||
|
@ -57,6 +66,7 @@ public class SimpleListModel extends AbstractListModel<Object> implements Listit
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getSize() {
|
public int getSize() {
|
||||||
return list.size();
|
return list.size();
|
||||||
}
|
}
|
||||||
|
@ -111,14 +121,17 @@ public class SimpleListModel extends AbstractListModel<Object> implements Listit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getControls() {
|
public int getControls() {
|
||||||
return DETACH_ON_RENDER;
|
return DETACH_ON_RENDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Listcell newListcell(Listitem item) {
|
public Listcell newListcell(Listitem item) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Listitem newListitem(Listbox listbox) {
|
public Listitem newListitem(Listbox listbox) {
|
||||||
ListItem item = new ListItem();
|
ListItem item = new ListItem();
|
||||||
item.applyProperties();
|
item.applyProperties();
|
||||||
|
@ -159,4 +172,20 @@ public class SimpleListModel extends AbstractListModel<Object> implements Listit
|
||||||
public int indexOf(Object value) {
|
public int indexOf(Object value) {
|
||||||
return list.indexOf(value);
|
return list.indexOf(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sort(Comparator<Object> cmpr, boolean ascending) {
|
||||||
|
_sorting = cmpr;
|
||||||
|
_sortDir = ascending;
|
||||||
|
Collections.sort(list, cmpr);
|
||||||
|
fireEvent(ListDataEvent.STRUCTURE_CHANGED, -1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSortDirection(Comparator<Object> cmpr) {
|
||||||
|
if (Objects.equals(_sorting, cmpr))
|
||||||
|
return _sortDir ?
|
||||||
|
"ascending" : "descending";
|
||||||
|
return "natural";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,11 +41,13 @@ import org.adempiere.webui.component.SimpleListModel;
|
||||||
import org.adempiere.webui.factory.ButtonFactory;
|
import org.adempiere.webui.factory.ButtonFactory;
|
||||||
import org.adempiere.webui.theme.ThemeManager;
|
import org.adempiere.webui.theme.ThemeManager;
|
||||||
import org.adempiere.webui.window.FDialog;
|
import org.adempiere.webui.window.FDialog;
|
||||||
|
import org.compiere.model.I_AD_Field;
|
||||||
import org.compiere.model.MField;
|
import org.compiere.model.MField;
|
||||||
import org.compiere.model.MRefList;
|
import org.compiere.model.MRefList;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.model.MTab;
|
import org.compiere.model.MTab;
|
||||||
import org.compiere.model.Query;
|
import org.compiere.model.Query;
|
||||||
|
import org.compiere.model.X_AD_Tab_Customization;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
|
@ -148,6 +150,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
EventListener<Event> mouseListener = new EventListener<Event>()
|
EventListener<Event> mouseListener = new EventListener<Event>()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onEvent(Event event) throws Exception
|
public void onEvent(Event event) throws Exception
|
||||||
{
|
{
|
||||||
if (Events.ON_DOUBLE_CLICK.equals(event.getName()))
|
if (Events.ON_DOUBLE_CLICK.equals(event.getName()))
|
||||||
|
@ -161,6 +164,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
//
|
//
|
||||||
EventListener<Event> actionListener = new EventListener<Event>()
|
EventListener<Event> actionListener = new EventListener<Event>()
|
||||||
{
|
{
|
||||||
|
@Override
|
||||||
public void onEvent(Event event) throws Exception {
|
public void onEvent(Event event) throws Exception {
|
||||||
migrateValueAcrossLists(event);
|
migrateValueAcrossLists(event);
|
||||||
}
|
}
|
||||||
|
@ -184,6 +188,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
|
|
||||||
actionListener = new EventListener<Event>()
|
actionListener = new EventListener<Event>()
|
||||||
{
|
{
|
||||||
|
@Override
|
||||||
public void onEvent(Event event) throws Exception {
|
public void onEvent(Event event) throws Exception {
|
||||||
migrateValueWithinYesList(event);
|
migrateValueWithinYesList(event);
|
||||||
}
|
}
|
||||||
|
@ -214,7 +219,10 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
listHead.setParent(noList);
|
listHead.setParent(noList);
|
||||||
listHeader = new ListHeader();
|
listHeader = new ListHeader();
|
||||||
listHeader.appendChild(noLabel);
|
listHeader.appendChild(noLabel);
|
||||||
|
listHeader.setSort("auto");
|
||||||
|
listHeader.setSortDirection("ascending");
|
||||||
|
//http://books.zkoss.org/wiki/ZK%20Configuration%20Reference/zk.xml/The%20Library%20Properties/org.zkoss.zul.listbox.autoSort
|
||||||
|
noList.setAttribute("org.zkoss.zul.listbox.autoSort", "true");
|
||||||
Hlayout noButtonLayout = new Hlayout();
|
Hlayout noButtonLayout = new Hlayout();
|
||||||
|
|
||||||
noButtonLayout.appendChild(bRemove);
|
noButtonLayout.appendChild(bRemove);
|
||||||
|
@ -268,6 +276,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
LayoutUtils.addSclass("dialog-footer", confirmPanel);
|
LayoutUtils.addSclass("dialog-footer", confirmPanel);
|
||||||
|
|
||||||
EventListener<Event> onClickListener = new EventListener<Event>() {
|
EventListener<Event> onClickListener = new EventListener<Event>() {
|
||||||
|
@Override
|
||||||
public void onEvent(Event event) throws Exception {
|
public void onEvent(Event event) throws Exception {
|
||||||
if (event.getTarget().equals(
|
if (event.getTarget().equals(
|
||||||
confirmPanel.getButton(ConfirmPanel.A_OK))) {
|
confirmPanel.getButton(ConfirmPanel.A_OK))) {
|
||||||
|
@ -298,7 +307,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
boolean baseLanguage = Env.isBaseLanguage(Env.getCtx(), "AD_Field");
|
boolean baseLanguage = Env.isBaseLanguage(Env.getCtx(), "AD_Field");
|
||||||
Query query = null;
|
Query query = null;
|
||||||
|
|
||||||
query = new Query(Env.getCtx(), MField.Table_Name, "AD_Tab_ID=? AND (IsDisplayed='Y' OR IsDisplayedGrid='Y') AND IsActive='Y'", null);
|
query = new Query(Env.getCtx(), I_AD_Field.Table_Name, "AD_Tab_ID=? AND (IsDisplayed='Y' OR IsDisplayedGrid='Y') AND IsActive='Y'", null);
|
||||||
query.setOrderBy("SeqNoGrid, Name, SeqNo");
|
query.setOrderBy("SeqNoGrid, Name, SeqNo");
|
||||||
query.setParameters(new Object [] {m_AD_Tab_ID});
|
query.setParameters(new Object [] {m_AD_Tab_ID});
|
||||||
query.setApplyAccessFilter(true);
|
query.setApplyAccessFilter(true);
|
||||||
|
@ -319,7 +328,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
if (baseLanguage)
|
if (baseLanguage)
|
||||||
name = field.getName();
|
name = field.getName();
|
||||||
else
|
else
|
||||||
name = field.get_Translation(MField.COLUMNNAME_Name);
|
name = field.get_Translation(I_AD_Field.COLUMNNAME_Name);
|
||||||
|
|
||||||
ListElement pp = new ListElement(key, name);
|
ListElement pp = new ListElement(key, name);
|
||||||
if (tableSeqs != null && tableSeqs.size() > 0 ) {
|
if (tableSeqs != null && tableSeqs.size() > 0 ) {
|
||||||
|
@ -359,7 +368,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
|
|
||||||
ValueNamePair pp = new ValueNamePair(null, null);
|
ValueNamePair pp = new ValueNamePair(null, null);
|
||||||
lstGridMode.addItem(pp);
|
lstGridMode.addItem(pp);
|
||||||
ValueNamePair[] list = MRefList.getList(Env.getCtx(), MTabCustomization.ISDISPLAYEDGRID_AD_Reference_ID, false);
|
ValueNamePair[] list = MRefList.getList(Env.getCtx(), X_AD_Tab_Customization.ISDISPLAYEDGRID_AD_Reference_ID, false);
|
||||||
for (int i = 0;i < list.length; i++ ) {
|
for (int i = 0;i < list.length; i++ ) {
|
||||||
lstGridMode.addItem(list[i]);
|
lstGridMode.addItem(list[i]);
|
||||||
if (m_tabcust != null && list[i].getValue().equals(m_tabcust.getIsDisplayedGrid()))
|
if (m_tabcust != null && list[i].getValue().equals(m_tabcust.getIsDisplayedGrid()))
|
||||||
|
@ -637,7 +646,6 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author eslatis
|
* @author eslatis
|
||||||
*
|
*
|
||||||
|
@ -652,6 +660,7 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onEvent(Event event) throws Exception {
|
public void onEvent(Event event) throws Exception {
|
||||||
if (event instanceof DropEvent)
|
if (event instanceof DropEvent)
|
||||||
{
|
{
|
||||||
|
@ -669,7 +678,6 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
Listbox listTo = (Listbox)endItem.getListbox();
|
Listbox listTo = (Listbox)endItem.getListbox();
|
||||||
endIndex = yesList.getIndexOfItem(endItem);
|
endIndex = yesList.getIndexOfItem(endItem);
|
||||||
migrateLists (listFrom,listTo,endIndex);
|
migrateLists (listFrom,listTo,endIndex);
|
||||||
|
|
||||||
}else if (startItem.getListbox() == endItem.getListbox() && startItem.getListbox() == yesList)
|
}else if (startItem.getListbox() == endItem.getListbox() && startItem.getListbox() == yesList)
|
||||||
{
|
{
|
||||||
List<ListElement> selObjects = new ArrayList<ListElement>();
|
List<ListElement> selObjects = new ArrayList<ListElement>();
|
||||||
|
@ -718,3 +726,4 @@ public class CustomizeGridViewPanel extends Panel
|
||||||
}
|
}
|
||||||
|
|
||||||
} //CustomizeGridViewPanel
|
} //CustomizeGridViewPanel
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue