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

📄 vcharge.java

📁 大家共享愉快, 共享愉快, 共享愉快, 共享愉快,共享愉快
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		//  TaxCategory
		sql = "SELECT C_TaxCategory_ID FROM C_TaxCategory "
			+ "WHERE IsDefault='Y' AND AD_Client_ID=?";
		m_C_TaxCategory_ID = 0;
		try
		{
			PreparedStatement pstmt = DB.prepareStatement(sql, null);
			pstmt.setInt(1, m_AD_Client_ID);
			ResultSet rs = pstmt.executeQuery();
			if (rs.next())
				m_C_TaxCategory_ID = rs.getInt(1);
			rs.close();
			pstmt.close();
		}
		catch (SQLException e)
		{
			log.log(Level.SEVERE, sql, e);
		}
	}   //  dynInit

	/**
	 * 	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(e.getActionCommand());
		//
		if (e.getActionCommand().equals(ConfirmPanel.A_OK) || m_C_Element_ID == 0)
			dispose();
		//  new Account
		else if (e.getSource().equals(newButton))
			createNew();
		else if (e.getSource().equals(accountButton))
			createAccount();
	}   //  actionPerformed

	/**
	 *  Create new Account and Charge
	 */
	private void createNew()
	{
		log.config("");
		//  Get Input
		String value = valueField.getText();
		if (value.length() == 0)
		{
			valueField.setBackground(CompierePLAF.getFieldBackground_Error());
			return;
		}
		String name = nameField.getText();
		if (name.length() == 0)
		{
			nameField.setBackground(CompierePLAF.getFieldBackground_Error());
			return;
		}
		//  Create Element
		int C_ElementValue_ID = create_ElementValue (value, name, isExpense.isSelected());
		if (C_ElementValue_ID == 0)
		{
			ADialog.error(m_WindowNo, this, "ChargeNotCreated", name);
			return;
		}
		//  Create Charge
		int C_Charge_ID = create_Charge(name, C_ElementValue_ID);
		if (C_Charge_ID == 0)
		{
			ADialog.error(m_WindowNo, this, "ChargeNotCreated", name);
			return;
		}
		ADialog.info(m_WindowNo, this, "ChargeCreated", name);
	}   //  createNew

	/**
	 *  Create Charges from Accounts
	 */
	private void createAccount()
	{
		log.config("");
		//
		StringBuffer listCreated = new StringBuffer();
		StringBuffer listRejected = new StringBuffer();
		//
		TableModel model = dataTable.getModel();
		int rows = model.getRowCount();
		for (int i = 0; i < rows; i++)
		{
			if (((Boolean)model.getValueAt(i, 0)).booleanValue())
			{
				KeyNamePair pp = (KeyNamePair)model.getValueAt(i, 1);
				int C_ElementValue_ID = pp.getKey();
				String name = (String)model.getValueAt(i, 2);
				//
				int C_Charge_ID = create_Charge(name, C_ElementValue_ID);
				if (C_Charge_ID == 0)
				{
					if (listRejected.length() > 0)
						listRejected.append(", ");
					listRejected.append(name);
				}
				else
				{
					if (listCreated.length() > 0)
						listCreated.append(", ");
					listCreated.append(name);
				}
				//  reset selection
				model.setValueAt(new Boolean(false), i, 0);
			}
		}
		if (listCreated.length() > 0)
			ADialog.info(m_WindowNo, this, "ChargeCreated", listCreated.toString());
		if (listRejected.length() > 0)
			ADialog.error(m_WindowNo, this, "ChargeNotCreated", listRejected.toString());
	}   //  createAccount

	
	/**************************************************************************
	 *  Create ElementValue for primary AcctSchema
	 *  @param value value
	 *  @param name name
	 *  @param isExpenseType is expense
	 *  @return element value
	 */
	private int create_ElementValue (String value, String name, boolean isExpenseType)
	{
		log.config(name);
		//
		int C_ElementValue_ID = DB.getNextID(Env.getCtx(), "C_ElementValue", null);
		StringBuffer sql = new StringBuffer("INSERT INTO C_ElementValue "
			+ "(C_ElementValue_ID, C_Element_ID,"
			+ " AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,"
			+ " Value, Name, Description,"
			+ " AccountType, AccountSign,"
			+ " IsDocControlled, IsSummary,"
			+ "	ValidFrom, ValidTo,"
			+ " PostActual, PostBudget, PostEncumbrance, PostStatistical,"
			+ "	IsBankAccount, C_BankAccount_ID, IsForeignCurrency, C_Currency_ID"
			+ ") VALUES (");
		//  C_ElementValue_ID, C_Element_ID,
		sql.append(C_ElementValue_ID).append(",").append(m_C_Element_ID).append(",");
		//  AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,
		sql.append(m_AD_Client_ID).append(",").append(m_AD_Org_ID);
		sql.append(",'Y',SysDate,").append(m_CreatedBy).append(",SysDate,").append(m_CreatedBy).append(",");
		//  Value, Name, Description,
		sql.append("'").append(value).append("','").append(name).append("',NULL,");
		//  AccountType, AccountSign,
		sql.append(isExpenseType ? "'E'" : "'R'").append(",'N',");
		//  IsDocControlled, IsSummary,
		sql.append("'N','N',");
		//  ValidFrom, ValidTo,
		sql.append("TO_DATE('01-JAN-1970'),NULL,");
		//  PostActual, PostBudget, PostEncumbrance, PostStatistical,
		sql.append("'Y','Y','Y','Y',");
		//  IsBankAccount, C_BankAccount_ID, IsForeignCurrency, C_Currency_ID
		sql.append("'N',NULL,'N',NULL)");
		//
		int no = DB.executeUpdate(sql.toString(), null);
		if (no != 1)
		{
			log.log(Level.SEVERE, "#" + no + "\n" + sql.toString());
			C_ElementValue_ID = 0;
		}
		else
			log.config("C_ElementValue_ID="
				+ C_ElementValue_ID + " " + value + "=" + name);
		return C_ElementValue_ID;
	}   //  create_ElementValue

	/**
	 *  Create Charge and account entries for primary AcctSchema.
	 *
	 *	@param name name
	 * 	@param C_ElementValue_ID element value
	 * 	@return charge
	 */
	private int create_Charge (String name, int C_ElementValue_ID)
	{
		log.config(name + " - ");
		//
		MCharge charge = new MCharge(Env.getCtx(), 0, null);
		charge.setName(name);
		charge.setC_TaxCategory_ID(m_C_TaxCategory_ID);
		if (!charge.save())
		{
			log.log(Level.SEVERE, name + " not created");
			return 0;
		}

		//  Get AcctSchama
		if (m_acctSchema == null)
			m_acctSchema = new MAcctSchema(Env.getCtx(), m_C_AcctSchema_ID, null);
		if (m_acctSchema == null || m_acctSchema.getC_AcctSchema_ID() == 0)
			return 0;

		//	Target Account
		MAccount defaultAcct = MAccount.getDefault(m_acctSchema, true);	//	optional null
		MAccount acct = MAccount.get(Env.getCtx(), 
			charge.getAD_Client_ID(), charge.getAD_Org_ID(), 
			m_acctSchema.getC_AcctSchema_ID(), 
			C_ElementValue_ID, defaultAcct.getC_SubAcct_ID(),
			defaultAcct.getM_Product_ID(), defaultAcct.getC_BPartner_ID(), defaultAcct.getAD_OrgTrx_ID(), 
			defaultAcct.getC_LocFrom_ID(), defaultAcct.getC_LocTo_ID(), defaultAcct.getC_SalesRegion_ID(), 
			defaultAcct.getC_Project_ID(), defaultAcct.getC_Campaign_ID(), defaultAcct.getC_Activity_ID(),
			defaultAcct.getUser1_ID(), defaultAcct.getUser2_ID(), 
			defaultAcct.getUserElement1_ID(), defaultAcct.getUserElement2_ID()); 
		if (acct == null)
			return 0;

		//  Update Accounts
		StringBuffer sql = new StringBuffer("UPDATE C_Charge_Acct ");
		sql.append("SET CH_Expense_Acct=").append(acct.getC_ValidCombination_ID());
		sql.append(", CH_Revenue_Acct=").append(acct.getC_ValidCombination_ID());
		sql.append(" WHERE C_Charge_ID=").append(charge.getC_Charge_ID());
		sql.append(" AND C_AcctSchema_ID=").append(m_C_AcctSchema_ID);
		//
		int no = DB.executeUpdate(sql.toString(), null);
		if (no != 1)
			log.log(Level.SEVERE, "Update #" + no + "\n" + sql.toString());
		//
		return charge.getC_Charge_ID();
	}   //  create_Charge

}   //  VCharge

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -