📄 infoproduct.java
字号:
if (pl != null)
M_PriceList_Version_ID = pl.getKey();
if (M_PriceList_Version_ID != 0)
where.append(" AND pr.M_PriceList_Version_ID=?");
// Product Attribute Search
if (m_pAttributeWhere != null)
{
where.append(m_pAttributeWhere);
return where.toString();
}
// => Value
String value = fieldValue.getText().toUpperCase();
if (!(value.equals("") || value.equals("%")))
where.append(" AND UPPER(p.Value) LIKE ?");
// => Name
String name = fieldName.getText().toUpperCase();
if (!(name.equals("") || name.equals("%")))
where.append(" AND UPPER(p.Name) LIKE ?");
// => UPC
String upc = fieldUPC.getText().toUpperCase();
if (!(upc.equals("") || upc.equals("%")))
where.append(" AND UPPER(p.UPC) LIKE ?");
// => SKU
String sku = fieldSKU.getText().toUpperCase();
if (!(sku.equals("") || sku.equals("%")))
where.append(" AND UPPER(p.SKU) LIKE ?");
return where.toString();
} // getSQLWhere
/**
* Set Parameters for Query
* (as defined in getSQLWhere)
*
* @param pstmt pstmt
* @param forCount for counting records
* @throws SQLException
*/
void setParameters(PreparedStatement pstmt, boolean forCount) throws SQLException
{
int index = 1;
// => Warehouse
int M_Warehouse_ID = 0;
KeyNamePair wh = (KeyNamePair)pickWarehouse.getSelectedItem();
if (wh != null)
M_Warehouse_ID = wh.getKey();
if (!forCount) // parameters in select
{
for (int i = 0; i < p_layout.length; i++)
{
if (p_layout[i].getColSQL().indexOf("?") != -1)
pstmt.setInt(index++, M_Warehouse_ID);
}
}
log.fine("M_Warehouse_ID=" + M_Warehouse_ID + " (" + (index-1) + "*)");
// => PriceList
int M_PriceList_Version_ID = 0;
KeyNamePair pl = (KeyNamePair)pickPriceList.getSelectedItem();
if (pl != null)
M_PriceList_Version_ID = pl.getKey();
if (M_PriceList_Version_ID != 0)
{
pstmt.setInt(index++, M_PriceList_Version_ID);
log.fine("M_PriceList_Version_ID=" + M_PriceList_Version_ID);
}
// Rest of Parameter in Query for Attribute Search
if (m_pAttributeWhere != null)
return;
// => Value
String value = fieldValue.getText().toUpperCase();
if (!(value.equals("") || value.equals("%")))
{
if (!value.endsWith("%"))
value += "%";
pstmt.setString(index++, value);
log.fine("Value: " + value);
}
// => Name
String name = fieldName.getText().toUpperCase();
if (!(name.equals("") || name.equals("%")))
{
if (!name.endsWith("%"))
name += "%";
pstmt.setString(index++, name);
log.fine("Name: " + name);
}
// => UPC
String upc = fieldUPC.getText().toUpperCase();
if (!(upc.equals("") || upc.equals("%")))
{
if (!upc.endsWith("%"))
upc += "%";
pstmt.setString(index++, upc);
log.fine("UPC: " + upc);
}
// => SKU
String sku = fieldSKU.getText().toUpperCase();
if (!(sku.equals("") || sku.equals("%")))
{
if (!sku.endsWith("%"))
sku += "%";
pstmt.setString(index++, sku);
log.fine("SKU: " + sku);
}
} // setParameters
/**************************************************************************
* Action Listner
*
* @param e event
*/
public void actionPerformed (ActionEvent e)
{
// don't requery if fieldValue and fieldName are empty
if ((e.getSource() == pickWarehouse || e.getSource() == pickPriceList)
&& (fieldValue.getText().length() == 0 && fieldName.getText().length() == 0))
return;
// Product Attribute Search
if (e.getSource().equals(m_InfoPAttributeButton))
{
cmd_InfoPAttribute();
return;
}
m_pAttributeWhere = null;
// Query Product Attribure Instance
int row = p_table.getSelectedRow();
if (e.getSource().equals(m_PAttributeButton) && row != -1)
{
Integer productInteger = getSelectedRowKey();
String productName = (String)p_table.getValueAt(row, INDEX_NAME);
KeyNamePair warehouse = (KeyNamePair)pickWarehouse.getSelectedItem();
if (productInteger == null || productInteger.intValue() == 0 || warehouse == null)
return;
String title = warehouse.getName() + " - " + productName;
PAttributeInstance pai = new PAttributeInstance (this, title,
warehouse.getKey(), 0, productInteger.intValue(), m_C_BPartner_ID);
m_M_AttributeSetInstance_ID = pai.getM_AttributeSetInstance_ID();
if (m_M_AttributeSetInstance_ID != -1)
dispose(true);
return;
}
//
super.actionPerformed(e);
} // actionPerformed
/**
* Enable PAttribute if row selected/changed
*/
void enableButtons ()
{
m_M_AttributeSetInstance_ID = -1;
if (m_PAttributeButton != null)
{
int row = p_table.getSelectedRow();
boolean enabled = false;
if (row >= 0)
{
Object value = p_table.getValueAt(row, INDEX_PATTRIBUTE);
enabled = Boolean.TRUE.equals(value);
}
m_PAttributeButton.setEnabled(enabled);
}
super.enableButtons();
} // enableButtons
/**
* Query per Product Attribute.
* <code>
* Available synonyms:
* M_Product p
* M_ProductPrice pr
* M_AttributeSet pa
* </code>
*/
private void cmd_InfoPAttribute()
{
InfoPAttribute ia = new InfoPAttribute(this);
m_pAttributeWhere = ia.getWhereClause();
if (m_pAttributeWhere != null)
executeQuery();
} // cmdInfoAttribute
/**
* Show History
*/
void showHistory()
{
log.info("");
Integer M_Product_ID = getSelectedRowKey();
if (M_Product_ID == null)
return;
KeyNamePair kn = (KeyNamePair)pickWarehouse.getSelectedItem();
int M_Warehouse_ID = kn.getKey();
int M_AttributeSetInstance_ID = m_M_AttributeSetInstance_ID;
if (m_M_AttributeSetInstance_ID < -1) // not selected
M_AttributeSetInstance_ID = 0;
//
InvoiceHistory ih = new InvoiceHistory (this, 0,
M_Product_ID.intValue(), M_Warehouse_ID, M_AttributeSetInstance_ID);
ih.setVisible(true);
ih = null;
} // showHistory
/**
* Has History
*
* @return true (has history)
*/
boolean hasHistory()
{
return true;
} // hasHistory
/**
* Zoom
*/
void zoom()
{
log.info("");
Integer M_Product_ID = getSelectedRowKey();
if (M_Product_ID == null)
return;
// AEnv.zoom(MProduct.Table_ID, M_Product_ID.intValue(), true); // SO
MQuery query = new MQuery("M_Product");
query.addRestriction("M_Product_ID", MQuery.EQUAL, M_Product_ID);
query.setRecordCount(1);
int AD_WindowNo = getAD_Window_ID("M_Product", true); // SO
zoom (AD_WindowNo, query);
} // zoom
/**
* Has Zoom
* @return (has zoom)
*/
boolean hasZoom()
{
return true;
} // hasZoom
/**
* Customize
*/
void customize()
{
log.info("");
} // customize
/**
* Has Customize
* @return false (no customize)
*/
boolean hasCustomize()
{
return false; // for now
} // hasCustomize
/**
* Save Selection Settings for PriceList
*/
void saveSelectionDetail()
{
// publish for Callout to read
Integer ID = getSelectedRowKey();
Env.setContext(Env.getCtx(), Env.WINDOW_INFO, Env.TAB_INFO, "M_Product_ID", ID == null ? "0" : ID.toString());
KeyNamePair kn = (KeyNamePair)pickPriceList.getSelectedItem();
Env.setContext(Env.getCtx(), Env.WINDOW_INFO, Env.TAB_INFO, "M_PriceList_Version_ID", kn.getID());
kn = (KeyNamePair)pickWarehouse.getSelectedItem();
Env.setContext(Env.getCtx(), Env.WINDOW_INFO, Env.TAB_INFO, "M_Warehouse_ID", kn.getID());
//
if (m_M_AttributeSetInstance_ID == -1) // not selected
Env.setContext(Env.getCtx(), Env.WINDOW_INFO, Env.TAB_INFO, "M_AttributeSetInstance_ID", "0");
else
Env.setContext(Env.getCtx(), Env.WINDOW_INFO, Env.TAB_INFO, "M_AttributeSetInstance_ID", String.valueOf(m_M_AttributeSetInstance_ID));
} // saveSelectionDetail
/**
* Get Product Layout
*
* @return array of Column_Info
*/
private Info_Column[] getProductLayout()
{
if (s_productLayout != null)
return s_productLayout;
// Euro 13
MClient client = MClient.get(Env.getCtx());
if ("FRIE".equals(client.getValue()))
{
final Info_Column[] frieLayout = {
new Info_Column(" ", "p.M_Product_ID", IDColumn.class),
// new Info_Column(Msg.translate(Env.getCtx(), "Value"), "p.Value", String.class),
new Info_Column(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class),
new Info_Column(Msg.translate(Env.getCtx(), "QtyAvailable"), "bomQtyAvailable(p.M_Product_ID,?,0) AS QtyAvailable", Double.class, true, true, null),
new Info_Column(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class),
new Info_Column(Msg.translate(Env.getCtx(), "PriceStd"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd", BigDecimal.class),
new Info_Column("Einzel MWSt", "pr.PriceStd * 1.16", BigDecimal.class),
new Info_Column("Einzel kompl", "(pr.PriceStd+13) * 1.16", BigDecimal.class),
new Info_Column("Satz kompl", "((pr.PriceStd+13) * 1.16) * 4", BigDecimal.class),
new Info_Column(Msg.translate(Env.getCtx(), "QtyOnHand"), "bomQtyOnHand(p.M_Product_ID,?,0) AS QtyOnHand", Double.class),
new Info_Column(Msg.translate(Env.getCtx(), "QtyReserved"), "bomQtyReserved(p.M_Product_ID,?,0) AS QtyReserved", Double.class),
new Info_Column(Msg.translate(Env.getCtx(), "QtyOrdered"), "bomQtyOrdered(p.M_Product_ID,?,0) AS QtyOrdered", Double.class),
new Info_Column(Msg.translate(Env.getCtx(), "Discontinued").substring(0, 1), "p.Discontinued", Boolean.class),
new Info_Column(Msg.translate(Env.getCtx(), "Margin"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin", BigDecimal.class),
new Info_Column(Msg.translate(Env.getCtx(), "PriceLimit"), "bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit", BigDecimal.class),
new Info_Column(Msg.translate(Env.getCtx(), "IsInstanceAttribute"), "pa.IsInstanceAttribute", Boolean.class)
};
INDEX_NAME = 2;
INDEX_PATTRIBUTE = frieLayout.length - 1; // last item
s_productLayout = frieLayout;
return s_productLayout;
}
//
if (s_productLayout == null)
{
ArrayList<Info_Column> list = new ArrayList<Info_Column>();
list.add(new Info_Column(" ", "p.M_Product_ID", IDColumn.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Discontinued"), "p.Discontinued", Boolean.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Value"), "p.Value", String.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyAvailable"), "bomQtyAvailable(p.M_Product_ID,?,0) AS QtyAvailable", Double.class, true, true, null));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceStd"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd", BigDecimal.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyOnHand"), "bomQtyOnHand(p.M_Product_ID,?,0) AS QtyOnHand", Double.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyReserved"), "bomQtyReserved(p.M_Product_ID,?,0) AS QtyReserved", Double.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyOrdered"), "bomQtyOrdered(p.M_Product_ID,?,0) AS QtyOrdered", Double.class));
if (isUnconfirmed())
{
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyUnconfirmed"), "(SELECT SUM(c.TargetQty) FROM M_InOutLineConfirm c INNER JOIN M_InOutLine il ON (c.M_InOutLine_ID=il.M_InOutLine_ID) INNER JOIN M_InOut i ON (il.M_InOut_ID=i.M_InOut_ID) WHERE c.Processed='N' AND i.M_Warehouse_ID=? AND il.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmed", Double.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "QtyUnconfirmedMove"), "(SELECT SUM(c.TargetQty) FROM M_MovementLineConfirm c INNER JOIN M_MovementLine ml ON (c.M_MovementLine_ID=ml.M_MovementLine_ID) INNER JOIN M_Locator l ON (ml.M_LocatorTo_ID=l.M_Locator_ID) WHERE c.Processed='N' AND l.M_Warehouse_ID=? AND ml.M_Product_ID=p.M_Product_ID) AS QtyUnconfirmedMove", Double.class));
}
list.add(new Info_Column(Msg.translate(Env.getCtx(), "Margin"), "bomPriceStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin", BigDecimal.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "PriceLimit"), "bomPriceLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit", BigDecimal.class));
list.add(new Info_Column(Msg.translate(Env.getCtx(), "IsInstanceAttribute"), "pa.IsInstanceAttribute", Boolean.class));
s_productLayout = new Info_Column[list.size()];
list.toArray(s_productLayout);
INDEX_NAME = 3;
INDEX_PATTRIBUTE = s_productLayout.length - 1; // last item
}
return s_productLayout;
} // getProductLayout
/**
* System has Unforfirmed records
* @return true if unconfirmed
*/
private boolean isUnconfirmed()
{
int no = DB.getSQLValue(null,
"SELECT COUNT(*) FROM M_InOutLineConfirm WHERE AD_Client_ID=?",
Env.getAD_Client_ID(Env.getCtx()));
if (no > 0)
return true;
no = DB.getSQLValue(null,
"SELECT COUNT(*) FROM M_MovementLineConfirm WHERE AD_Client_ID=?",
Env.getAD_Client_ID(Env.getCtx()));
return no > 0;
} // isUnconfirmed
} // InfoProduct
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -