📄 vinvoicegen.java
字号:
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.info(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.info("");
// ID selection may be pending
miniTable.editingStopped(new ChangeEvent(this));
// Array of Integers
ArrayList<Integer> results = new ArrayList<Integer>();
// 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 = "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.config(sb.toString());
return sb.toString();
} // saveSelection
/**************************************************************************
* Generate Invoices
*/
private void generateInvoices ()
{
// String trxName = Trx.createTrxName("IVG");
// Trx trx = Trx.get(trxName, true); trx needs to be committed too
String trxName = null;
Trx trx = null;
// Reset Selection
String sql = "UPDATE C_Order SET IsSelected = 'N' WHERE IsSelected='Y'"
+ " AND AD_Client_ID=" + Env.getAD_Client_ID(Env.getCtx())
+ " AND AD_Org_ID=" + Env.getAD_Org_ID(Env.getCtx());
int no = DB.executeUpdate(sql, trxName);
log.config("Reset=" + no);
// Set Selection
sql = "UPDATE C_Order SET IsSelected = 'Y' WHERE " + m_whereClause;
no = DB.executeUpdate(sql, trxName);
if (no == 0)
{
String msg = "No Invoices"; // 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(), "InvGenerateGen"));
statusBar.setStatusDB(String.valueOf(no));
// Prepare Process
int AD_Process_ID = 134; // HARDCODED C_InvoiceCreate
MPInstance instance = new MPInstance(Env.getCtx(), AD_Process_ID, 0);
if (!instance.save())
{
info.setText(Msg.getMsg(Env.getCtx(), "ProcessNoInstance"));
return;
}
ProcessInfo pi = new ProcessInfo ("", AD_Process_ID);
pi.setAD_PInstance_ID (instance.getAD_PInstance_ID());
// Add Parameters
MPInstancePara para = new MPInstancePara(instance, 10);
para.setParameter("Selection", "Y");
if (!para.save())
{
String msg = "No Selection Parameter added"; // not translated
info.setText(msg);
log.log(Level.SEVERE, msg);
return;
}
para = new MPInstancePara(instance, 20);
para.setParameter("DocAction", "CO");
if (!para.save())
{
String msg = "No DocAction 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 / 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);
//
ProcessInfoUtil.setLogFromDB(pi);
StringBuffer iText = new StringBuffer();
iText.append("<b>").append(pi.getSummary())
.append("</b><br>(")
.append(Msg.getMsg(Env.getCtx(), "InvGenerateInfo"))
//Invoices are generated depending on the Invoicing Rule selection in the Order
.append(")<br>")
.append(pi.getLogInfo(true));
info.setText(iText.toString());
// Reset Selection
String sql = "UPDATE C_Order SET IsSelected = 'N' WHERE " + m_whereClause;
int no = DB.executeUpdate(sql, null);
log.config("Reset=" + no);
// Get results
int[] ids = pi.getIDs();
if (ids == null || ids.length == 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));
int retValue = ADialogDialog.A_CANCEL;
do
{
// Loop through all items
for (int i = 0; i < ids.length; i++)
{
int C_Invoice_ID = ids[i];
ReportCtl.startDocumentPrint(ReportEngine.INVOICE, C_Invoice_ID, true);
}
ADialogDialog d = new ADialogDialog (m_frame,
Env.getHeader(Env.getCtx(), m_WindowNo),
Msg.getMsg(Env.getCtx(), "PrintoutOK?"),
JOptionPane.QUESTION_MESSAGE);
retValue = d.getReturnCode();
}
while (retValue == ADialogDialog.A_CANCEL);
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 + -