📄 vinventorymovegen.java
字号:
/**
* Dispose
*/
public void dispose() {
if (m_frame != null)
m_frame.dispose();
m_frame = null;
} // dispose
/**
* Action Listener
* @param e event
*/
public void actionPerformed(ActionEvent e) {
log.info("Cmd=" + e.getActionCommand());
//
if (e.getActionCommand().equals(ConfirmPanel.A_CANCEL)) {
dispose();
return;
}
//
m_whereClause = saveSelection();
System.out.println("m_whereClause: " + m_whereClause);
if (m_whereClause.length() > 0 && m_selectionActive &&
locatorField.getM_Locator_ID() != 0) {
generateInventoryMovements();
} else if (m_whereClause.length() <= 0) {
ADialog.error(m_WindowNo, this,"NoProductionLineSelected");
return;
} else if (locatorField.getM_Locator_ID() == 0) {
ADialog.error(m_WindowNo, this, "LocatorEmpty");
return;
} else {
dispose();
}
} // actionPerformed
/**
* Vetoable Change Listener - requery
* @param e event
*/
public void vetoableChange(PropertyChangeEvent e) {
log.info(e.getPropertyName() + "=" + e.getNewValue());
if (e.getPropertyName().equals("M_Production_ID"))
m_M_Production_ID = e.getNewValue();
executeQuery();
} // vetoableChange
/**
* Change Listener (Tab changed)
* @param e event
*/
public void stateChanged(ChangeEvent e) {
int index = tabbedPane.getSelectedIndex();
m_selectionActive = (index == 0);
} // stateChanged
/**
* Table Model Listener
* @param e event
*/
public void tableChanged(TableModelEvent e) {
int rowsSelected = 0;
int rows = miniTable.getRowCount();
for (int i = 0; i < rows; i++) {
IDColumn id = (IDColumn) miniTable.getValueAt(i, 0); // ID in column 0
if (id != null && id.isSelected())
rowsSelected++;
}
statusBar.setStatusDB(" " + rowsSelected + " ");
} // tableChanged
/**
* Save Selection & return selecion Query or ""
* @return where clause like M_ProductionLine_ID IN (...)
*/
private String saveSelection() {
log.info("");
// ID selection may be pending
miniTable.editingStopped(new ChangeEvent(this));
// Array of Integers
ArrayList results = new ArrayList();
// Get selected entries
int rows = miniTable.getRowCount();
for (int i = 0; i < rows; i++) {
IDColumn id = (IDColumn) miniTable.getValueAt(i, 0); // ID in column 0
// log.fine( "Row=" + i + " - " + id);
if (id != null && id.isSelected())
results.add(id.getRecord_ID());
}
if (results.size() == 0)
return "";
// Query String
String keyColumn = "M_ProductionLine_ID";
StringBuffer sb = new StringBuffer(keyColumn);
if (results.size() > 1)
sb.append(" IN (");
else
sb.append("=");
// Add elements
for (int i = 0; i < results.size(); i++) {
if (i > 0)
sb.append(",");
if (keyColumn.endsWith("_ID"))
sb.append(results.get(i).toString());
else
sb.append("'").append(results.get(i).toString());
}
if (results.size() > 1)
sb.append(")");
//
log.config(sb.toString());
return sb.toString();
} // saveSelection
/**************************************************************************
* Generate Inventory Move.
*/
private void generateInventoryMovements() {
try{
String trxName = null;
Trx trx = null;
// Reset Selection
String sql = "UPDATE M_ProductionLine SET IsSelected = 'N' "
+ "WHERE IsSelected='Y'"
+ " AND AD_Client_ID=" +
Env.getAD_Client_ID(Env.getCtx());
int no = DB.executeUpdate(sql, trxName);
log.config("Reset=" + no);
// Set Selection
sql = "UPDATE M_ProductionLine SET IsSelected='Y' WHERE " +
m_whereClause;
no = DB.executeUpdate(sql, trxName);
log.fine(sql);
if (no == 0) {
String msg = "No ProductionLines"; // not translated!
log.config(msg);
info.setText(msg);
return;
}
log.config("Set=" + no);
m_selectionActive = false; // prevents from being called twice
statusBar.setStatusLine(Msg.getMsg(Env.getCtx(),
"InventoryMoveGenerateGen"));
statusBar.setStatusDB(String.valueOf(no));
// Prepare Process
ProcessInfo pi = new ProcessInfo("", 345); // HARDCODED Process: M_InventoryMove_Generate
MPInstance mpi = new MPInstance(Env.getCtx(), pi.getAD_Process_ID(),
pi.getRecord_ID());
mpi.save();
pi.setAD_PInstance_ID(mpi.getAD_PInstance_ID());
if (pi.getAD_PInstance_ID() == 0) {
info.setText(Msg.getMsg(Env.getCtx(), "ProcessNoInstance"));
return;
}
// Add Parameter - Selection=Y
MPInstancePara ip = new MPInstancePara(mpi, 10);
ip.setParameter("Selection", "Y");
if (!ip.save()) {
String msg = "No Parameter added"; // not translated
info.setText(msg);
log.log(Level.SEVERE, msg);
return;
}
// Add Parameter - M_Locator_ID
ip = new MPInstancePara(mpi, 20);
ip.setParameter("M_Locator_ID", locatorField.getM_Locator_ID());
if (!ip.save()) {
String msg = "No Parameter added"; // not translated
info.setText(msg);
log.log(Level.SEVERE, msg);
return;
}
// Execute Process
ProcessCtl worker = new ProcessCtl(this, pi, trx);
worker.start(); // complete tasks in unlockUI / M_InventoryMove_Generate
}catch(Exception ex){
System.out.println(ex);
}
//
} // generateInventoryMovements
/**
* Complete generating inventory movements.
* Called from Unlock UI
* @param pi process info
*/
private void generateInventoryMove_complete(ProcessInfo pi) {
// Switch Tabs
tabbedPane.setSelectedIndex(1);
//
ProcessInfoUtil.setLogFromDB(pi);
StringBuffer iText = new StringBuffer();
iText.append("<b>").append(pi.getSummary())
.append("</b><br>(")
.append(Msg.getMsg(Env.getCtx(), "InventoryMoveGenerateInfo"))
// Inventory Movements are generated depending on the Delivery Rule selection in the Production
.append(")<br>")
.append(pi.getLogInfo(true));
info.setText(iText.toString());
// Reset Selection
String sql = "UPDATE M_ProductionLine SET IsSelected='N' WHERE " +
m_whereClause;
int no = DB.executeUpdate(sql);
log.config("VInventoryMoveGen.generateInventoryMove_complete - Reset=" +
no);
// Get results
int[] ids = pi.getIDs();
if (ids == null || ids.length == 0)
return;
log.config(
"VInventoryMoveGen.generateInventoryMove_complete - PrintItems=" +
ids.length);
} // generateShipments_complete
/**************************************************************************
* Lock User Interface.
* Called from the Worker before processing
* @param pi process info
*/
public void lockUI(ProcessInfo pi) {
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
this.setEnabled(false);
} // lockUI
/**
* Unlock User Interface.
* Called from the Worker when processing is done
* @param pi result of execute ASync call
*/
public void unlockUI(ProcessInfo pi) {
this.setEnabled(true);
this.setCursor(Cursor.getDefaultCursor());
//
generateInventoryMove_complete(pi);
} // unlockUI
/**
* Is the UI locked (Internal method)
* @return true, if UI is locked
*/
public boolean isUILocked() {
return this.isEnabled();
} // isUILocked
/**
* Method to be executed async.
* Called from the Worker
* @param pi ProcessInfo
*/
public void executeASync(ProcessInfo pi) {
} // executeASync
} // VInventoryMoveGen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -