📄 vinvoicegen.java
字号:
m_frame.dispose();
} // dispose
/**
* Action Listener
* @param e event
*/
public void actionPerformed (ActionEvent e)
{
Log.trace(Log.l1_User, "VInvoiceGen.actionPerformed - " + e.getActionCommand());
//
if (e.getActionCommand().equals(ConfirmPanel.A_CANCEL))
{
dispose();
return;
}
//
m_whereClause = saveSelection();
if (m_whereClause.length() > 0 && m_selectionActive)
generateInvoices ();
else
dispose();
} // actionPerformed
/**
* Vetoable Change Listener - requery
* @param e event
*/
public void vetoableChange(PropertyChangeEvent e)
{
Log.trace(Log.l1_User, "VInvoiceGen.vetoableChange - "
+ e.getPropertyName() + "=" + e.getNewValue());
if (e.getPropertyName().equals("AD_Org_ID"))
m_AD_Org_ID = e.getNewValue();
if (e.getPropertyName().equals("C_BPartner_ID"))
{
m_C_BPartner_ID = e.getNewValue();
fBPartner.setValue(m_C_BPartner_ID); // display value
}
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 C_Order_ID IN (...)
*/
private String saveSelection()
{
Log.trace(Log.l1_User, "VInvoiceGen.saveSelection");
// 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.trace(Log.l6_Database, "Row=" + i + " - " + id);
if (id != null && id.isSelected())
results.add(id.getRecord_ID());
}
if (results.size() == 0)
return "";
// Query String
String keyColumn = "C_Order_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.trace(Log.l4_Data, "VInvoiceGen.saveSelection", sb.toString());
return sb.toString();
} // saveSelection
/*************************************************************************/
/**
* Generate Invoices
*/
private void generateInvoices ()
{
// Reset Selection
String SQL = "UPDATE C_Order SET IsSelected = 'N' WHERE IsSelected='Y'";
SQL = Access.addRWAccessSQL(Env.getCtx(), SQL, "C_Order", false);
int no = DB.executeUpdate(SQL);
Log.trace(Log.l3_Util, "VInvoiceGen.generateInvoices - Reset=" + no);
// Set Selection
SQL = "UPDATE C_Order SET IsSelected = 'Y' WHERE " + m_whereClause;
no = DB.executeUpdate(SQL);
if (no == 0)
{
String msg = "No Invoices"; // not translated!
Log.trace(Log.l2_Sub, "VInvoiceGen.generateInvoice", msg);
info.setText(msg);
return;
}
Log.trace(Log.l3_Util, "VInvoiceGen.generateInvoices - Set=" + no);
m_selectionActive = false; // prevents from being called twice
statusBar.setStatusLine(Msg.getMsg(Env.getCtx(), "InvGenerateGen"));
statusBar.setStatusDB(String.valueOf(no));
// Prepare Process
ProcessInfo pi = new ProcessInfo ("", 134, 0); // HARDCODED C_Invoice_Create0
pi.AD_PInstance_ID = ProcessCtl.getInstanceID (m_WindowNo, pi.AD_Process_ID, pi.Record_ID);
if (pi.AD_PInstance_ID == 0)
{
info.setText(Msg.getMsg(Env.getCtx(), "ProcessNoInstance"));
return;
}
// Add Parameter
SQL = "INSERT INTO AD_PInstance_Para (AD_PInstance_ID,SeqNo,ParameterName, P_STRING) "
+ "VALUES (" + pi.AD_PInstance_ID + ",1,'Selection', 'Y')";
no = DB.executeUpdate(SQL);
if (no == 0)
{
String msg = "No Parameter added"; // not translated
info.setText(msg);
Log.error("VInvoiceGen.generateInvoice - " + msg);
return;
}
// Execute Process
ProcessCtl worker = new ProcessCtl(this, pi);
worker.start(); // complete tasks in unlockUI / generateInvoice_complete
} // generateInvoices
/**
* Complete generating invoices.
* Called from Unlock UI
* @param pi process info
*/
private void generateInvoice_complete (ProcessInfo pi)
{
// Switch Tabs
tabbedPane.setSelectedIndex(1);
//
pi.setProcessLog ();
info.setText(pi.Summary);
info.append("\n(");
info.append(Msg.getMsg(Env.getCtx(), "InvGenerateInfo"));
// Invoices are generated depending on the Invoicing Rule selection in the Order
info.append(")");
// Reset Selection
String sql = "UPDATE C_Order SET IsSelected = 'N' WHERE " + m_whereClause;
int no = DB.executeUpdate(sql);
Log.trace(Log.l3_Util, "VInvoiceGen.generateInvoices_complete - Reset=" + no);
// Get results
ArrayList items = pi.getIDList();
if (items.size() == 0)
return;
confirmPanelGen.getOKButton().setEnabled(false);
// OK to print invoices
if (ADialog.ask(m_WindowNo, this, "PrintInvoices"))
{
info.append("\n\n" + Msg.getMsg(Env.getCtx(), "PrintInvoices"));
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
do
{
// Loop through all items
for (int i = 0; i < items.size(); i++)
{
Integer AD_Invoice_ID = (Integer)items.get(i);
ReportCtl.startDocumentPrint(ReportCtl.INVOICE, AD_Invoice_ID.intValue(), true);
}
}
while (!ADialog.ask(m_WindowNo, this, "PrintoutOK?"));
setCursor(Cursor.getDefaultCursor());
} // OK to print invoices
//
confirmPanelGen.getOKButton().setEnabled(true);
} // generateInvoices_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());
//
generateInvoice_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
} // VInvoiceGen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -