⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vinvoicegen.java

📁 Java写的ERP系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		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 + -