📄 vcharge.java
字号:
// 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 + -