📄 vcreatefrom.java
字号:
*/
abstract boolean save();
/*************************************************************************/
/**
* Action Listener
* @param e event
*/
public void actionPerformed(ActionEvent e)
{
Log.trace(Log.l3_Util, "VCreateFrom.actionPerformed " + e.getActionCommand());
// if (m_action)
// return;
// m_action = true;
// OK - Save
if (e.getActionCommand().equals(ConfirmPanel.A_OK))
{
if (save())
dispose();
}
// Cancel
else if (e.getActionCommand().equals(ConfirmPanel.A_CANCEL))
{
dispose();
}
// m_action = false;
} // actionPerformed
/**
* Table Model Listener
* @param e event
*/
public void tableChanged (TableModelEvent e)
{
int type = -1;
if (e != null)
{
type = e.getType();
if (type != e.UPDATE)
return;
}
Log.trace(Log.l3_Util, "VCreateFrom.tableChanged " + type);
info();
} // tableChanged
/*************************************************************************/
/**
* Load BPartner Field
* @param forInvoice true if Invoices are to be created, false receipts
* @throws Exception if Lookups cannot be initialized
*/
protected void initBPartner (boolean forInvoice) throws Exception
{
// load BPartner
int AD_Column_ID = 3499; // C_Invoice.C_BPartner_ID
MLookup lookup = MLookupFactory.create (Env.getCtx(), AD_Column_ID, m_WindowNo,
DisplayType.Search, false);
bPartnerField = new VLookup ("C_BPartner_ID", true, false, true,
lookup, DisplayType.Search, m_WindowNo);
//
int C_BPartner_ID = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "C_BPartner_ID");
bPartnerField.setValue(new Integer(C_BPartner_ID));
// initial loading
initBPartnerOIS(C_BPartner_ID, forInvoice);
} // initBPartner
/**
* Load PBartner dependent Order/Invoice/Shipment Field.
* @param C_BPartner_ID BPartner
* @param forInvoice for invoice
*/
protected void initBPartnerOIS (int C_BPartner_ID, boolean forInvoice)
{
Log.trace(Log.l3_Util, "VCreateFrom.initBPartnerOIS BPartner=" + C_BPartner_ID);
KeyNamePair pp = new KeyNamePair(0,"");
// load PO Orders - Closed, Completed
orderField.removeActionListener(this);
orderField.removeAllItems();
orderField.addItem(pp);
// Display
StringBuffer display = new StringBuffer("o.DocumentNo||' - ' ||")
.append(DB.TO_CHAR("o.DateOrdered", DisplayType.Date, Env.getAD_Language(Env.getCtx())))
.append("||' - '||")
.append(DB.TO_CHAR("o.GrandTotal", DisplayType.Amount, Env.getAD_Language(Env.getCtx())));
//
String column = "m.M_InOutLine_ID";
if (forInvoice)
column = "m.C_InvoiceLine_ID";
StringBuffer sql = new StringBuffer("SELECT o.C_Order_ID,").append(display)
.append(" FROM C_Order o "
+ "WHERE o.C_BPartner_ID=? AND o.IsSOTrx='N' AND o.DocStatus IN ('CL','CO')"
+ " AND o.C_Order_ID IN "
+ "(SELECT ol.C_Order_ID FROM C_OrderLine ol"
+ " LEFT OUTER JOIN M_MatchPO m ON (ol.C_OrderLine_ID=m.C_OrderLine_ID) "
+ "GROUP BY ol.C_Order_ID,ol.C_OrderLine_ID, ol.QtyOrdered,").append(column)
.append(" HAVING (ol.QtyOrdered <> SUM(m.Qty) AND ").append(column)
.append(" IS NOT NULL) OR ").append(column).append(" IS NULL) "
+ "ORDER BY o.DateOrdered");
try
{
PreparedStatement pstmt = DB.prepareStatement(sql.toString());
pstmt.setInt(1, C_BPartner_ID);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
pp = new KeyNamePair(rs.getInt(1), rs.getString(2));
orderField.addItem(pp);
}
rs.close();
pstmt.close();
}
catch (SQLException e)
{
Log.error ("VCreateFrom.initIOS - Order\nSQL=" + sql.toString(), e);
}
orderField.setSelectedIndex(0);
orderField.addActionListener(this);
initBPDetails(C_BPartner_ID);
} // initBPartnerOIS
/**
* Load Data - Order
* @param C_Order_ID Order
* @param forInvoice true if for invoice vs. delivery qty
*/
protected void loadOrder (int C_Order_ID, boolean forInvoice)
{
/**
* Selected - 0
* Qty - 1
* C_UOM_ID - 2
* M_Product_ID - 3
* OrderLine - 4
* ShipmentLine - 5
* InvoiceLine - 6
*/
Log.trace(Log.l3_Util, "VCreateFrom.loadOrder - " + C_Order_ID);
m_C_Order_ID = C_Order_ID; // save
Vector data = new Vector();
StringBuffer sql = new StringBuffer("SELECT l.QtyOrdered-SUM(NVL(m.Qty,0)),"
+ " l.C_UOM_ID, uom.UOMSymbol," // 2..3
+ " COALESCE(l.M_Product_ID,0),COALESCE(p.Name,c.Name)," // 4..5
+ " l.C_OrderLine_ID,l.Line " // 6..7
+ "FROM C_OrderLine l"
+ " LEFT OUTER JOIN M_MatchPO m ON (l.C_OrderLine_ID=m.C_OrderLine_ID AND ");
sql.append(forInvoice ? "m.C_InvoiceLine_ID" : "m.M_InOutLine_ID");
sql.append(" IS NOT NULL)")
.append(" LEFT OUTER JOIN M_Product p ON (l.M_Product_ID=p.M_Product_ID)"
+ " LEFT OUTER JOIN C_Charge c ON (l.C_Charge_ID=c.C_Charge_ID)");
if (Env.isBaseLanguage(Env.getCtx(), "C_UOM"))
sql.append(" LEFT OUTER JOIN C_UOM uom ON (l.C_UOM_ID=uom.C_UOM_ID)");
else
sql.append(" LEFT OUTER JOIN C_UOM_Trl uom ON (l.C_UOM_ID=uom.C_UOM_ID AND uom.AD_Language='")
.append(Env.getAD_Language(Env.getCtx())).append("')");
//
sql.append(" WHERE l.C_Order_ID=? " // #1
+ "GROUP BY l.QtyOrdered, l.C_UOM_ID,uom.UOMSymbol, l.M_Product_ID,p.Name,c.Name, l.Line,l.C_OrderLine_ID "
+ "ORDER BY l.Line");
//
Log.trace(Log.l6_Database, "VCreateFrom.loadOrder", sql);
try
{
PreparedStatement pstmt = DB.prepareStatement(sql.toString());
pstmt.setInt(1, C_Order_ID);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
Vector line = new Vector();
line.add(new Boolean(false)); // 0-Selection
line.add(new Double(rs.getDouble(1))); // 1-Qty
KeyNamePair pp = new KeyNamePair(rs.getInt(2), rs.getString(3).trim());
line.add(pp); // 2-UOM
pp = new KeyNamePair(rs.getInt(4), rs.getString(5));
line.add(pp); // 3-Product
pp = new KeyNamePair(rs.getInt(6), rs.getString(7));
line.add(pp); // 4-Order
line.add(null); // 5-Ship
line.add(null); // 6-Invoice
data.add(line);
}
rs.close();
pstmt.close();
}
catch (SQLException e)
{
Log.error("VCreateFrom.loadOrder\nSQL=" + sql.toString(), e);
}
loadTableOIS (data);
} // LoadOrder
/**
* Load Order/Invoice/Shipment data into Table
* @param data data
*/
protected void loadTableOIS (Vector data)
{
// Header Info
Vector columnNames = new Vector(7);
columnNames.add(Msg.getMsg(Env.getCtx(), "Select"));
columnNames.add(Msg.translate(Env.getCtx(), "Quantity"));
columnNames.add(Msg.translate(Env.getCtx(), "C_UOM_ID"));
columnNames.add(Msg.translate(Env.getCtx(), "M_Product_ID"));
columnNames.add(Msg.getElement(Env.getCtx(), "C_Order_ID", false));
columnNames.add(Msg.getElement(Env.getCtx(), "M_InOut_ID", false));
columnNames.add(Msg.getElement(Env.getCtx(), "C_Invoice_ID", false));
// Remove previous listeners
dataTable.getModel().removeTableModelListener(this);
// Set Model
DefaultTableModel model = new DefaultTableModel(data, columnNames);
model.addTableModelListener(this);
dataTable.setModel(model);
//
dataTable.setColumnClass(0, Boolean.class, false); // 0-Selection
dataTable.setColumnClass(1, Double.class, true); // 1-Qty
dataTable.setColumnClass(2, String.class, true); // 2-UOM
dataTable.setColumnClass(3, String.class, true); // 3-Product
dataTable.setColumnClass(4, String.class, true); // 4-Order
dataTable.setColumnClass(5, String.class, true); // 5-Ship
dataTable.setColumnClass(6, String.class, true); // 6-Invoice
// Table UI
dataTable.autoSize();
} // loadOrder
} // VCreateFrom
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -