*Refactor custom form - ID: 2787613
This commit is contained in:
parent
c42dfdcca7
commit
325415d205
|
@ -0,0 +1,395 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2009 Low Heng Sin *
|
||||||
|
* Copyright (C) 2009 Idalica Corporation *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope *
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* See the GNU General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.compiere.apps.form;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Vector;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.compiere.minigrid.IMiniTable;
|
||||||
|
import org.compiere.model.MAccount;
|
||||||
|
import org.compiere.model.MAcctSchema;
|
||||||
|
import org.compiere.model.MCharge;
|
||||||
|
import org.compiere.model.MElementValue;
|
||||||
|
import org.compiere.util.CLogger;
|
||||||
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.KeyNamePair;
|
||||||
|
import org.compiere.util.Msg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create Charge from Accounts
|
||||||
|
*
|
||||||
|
* @author Jorg Janke
|
||||||
|
* @version $Id: Charge.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
||||||
|
*/
|
||||||
|
public class Charge
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 2478440763968206819L;
|
||||||
|
|
||||||
|
/** Window No */
|
||||||
|
public int m_WindowNo = 0;
|
||||||
|
// /** FormFrame */
|
||||||
|
// private FormFrame m_frame;
|
||||||
|
|
||||||
|
/** Account Element */
|
||||||
|
public int m_C_Element_ID = 0;
|
||||||
|
/** AccountSchema */
|
||||||
|
private int m_C_AcctSchema_ID = 0;
|
||||||
|
/** Default Charge Tax Category */
|
||||||
|
private int m_C_TaxCategory_ID = 0;
|
||||||
|
private int m_AD_Client_ID = 0;
|
||||||
|
private int m_AD_Org_ID = 0;
|
||||||
|
private int m_CreatedBy = 0;
|
||||||
|
private MAcctSchema m_acctSchema = null;
|
||||||
|
/** Logger */
|
||||||
|
public static CLogger log = CLogger.getCLogger(Charge.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dynamic Init
|
||||||
|
* - Get defaults for primary AcctSchema
|
||||||
|
* - Create Table with Accounts
|
||||||
|
*/
|
||||||
|
public Vector<Vector<Object>> getData()
|
||||||
|
{
|
||||||
|
// Table
|
||||||
|
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
|
||||||
|
String sql = "SELECT C_ElementValue_ID,Value, Name, AccountType "
|
||||||
|
+ "FROM C_ElementValue "
|
||||||
|
+ "WHERE AccountType IN ('R','E')"
|
||||||
|
+ " AND IsSummary='N'"
|
||||||
|
+ " AND C_Element_ID=? "
|
||||||
|
+ "ORDER BY 2";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
||||||
|
pstmt.setInt(1, m_C_Element_ID);
|
||||||
|
ResultSet rs = pstmt.executeQuery();
|
||||||
|
while (rs.next())
|
||||||
|
{
|
||||||
|
Vector<Object> line = new Vector<Object>(4);
|
||||||
|
line.add(new Boolean(false)); // 0-Selection
|
||||||
|
KeyNamePair pp = new KeyNamePair(rs.getInt(1), rs.getString(2));
|
||||||
|
line.add(pp); // 1-Value
|
||||||
|
line.add(rs.getString(3)); // 2-Name
|
||||||
|
boolean isExpenseType = rs.getString(4).equals("E");
|
||||||
|
line.add(new Boolean(isExpenseType)); // 3-Expense
|
||||||
|
data.add(line);
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pstmt.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, sql, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds the Element Identifier for the current charge.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void findChargeElementID()
|
||||||
|
{
|
||||||
|
m_C_AcctSchema_ID = Env.getContextAsInt(Env.getCtx(), "$C_AcctSchema_ID");
|
||||||
|
// get Element
|
||||||
|
String sql = "SELECT C_Element_ID "
|
||||||
|
+ "FROM C_AcctSchema_Element "
|
||||||
|
+ "WHERE ElementType='AC' AND C_AcctSchema_ID=?";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
||||||
|
pstmt.setInt(1, m_C_AcctSchema_ID);
|
||||||
|
ResultSet rs = pstmt.executeQuery();
|
||||||
|
if (rs.next())
|
||||||
|
{
|
||||||
|
m_C_Element_ID = rs.getInt(1);
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pstmt.close();
|
||||||
|
}
|
||||||
|
catch (SQLException exception)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, sql, exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector<String> getColumnNames()
|
||||||
|
{
|
||||||
|
// Header Info
|
||||||
|
Vector<String> columnNames = new Vector<String>(4);
|
||||||
|
columnNames.add(Msg.getMsg(Env.getCtx(), "Select"));
|
||||||
|
columnNames.add(Msg.translate(Env.getCtx(), "Value"));
|
||||||
|
columnNames.add(Msg.translate(Env.getCtx(), "Name"));
|
||||||
|
columnNames.add(Msg.getMsg(Env.getCtx(), "Expense"));
|
||||||
|
|
||||||
|
return columnNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColumnClass(IMiniTable dataTable)
|
||||||
|
{
|
||||||
|
dataTable.setColumnClass(0, Boolean.class, false); // 0-Selection
|
||||||
|
dataTable.setColumnClass(1, String.class, true); // 1-Value
|
||||||
|
dataTable.setColumnClass(2, String.class, true); // 2-Name
|
||||||
|
dataTable.setColumnClass(3, Boolean.class, true); // 3-Expense
|
||||||
|
// Table UI
|
||||||
|
dataTable.autoSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds the identifier for the tax category for the client.
|
||||||
|
*/
|
||||||
|
public void findTaxCategoryID()
|
||||||
|
{
|
||||||
|
// Other Defaults
|
||||||
|
m_AD_Client_ID = Env.getAD_Client_ID(Env.getCtx());
|
||||||
|
m_AD_Org_ID = Env.getAD_Org_ID(Env.getCtx());
|
||||||
|
m_CreatedBy = Env.getAD_User_ID(Env.getCtx());
|
||||||
|
|
||||||
|
// TaxCategory
|
||||||
|
String 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
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* Create ElementValue for primary AcctSchema
|
||||||
|
* @param value value
|
||||||
|
* @param name name
|
||||||
|
* @param isExpenseType is expense
|
||||||
|
* @return element value
|
||||||
|
*/
|
||||||
|
protected int createElementValue (String value, String name, boolean isExpenseType)
|
||||||
|
{
|
||||||
|
log.config(name);
|
||||||
|
//
|
||||||
|
MElementValue ev = new MElementValue(Env.getCtx(), value, name, null,
|
||||||
|
isExpenseType ? MElementValue.ACCOUNTTYPE_Expense : MElementValue.ACCOUNTTYPE_Revenue,
|
||||||
|
MElementValue.ACCOUNTSIGN_Natural,
|
||||||
|
false, false, null);
|
||||||
|
ev.setAD_Org_ID(m_AD_Org_ID);
|
||||||
|
if (!ev.save())
|
||||||
|
log.log(Level.WARNING, "C_ElementValue_ID not created");
|
||||||
|
return ev.getC_ElementValue_ID();
|
||||||
|
} // createElementValue
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create Charge and account entries for primary Account Schema.
|
||||||
|
*
|
||||||
|
* @param name charge name
|
||||||
|
* @param elementValueId element value identifier
|
||||||
|
* @return charge identifier, or 0 if no charge created.
|
||||||
|
*/
|
||||||
|
protected int createCharge(String name, int elementValueId)
|
||||||
|
{
|
||||||
|
MCharge charge;
|
||||||
|
MAccount account;
|
||||||
|
|
||||||
|
log.config(name + " - ");
|
||||||
|
// Charge
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshAccountSchema();
|
||||||
|
if (!isAccountSchemaValid())
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Target Account
|
||||||
|
account = getAccount(elementValueId, charge);
|
||||||
|
if (account == null)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateAccount(charge, account);
|
||||||
|
|
||||||
|
return charge.getC_Charge_ID();
|
||||||
|
} // createCharge
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the charge account details.
|
||||||
|
* @param charge the charge
|
||||||
|
* @param account the account
|
||||||
|
*/
|
||||||
|
private void updateAccount(MCharge charge, MAccount account)
|
||||||
|
{
|
||||||
|
StringBuffer sql = createUpdateAccountSql(charge, account);
|
||||||
|
//
|
||||||
|
int noAffectedRows = DB.executeUpdate(sql.toString(), null);
|
||||||
|
if (noAffectedRows != 1)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "Update #" + noAffectedRows + "\n" + sql.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Queries whether the current account scheme is valid.
|
||||||
|
* @return false if the current account is <code>null</code> or
|
||||||
|
* its identifier is 0 (zero).
|
||||||
|
*/
|
||||||
|
private boolean isAccountSchemaValid()
|
||||||
|
{
|
||||||
|
if (m_acctSchema == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (m_acctSchema.getC_AcctSchema_ID() == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the SQL statement for updating the account and charge.
|
||||||
|
*
|
||||||
|
* @param charge charge
|
||||||
|
* @param account account
|
||||||
|
* @return the SQL DML statement for updating the specified account and charge.
|
||||||
|
*/
|
||||||
|
private StringBuffer createUpdateAccountSql(MCharge charge, MAccount account)
|
||||||
|
{
|
||||||
|
StringBuffer sql = new StringBuffer("UPDATE C_Charge_Acct ");
|
||||||
|
sql.append("SET CH_Expense_Acct=").append(account.getC_ValidCombination_ID());
|
||||||
|
sql.append(", CH_Revenue_Acct=").append(account.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);
|
||||||
|
|
||||||
|
return sql;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refreshes the current account schema.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private void refreshAccountSchema()
|
||||||
|
{
|
||||||
|
// Get AcctSchama
|
||||||
|
if (m_acctSchema == null)
|
||||||
|
{
|
||||||
|
m_acctSchema = new MAcctSchema(Env.getCtx(), m_C_AcctSchema_ID, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the account for the specified charge and element value.
|
||||||
|
* The account is created if it doesn't already exist.
|
||||||
|
* @param elementValueId identifier for the element value
|
||||||
|
* @param charge charge
|
||||||
|
* @return the account
|
||||||
|
*/
|
||||||
|
private MAccount getAccount(int elementValueId, MCharge charge)
|
||||||
|
{
|
||||||
|
MAccount defaultAccount = MAccount.getDefault(m_acctSchema, true); // optional null
|
||||||
|
MAccount account = MAccount.get(Env.getCtx(),
|
||||||
|
charge.getAD_Client_ID(),
|
||||||
|
charge.getAD_Org_ID(),
|
||||||
|
m_acctSchema.getC_AcctSchema_ID(),
|
||||||
|
elementValueId,
|
||||||
|
defaultAccount.getC_SubAcct_ID(),
|
||||||
|
defaultAccount.getM_Product_ID(),
|
||||||
|
defaultAccount.getC_BPartner_ID(),
|
||||||
|
defaultAccount.getAD_OrgTrx_ID(),
|
||||||
|
defaultAccount.getC_LocFrom_ID(),
|
||||||
|
defaultAccount.getC_LocTo_ID(),
|
||||||
|
defaultAccount.getC_SalesRegion_ID(),
|
||||||
|
defaultAccount.getC_Project_ID(),
|
||||||
|
defaultAccount.getC_Campaign_ID(),
|
||||||
|
defaultAccount.getC_Activity_ID(),
|
||||||
|
defaultAccount.getUser1_ID(),
|
||||||
|
defaultAccount.getUser2_ID(),
|
||||||
|
defaultAccount.getUserElement1_ID(),
|
||||||
|
defaultAccount.getUserElement2_ID());
|
||||||
|
|
||||||
|
return account;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StringBuffer listCreated;
|
||||||
|
public StringBuffer listRejected;
|
||||||
|
|
||||||
|
public void createAccount(IMiniTable dataTable)
|
||||||
|
{
|
||||||
|
log.config("");
|
||||||
|
//
|
||||||
|
listCreated = new StringBuffer();
|
||||||
|
listRejected = new StringBuffer();
|
||||||
|
//
|
||||||
|
int rows = dataTable.getRowCount();
|
||||||
|
for (int i = 0; i < rows; i++)
|
||||||
|
{
|
||||||
|
if (((Boolean)dataTable.getValueAt(i, 0)).booleanValue())
|
||||||
|
{
|
||||||
|
KeyNamePair pp = (KeyNamePair)dataTable.getValueAt(i, 1);
|
||||||
|
int C_ElementValue_ID = pp.getKey();
|
||||||
|
String name = (String)dataTable.getValueAt(i, 2);
|
||||||
|
//
|
||||||
|
int C_Charge_ID = createCharge(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
|
||||||
|
dataTable.setValueAt(new Boolean(false), i, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // createAccount
|
||||||
|
|
||||||
|
} // Charge
|
|
@ -60,7 +60,7 @@ import org.compiere.util.Msg;
|
||||||
* @author Jorg Janke
|
* @author Jorg Janke
|
||||||
* @version $Id: VCharge.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
* @version $Id: VCharge.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
||||||
*/
|
*/
|
||||||
public class VCharge extends CPanel
|
public class VCharge extends Charge
|
||||||
implements FormPanel, ActionListener
|
implements FormPanel, ActionListener
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -68,6 +68,7 @@ public class VCharge extends CPanel
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 2478440763968206819L;
|
private static final long serialVersionUID = 2478440763968206819L;
|
||||||
|
|
||||||
|
private CPanel panel = new CPanel();
|
||||||
/**
|
/**
|
||||||
* Initialize Panel
|
* Initialize Panel
|
||||||
* @param WindowNo window
|
* @param WindowNo window
|
||||||
|
@ -82,6 +83,7 @@ public class VCharge extends CPanel
|
||||||
{
|
{
|
||||||
jbInit();
|
jbInit();
|
||||||
dynInit();
|
dynInit();
|
||||||
|
|
||||||
frame.getContentPane().add(mainPanel, BorderLayout.CENTER);
|
frame.getContentPane().add(mainPanel, BorderLayout.CENTER);
|
||||||
frame.getContentPane().add(confirmPanel, BorderLayout.SOUTH);
|
frame.getContentPane().add(confirmPanel, BorderLayout.SOUTH);
|
||||||
}
|
}
|
||||||
|
@ -91,24 +93,9 @@ public class VCharge extends CPanel
|
||||||
}
|
}
|
||||||
} // init
|
} // init
|
||||||
|
|
||||||
|
|
||||||
/** Window No */
|
|
||||||
private int m_WindowNo = 0;
|
|
||||||
/** FormFrame */
|
/** FormFrame */
|
||||||
private FormFrame m_frame;
|
private FormFrame m_frame;
|
||||||
|
|
||||||
/** Account Element */
|
|
||||||
private int m_C_Element_ID = 0;
|
|
||||||
/** AccountSchema */
|
|
||||||
private int m_C_AcctSchema_ID = 0;
|
|
||||||
/** Default Charge Tax Category */
|
|
||||||
private int m_C_TaxCategory_ID = 0;
|
|
||||||
private int m_AD_Client_ID = 0;
|
|
||||||
private int m_AD_Org_ID = 0;
|
|
||||||
private int m_CreatedBy = 0;
|
|
||||||
private MAcctSchema m_acctSchema = null;
|
|
||||||
/** Logger */
|
|
||||||
private static CLogger log = CLogger.getCLogger(VCharge.class);
|
|
||||||
//
|
//
|
||||||
private CPanel mainPanel = new CPanel();
|
private CPanel mainPanel = new CPanel();
|
||||||
private BorderLayout mainLayout = new BorderLayout();
|
private BorderLayout mainLayout = new BorderLayout();
|
||||||
|
@ -137,7 +124,7 @@ public class VCharge extends CPanel
|
||||||
*/
|
*/
|
||||||
private void jbInit() throws Exception
|
private void jbInit() throws Exception
|
||||||
{
|
{
|
||||||
CompiereColor.setBackground(this);
|
CompiereColor.setBackground(panel);
|
||||||
newBorder = new TitledBorder("");
|
newBorder = new TitledBorder("");
|
||||||
accountBorder = new TitledBorder("");
|
accountBorder = new TitledBorder("");
|
||||||
mainPanel.setLayout(mainLayout);
|
mainPanel.setLayout(mainLayout);
|
||||||
|
@ -181,109 +168,6 @@ public class VCharge extends CPanel
|
||||||
dataPane.getViewport().add(dataTable, null);
|
dataPane.getViewport().add(dataTable, null);
|
||||||
} // jbInit
|
} // jbInit
|
||||||
|
|
||||||
/**
|
|
||||||
* Dynamic Init
|
|
||||||
* - Get defaults for primary AcctSchema
|
|
||||||
* - Create Table with Accounts
|
|
||||||
*/
|
|
||||||
private void dynInit()
|
|
||||||
{
|
|
||||||
m_C_AcctSchema_ID = Env.getContextAsInt(Env.getCtx(), "$C_AcctSchema_ID");
|
|
||||||
// get Element
|
|
||||||
String sql = "SELECT C_Element_ID FROM C_AcctSchema_Element "
|
|
||||||
+ "WHERE ElementType='AC' AND C_AcctSchema_ID=?";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
pstmt.setInt(1, m_C_AcctSchema_ID);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
if (rs.next())
|
|
||||||
m_C_Element_ID = rs.getInt(1);
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, e);
|
|
||||||
}
|
|
||||||
if (m_C_Element_ID == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
// Table
|
|
||||||
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
|
|
||||||
sql = "SELECT C_ElementValue_ID,Value, Name, AccountType "
|
|
||||||
+ "FROM C_ElementValue "
|
|
||||||
+ "WHERE AccountType IN ('R','E')"
|
|
||||||
+ " AND IsSummary='N'"
|
|
||||||
+ " AND C_Element_ID=? "
|
|
||||||
+ "ORDER BY 2";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
pstmt.setInt(1, m_C_Element_ID);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
Vector<Object> line = new Vector<Object>(4);
|
|
||||||
line.add(new Boolean(false)); // 0-Selection
|
|
||||||
KeyNamePair pp = new KeyNamePair(rs.getInt(1), rs.getString(2));
|
|
||||||
line.add(pp); // 1-Value
|
|
||||||
line.add(rs.getString(3)); // 2-Name
|
|
||||||
boolean isExpenseType = rs.getString(4).equals("E");
|
|
||||||
line.add(new Boolean(isExpenseType)); // 3-Expense
|
|
||||||
data.add(line);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, e);
|
|
||||||
}
|
|
||||||
// Header Info
|
|
||||||
Vector<String> columnNames = new Vector<String>(4);
|
|
||||||
columnNames.add(Msg.getMsg(Env.getCtx(), "Select"));
|
|
||||||
columnNames.add(Msg.translate(Env.getCtx(), "Value"));
|
|
||||||
columnNames.add(Msg.translate(Env.getCtx(), "Name"));
|
|
||||||
columnNames.add(Msg.getMsg(Env.getCtx(), "Expense"));
|
|
||||||
|
|
||||||
// Set Model
|
|
||||||
DefaultTableModel model = new DefaultTableModel(data, columnNames);
|
|
||||||
dataTable.setModel(model);
|
|
||||||
//
|
|
||||||
dataTable.setColumnClass(0, Boolean.class, false); // 0-Selection
|
|
||||||
dataTable.setColumnClass(1, String.class, true); // 1-Value
|
|
||||||
dataTable.setColumnClass(2, String.class, true); // 2-Name
|
|
||||||
dataTable.setColumnClass(3, Boolean.class, true); // 3-Expense
|
|
||||||
// Table UI
|
|
||||||
dataTable.autoSize();
|
|
||||||
|
|
||||||
// Other Defaults
|
|
||||||
m_AD_Client_ID = Env.getAD_Client_ID(Env.getCtx());
|
|
||||||
m_AD_Org_ID = Env.getAD_Org_ID(Env.getCtx());
|
|
||||||
m_CreatedBy = Env.getAD_User_ID(Env.getCtx());
|
|
||||||
|
|
||||||
// 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
|
* Dispose
|
||||||
*/
|
*/
|
||||||
|
@ -331,20 +215,20 @@ public class VCharge extends CPanel
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Create Element
|
// Create Element
|
||||||
int C_ElementValue_ID = create_ElementValue (value, name, isExpense.isSelected());
|
int C_ElementValue_ID = createElementValue (value, name, isExpense.isSelected());
|
||||||
if (C_ElementValue_ID == 0)
|
if (C_ElementValue_ID == 0)
|
||||||
{
|
{
|
||||||
ADialog.error(m_WindowNo, this, "ChargeNotCreated", name);
|
ADialog.error(m_WindowNo, panel, "ChargeNotCreated", name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Create Charge
|
// Create Charge
|
||||||
int C_Charge_ID = create_Charge(name, C_ElementValue_ID);
|
int C_Charge_ID = createCharge(name, C_ElementValue_ID);
|
||||||
if (C_Charge_ID == 0)
|
if (C_Charge_ID == 0)
|
||||||
{
|
{
|
||||||
ADialog.error(m_WindowNo, this, "ChargeNotCreated", name);
|
ADialog.error(m_WindowNo, panel, "ChargeNotCreated", name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ADialog.info(m_WindowNo, this, "ChargeCreated", name);
|
ADialog.info(m_WindowNo, panel, "ChargeCreated", name);
|
||||||
} // createNew
|
} // createNew
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -352,118 +236,26 @@ public class VCharge extends CPanel
|
||||||
*/
|
*/
|
||||||
private void createAccount()
|
private void createAccount()
|
||||||
{
|
{
|
||||||
log.config("");
|
createAccount(dataTable);
|
||||||
//
|
|
||||||
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)
|
if (listCreated.length() > 0)
|
||||||
ADialog.info(m_WindowNo, this, "ChargeCreated", listCreated.toString());
|
ADialog.info(m_WindowNo, panel, "ChargeCreated", listCreated.toString());
|
||||||
if (listRejected.length() > 0)
|
if (listRejected.length() > 0)
|
||||||
ADialog.error(m_WindowNo, this, "ChargeNotCreated", listRejected.toString());
|
ADialog.error(m_WindowNo, panel, "ChargeNotCreated", listRejected.toString());
|
||||||
} // createAccount
|
} // 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);
|
|
||||||
//
|
|
||||||
MElementValue ev = new MElementValue(Env.getCtx(), value, name, null,
|
|
||||||
isExpenseType ? MElementValue.ACCOUNTTYPE_Expense : MElementValue.ACCOUNTTYPE_Revenue,
|
|
||||||
MElementValue.ACCOUNTSIGN_Natural,
|
|
||||||
false, false, null);
|
|
||||||
ev.setAD_Org_ID(m_AD_Org_ID);
|
|
||||||
if (!ev.save())
|
|
||||||
log.log(Level.WARNING, "C_ElementValue_ID not created");
|
|
||||||
return ev.getC_ElementValue_ID();
|
|
||||||
} // create_ElementValue
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create Charge and account entries for primary AcctSchema.
|
* Dynamic Init
|
||||||
*
|
* - Get defaults for primary AcctSchema
|
||||||
* @param name name
|
* - Create Table with Accounts
|
||||||
* @param C_ElementValue_ID element value
|
|
||||||
* @return charge
|
|
||||||
*/
|
*/
|
||||||
private int create_Charge (String name, int C_ElementValue_ID)
|
private void dynInit()
|
||||||
{
|
{
|
||||||
log.config(name + " - ");
|
findChargeElementID();
|
||||||
//
|
DefaultTableModel model = new DefaultTableModel(getData(), getColumnNames());
|
||||||
MCharge charge = new MCharge(Env.getCtx(), 0, null);
|
dataTable.setModel(model);
|
||||||
charge.setName(name);
|
setColumnClass(dataTable);
|
||||||
charge.setC_TaxCategory_ID(m_C_TaxCategory_ID);
|
findTaxCategoryID();
|
||||||
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
|
} // VCharge
|
||||||
|
|
|
@ -21,10 +21,6 @@
|
||||||
|
|
||||||
package org.adempiere.webui.apps.form;
|
package org.adempiere.webui.apps.form;
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.Vector;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.adempiere.webui.component.Button;
|
import org.adempiere.webui.component.Button;
|
||||||
|
@ -33,28 +29,32 @@ import org.adempiere.webui.component.Column;
|
||||||
import org.adempiere.webui.component.Columns;
|
import org.adempiere.webui.component.Columns;
|
||||||
import org.adempiere.webui.component.ConfirmPanel;
|
import org.adempiere.webui.component.ConfirmPanel;
|
||||||
import org.adempiere.webui.component.Grid;
|
import org.adempiere.webui.component.Grid;
|
||||||
|
import org.adempiere.webui.component.GridFactory;
|
||||||
import org.adempiere.webui.component.Label;
|
import org.adempiere.webui.component.Label;
|
||||||
import org.adempiere.webui.component.ListModelTable;
|
import org.adempiere.webui.component.ListModelTable;
|
||||||
import org.adempiere.webui.component.Panel;
|
import org.adempiere.webui.component.Panel;
|
||||||
import org.adempiere.webui.component.Row;
|
import org.adempiere.webui.component.Row;
|
||||||
import org.adempiere.webui.component.Rows;
|
import org.adempiere.webui.component.Rows;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
|
import org.adempiere.webui.component.WAppsAction;
|
||||||
import org.adempiere.webui.component.WListbox;
|
import org.adempiere.webui.component.WListbox;
|
||||||
import org.adempiere.webui.panel.ADForm;
|
import org.adempiere.webui.panel.ADForm;
|
||||||
|
import org.adempiere.webui.panel.CustomForm;
|
||||||
|
import org.adempiere.webui.panel.ICustomForm;
|
||||||
import org.adempiere.webui.session.SessionManager;
|
import org.adempiere.webui.session.SessionManager;
|
||||||
import org.adempiere.webui.window.FDialog;
|
import org.adempiere.webui.window.FDialog;
|
||||||
import org.compiere.model.MAccount;
|
import org.compiere.apps.form.Charge;
|
||||||
import org.compiere.model.MAcctSchema;
|
|
||||||
import org.compiere.model.MCharge;
|
|
||||||
import org.compiere.model.MElementValue;
|
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.zkoss.zk.ui.event.Event;
|
import org.zkoss.zk.ui.event.Event;
|
||||||
import org.zkoss.zk.ui.event.EventListener;
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
import org.zkoss.zk.ui.event.Events;
|
import org.zkoss.zk.ui.event.Events;
|
||||||
|
import org.zkoss.zkex.zul.Borderlayout;
|
||||||
|
import org.zkoss.zkex.zul.Center;
|
||||||
|
import org.zkoss.zkex.zul.North;
|
||||||
|
import org.zkoss.zkex.zul.South;
|
||||||
|
import org.zkoss.zul.Separator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class represents the Custom Form for generating charges
|
* This class represents the Custom Form for generating charges
|
||||||
|
@ -67,36 +67,25 @@ import org.zkoss.zk.ui.event.Events;
|
||||||
* @author Andrew Kimball
|
* @author Andrew Kimball
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class WCharge extends ADForm implements EventListener
|
public class WCharge extends Charge implements ICustomForm, EventListener
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 4210542409436277344L;
|
private static final long serialVersionUID = 4210542409436277344L;
|
||||||
|
|
||||||
|
private CustomForm form = new CustomForm();
|
||||||
|
|
||||||
/** AD_Message for "Create". */
|
/** AD_Message for "Create". */
|
||||||
private static final String AD_MESSAGE_CREATE = "Create";
|
private static final String AD_MESSAGE_CREATE = "Create";
|
||||||
/** Logger. */
|
/** Logger. */
|
||||||
private static CLogger log = CLogger.getCLogger(WCharge.class);
|
private static CLogger log = CLogger.getCLogger(WCharge.class);
|
||||||
|
|
||||||
/** Account Element identifier. */
|
private ListModelTable model;
|
||||||
private int m_elementId = 0;
|
|
||||||
/** Account Schema identifier. */
|
|
||||||
private int m_accountSchemaId = 0;
|
|
||||||
/** Default Charge Tax Category. */
|
|
||||||
private int m_taxCategoryId = 0;
|
|
||||||
/** Identifier for the client. */
|
|
||||||
private int m_clientId = 0;
|
|
||||||
/** Identifier for the organisation. */
|
|
||||||
private int m_organisationId = 0;
|
|
||||||
/** Accounting schema model. */
|
|
||||||
private MAcctSchema m_acctSchema = null;
|
|
||||||
|
|
||||||
/** Panel for holding other panels. */
|
|
||||||
private Panel m_pnlMain = new Panel();
|
|
||||||
|
|
||||||
// new panel
|
// new panel
|
||||||
/** Grid for components for creating a new charge account. */
|
/** Grid for components for creating a new charge account. */
|
||||||
private Grid m_grdNew = new Grid();
|
private Grid m_grdNew = GridFactory.newGridLayout();
|
||||||
/** Title of new charge account grid. */
|
/** Title of new charge account grid. */
|
||||||
private Column m_clmNewTitle = new Column();
|
private Column m_clmNewTitle = new Column();
|
||||||
/** Value (key) field label. */
|
/** Value (key) field label. */
|
||||||
|
@ -114,7 +103,7 @@ public class WCharge extends ADForm implements EventListener
|
||||||
|
|
||||||
// account panel
|
// account panel
|
||||||
/** Grid for components for creating a charge form a selected account. **/
|
/** Grid for components for creating a charge form a selected account. **/
|
||||||
private Grid m_grdAccount = new Grid();
|
private Panel m_pnlAccount = new Panel();
|
||||||
/** Title of account grid. */
|
/** Title of account grid. */
|
||||||
private Column m_clmAccountTitle = new Column();
|
private Column m_clmAccountTitle = new Column();
|
||||||
/** Button to create charge from selected account. */
|
/** Button to create charge from selected account. */
|
||||||
|
@ -125,7 +114,7 @@ public class WCharge extends ADForm implements EventListener
|
||||||
/** confirmation panel. */
|
/** confirmation panel. */
|
||||||
private ConfirmPanel m_pnlConfirm = new ConfirmPanel();
|
private ConfirmPanel m_pnlConfirm = new ConfirmPanel();
|
||||||
/** Confirmation Grid. */
|
/** Confirmation Grid. */
|
||||||
private Grid m_grdConfirm = new Grid();
|
private Grid m_grdConfirm = GridFactory.newGridLayout();
|
||||||
|
|
||||||
/** Enumeration of column names and indices. */
|
/** Enumeration of column names and indices. */
|
||||||
private enum EColumn
|
private enum EColumn
|
||||||
|
@ -194,6 +183,7 @@ public class WCharge extends ADForm implements EventListener
|
||||||
public WCharge()
|
public WCharge()
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
initForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -210,8 +200,7 @@ public class WCharge extends ADForm implements EventListener
|
||||||
{
|
{
|
||||||
staticInitialise();
|
staticInitialise();
|
||||||
dynamicInitialise();
|
dynamicInitialise();
|
||||||
this.appendChild(m_pnlMain);
|
zkInit();
|
||||||
//this.appendChild(confirmPanel);
|
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
|
@ -230,13 +219,31 @@ public class WCharge extends ADForm implements EventListener
|
||||||
createNewChargePanel();
|
createNewChargePanel();
|
||||||
createAccountPanel();
|
createAccountPanel();
|
||||||
createConfirmPanel();
|
createConfirmPanel();
|
||||||
// TODO
|
|
||||||
m_pnlMain.appendChild(m_grdNew);
|
|
||||||
m_pnlMain.appendChild(m_grdAccount);
|
|
||||||
m_pnlMain.appendChild(m_grdConfirm);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void zkInit()
|
||||||
|
{
|
||||||
|
Borderlayout contentPane = new Borderlayout();
|
||||||
|
form.appendChild(contentPane);
|
||||||
|
|
||||||
|
North north = new North();
|
||||||
|
contentPane.appendChild(north);
|
||||||
|
north.appendChild(m_grdNew);
|
||||||
|
|
||||||
|
Center center = new Center();
|
||||||
|
contentPane.appendChild(center);
|
||||||
|
center.appendChild(m_pnlAccount);
|
||||||
|
|
||||||
|
South south = new South();
|
||||||
|
contentPane.appendChild(south);
|
||||||
|
Panel southPanel = new Panel();
|
||||||
|
south.appendChild(southPanel);
|
||||||
|
southPanel.appendChild(new Separator());
|
||||||
|
southPanel.appendChild(m_grdConfirm);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the account panel.
|
* Creates the account panel.
|
||||||
*
|
*
|
||||||
|
@ -246,30 +253,35 @@ public class WCharge extends ADForm implements EventListener
|
||||||
*/
|
*/
|
||||||
private void createAccountPanel()
|
private void createAccountPanel()
|
||||||
{
|
{
|
||||||
Row topRow = new Row();
|
Borderlayout borderlayout = new Borderlayout();
|
||||||
Row bottomRow = new Row();
|
borderlayout.setStyle("position: absolute");
|
||||||
Rows rows = new Rows();
|
borderlayout.setWidth("100%");
|
||||||
Columns header = new Columns();
|
borderlayout.setHeight("100%");
|
||||||
|
m_pnlAccount.appendChild(borderlayout);
|
||||||
|
|
||||||
// header
|
North north = new North();
|
||||||
m_clmAccountTitle.setLabel(Msg.getMsg(Env.getCtx(), "ChargeFromAccount"));
|
north.setBorder("none");
|
||||||
header.appendChild(m_clmAccountTitle);
|
borderlayout.appendChild(north);
|
||||||
|
Label label = new Label(Msg.getMsg(Env.getCtx(), "ChargeFromAccount"));
|
||||||
|
label.setStyle("font-weight: bold;");
|
||||||
|
north.appendChild(label);
|
||||||
|
|
||||||
// top row
|
Center center = new Center();
|
||||||
m_tblData.setRows(20);
|
center.setBorder("none");
|
||||||
topRow.appendChild(m_tblData);
|
center.setFlex(true);
|
||||||
rows.appendChild(topRow);
|
center.setAutoscroll(true);
|
||||||
|
borderlayout.appendChild(center);
|
||||||
|
center.appendChild(m_tblData);
|
||||||
|
|
||||||
// bottom row
|
South south = new South();
|
||||||
bottomRow.setAlign("right");
|
south.setBorder("none");
|
||||||
m_btnAccount.setLabel(Msg.getMsg(Env.getCtx(), AD_MESSAGE_CREATE));
|
borderlayout.appendChild(south);
|
||||||
|
Panel southPanel = new Panel();
|
||||||
|
southPanel.setAlign("right");
|
||||||
|
south.appendChild(southPanel);
|
||||||
|
m_btnAccount.setLabel(Msg.getMsg(Env.getCtx(), AD_MESSAGE_CREATE));
|
||||||
m_btnAccount.addEventListener(Events.ON_CLICK, this);
|
m_btnAccount.addEventListener(Events.ON_CLICK, this);
|
||||||
bottomRow.appendChild(m_btnAccount);
|
southPanel.appendChild(m_btnAccount);
|
||||||
rows.appendChild(bottomRow);
|
|
||||||
|
|
||||||
// put it all together
|
|
||||||
m_grdAccount.appendChild(header);
|
|
||||||
m_grdAccount.appendChild(rows);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -284,38 +296,45 @@ public class WCharge extends ADForm implements EventListener
|
||||||
{
|
{
|
||||||
final int nameFieldColumns = 20;
|
final int nameFieldColumns = 20;
|
||||||
final int valueFieldColumns = 10;
|
final int valueFieldColumns = 10;
|
||||||
Row topRow = new Row();
|
|
||||||
Row bottomRow = new Row();
|
|
||||||
Rows rows = new Rows();
|
|
||||||
Columns header = new Columns();
|
|
||||||
|
|
||||||
// header
|
|
||||||
m_clmNewTitle.setLabel(Msg.getMsg(Env.getCtx(), "ChargeNewAccount"));
|
|
||||||
header.appendChild(m_clmNewTitle);
|
|
||||||
|
|
||||||
// top row
|
// top row
|
||||||
m_lblValue.setValue(Msg.translate(Env.getCtx(), EColumn.VALUE.title()));
|
m_lblValue.setValue(Msg.translate(Env.getCtx(), EColumn.VALUE.title()));
|
||||||
m_txbValueField.setCols(valueFieldColumns);
|
m_txbValueField.setCols(valueFieldColumns);
|
||||||
m_chbIsExpense.setChecked(true);
|
m_chbIsExpense.setChecked(true);
|
||||||
m_chbIsExpense.setLabel(Msg.getMsg(Env.getCtx(), EColumn.EXPENSE.title()));
|
m_chbIsExpense.setLabel(Msg.getMsg(Env.getCtx(), EColumn.EXPENSE.title()));
|
||||||
topRow.appendChild(m_lblValue);
|
|
||||||
topRow.appendChild(m_txbValueField);
|
|
||||||
topRow.appendChild(m_chbIsExpense);
|
|
||||||
rows.appendChild(topRow);
|
|
||||||
|
|
||||||
// bottom row
|
// bottom row
|
||||||
m_lblName.setValue(Msg.translate(Env.getCtx(), EColumn.NAME.title()));
|
m_lblName.setValue(Msg.translate(Env.getCtx(), EColumn.NAME.title()));
|
||||||
m_txbNameField.setCols(nameFieldColumns);
|
m_txbNameField.setCols(nameFieldColumns);
|
||||||
m_btnNew.setLabel(Msg.getMsg(Env.getCtx(), AD_MESSAGE_CREATE));
|
m_btnNew.setLabel(Msg.getMsg(Env.getCtx(), AD_MESSAGE_CREATE));
|
||||||
m_btnNew.addEventListener(Events.ON_CLICK, this);
|
m_btnNew.addEventListener(Events.ON_CLICK, this);
|
||||||
bottomRow.appendChild(m_lblName);
|
|
||||||
bottomRow.appendChild(m_txbNameField);
|
|
||||||
bottomRow.appendChild(m_btnNew);
|
|
||||||
rows.appendChild(bottomRow);
|
|
||||||
|
|
||||||
// put it all together
|
Rows rows = new Rows();
|
||||||
m_grdNew.appendChild(header);
|
m_grdNew.appendChild(rows);
|
||||||
m_grdNew.appendChild(rows);
|
|
||||||
|
Row row = new Row();
|
||||||
|
rows.appendChild(row);
|
||||||
|
row.setSpans("3");
|
||||||
|
Label label = new Label(Msg.getMsg(Env.getCtx(), "ChargeNewAccount"));
|
||||||
|
label.setStyle("font-weight: bold;");
|
||||||
|
row.appendChild(label);
|
||||||
|
|
||||||
|
row = new Row();
|
||||||
|
rows.appendChild(row);
|
||||||
|
row.appendChild(m_lblValue);
|
||||||
|
row.appendChild(m_txbValueField);
|
||||||
|
row.appendChild(m_chbIsExpense);
|
||||||
|
|
||||||
|
row = new Row();
|
||||||
|
rows.appendChild(row);
|
||||||
|
row.appendChild(m_lblName);
|
||||||
|
row.appendChild(m_txbNameField);
|
||||||
|
row.appendChild(m_btnNew);
|
||||||
|
|
||||||
|
row = new Row();
|
||||||
|
rows.appendChild(row);
|
||||||
|
row.setSpans("3");
|
||||||
|
row.appendChild(new Separator());
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -328,178 +347,15 @@ public class WCharge extends ADForm implements EventListener
|
||||||
*/
|
*/
|
||||||
private void dynamicInitialise()
|
private void dynamicInitialise()
|
||||||
{
|
{
|
||||||
String sql;
|
findChargeElementID();
|
||||||
findChargeElementID();
|
ListModelTable model = new ListModelTable(getData());
|
||||||
|
m_tblData.setData(model, getColumnNames());
|
||||||
if (m_elementId == 0)
|
setColumnClass(m_tblData);
|
||||||
{
|
findTaxCategoryID();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Table
|
|
||||||
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
|
|
||||||
sql = "SELECT C_ElementValue_ID,Value, Name, AccountType "
|
|
||||||
+ "FROM C_ElementValue "
|
|
||||||
+ "WHERE AccountType IN ('R','E')"
|
|
||||||
+ " AND IsSummary='N'"
|
|
||||||
+ " AND C_Element_ID=? "
|
|
||||||
+ "ORDER BY 2";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
pstmt.setInt(1, m_elementId);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
Vector<Object> line = createDataLine(rs);
|
|
||||||
data.add(line);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException exception)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, exception);
|
|
||||||
}
|
|
||||||
// Header Info
|
|
||||||
Vector<String> columnNames = getColumnNames();
|
|
||||||
|
|
||||||
// Set Model
|
|
||||||
ListModelTable model = new ListModelTable(data);
|
|
||||||
m_tblData.setData(model, columnNames);
|
|
||||||
//
|
|
||||||
m_tblData.setColumnClass(EColumn.SELECT.index(), Boolean.class, false); // 0-Selection
|
|
||||||
m_tblData.setColumnClass(EColumn.VALUE.index(), String.class, true); // 1-Value
|
|
||||||
m_tblData.setColumnClass(EColumn.NAME.index(), String.class, true); // 2-Name
|
|
||||||
m_tblData.setColumnClass(EColumn.EXPENSE.index(), Boolean.class, true); // 3-Expense
|
|
||||||
// Table UI
|
|
||||||
//m_tblData.autoSize();
|
|
||||||
|
|
||||||
// Other Defaults
|
|
||||||
m_clientId = Env.getAD_Client_ID(Env.getCtx());
|
|
||||||
m_organisationId = Env.getAD_Org_ID(Env.getCtx());
|
|
||||||
|
|
||||||
// TaxCategory
|
|
||||||
findTaxCategoryID();
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} // dynInit
|
} // dynInit
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Finds the identifier for the tax category for the client.
|
|
||||||
*/
|
|
||||||
private void findTaxCategoryID()
|
|
||||||
{
|
|
||||||
final String sql = "SELECT C_TaxCategory_ID FROM C_TaxCategory "
|
|
||||||
+ "WHERE IsDefault='Y' AND AD_Client_ID=?";
|
|
||||||
m_taxCategoryId = 0;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
pstmt.setInt(1, m_clientId);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
if (rs.next())
|
|
||||||
{
|
|
||||||
m_taxCategoryId = rs.getInt(1);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException exception)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, exception);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets a vector of column names.
|
|
||||||
* The column names are used as column headings int he table.
|
|
||||||
* @return a vector of column names.
|
|
||||||
*/
|
|
||||||
private Vector<String> getColumnNames()
|
|
||||||
{
|
|
||||||
Vector<String> columnNames = new Vector<String>(EColumn.count());
|
|
||||||
|
|
||||||
columnNames.add(Msg.getMsg(Env.getCtx(), EColumn.SELECT.title()));
|
|
||||||
columnNames.add(Msg.translate(Env.getCtx(), EColumn.VALUE.title()));
|
|
||||||
columnNames.add(Msg.translate(Env.getCtx(), EColumn.NAME.title()));
|
|
||||||
columnNames.add(Msg.getMsg(Env.getCtx(), EColumn.EXPENSE.title()));
|
|
||||||
|
|
||||||
return columnNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a data line from the given <code>ResultSet</code>.
|
|
||||||
*
|
|
||||||
* @param rs result set containing details of an account.
|
|
||||||
* @return a vector containing details of an account.
|
|
||||||
* @throws SQLException if a database access error occurred
|
|
||||||
*/
|
|
||||||
private Vector<Object> createDataLine(ResultSet rs) throws SQLException
|
|
||||||
{
|
|
||||||
final int noFields = EColumn.count();
|
|
||||||
final int valueIdIndex = 1;
|
|
||||||
final int valueIndex = 2;
|
|
||||||
final int nameIndex = 3;
|
|
||||||
final int expenseIndex = 4;
|
|
||||||
final String expenseType = "E";
|
|
||||||
boolean isExpenseType;
|
|
||||||
Vector<Object> line = new Vector<Object>(noFields);
|
|
||||||
|
|
||||||
// 0-Selection
|
|
||||||
line.add(new Boolean(false));
|
|
||||||
|
|
||||||
// 1-Value
|
|
||||||
KeyNamePair pp = new KeyNamePair(rs.getInt(valueIdIndex),
|
|
||||||
rs.getString(valueIndex));
|
|
||||||
line.add(pp);
|
|
||||||
|
|
||||||
// 2-Name
|
|
||||||
line.add(rs.getString(nameIndex));
|
|
||||||
|
|
||||||
// 3-Expense
|
|
||||||
isExpenseType = rs.getString(expenseIndex).equals(expenseType);
|
|
||||||
line.add(new Boolean(isExpenseType));
|
|
||||||
|
|
||||||
return line;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Finds the Element Identifier for the current charge.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void findChargeElementID()
|
|
||||||
{
|
|
||||||
m_accountSchemaId = Env.getContextAsInt(Env.getCtx(), "$C_AcctSchema_ID");
|
|
||||||
// get Element
|
|
||||||
String sql = "SELECT C_Element_ID "
|
|
||||||
+ "FROM C_AcctSchema_Element "
|
|
||||||
+ "WHERE ElementType='AC' AND C_AcctSchema_ID=?";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
pstmt.setInt(1, m_accountSchemaId);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
if (rs.next())
|
|
||||||
{
|
|
||||||
m_elementId = rs.getInt(1);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException exception)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, exception);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event Listener.
|
* Event Listener.
|
||||||
*
|
*
|
||||||
|
@ -509,7 +365,7 @@ public class WCharge extends ADForm implements EventListener
|
||||||
{
|
{
|
||||||
log.info(event.getName());
|
log.info(event.getName());
|
||||||
//
|
//
|
||||||
if (event.getTarget().getId().equals(ConfirmPanel.A_OK) || m_elementId == 0)
|
if (event.getTarget().getId().equals(ConfirmPanel.A_OK) || m_C_Element_ID == 0)
|
||||||
{
|
{
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
@ -557,204 +413,19 @@ public class WCharge extends ADForm implements EventListener
|
||||||
int elementValueId = createElementValue (value, name, m_chbIsExpense.isChecked());
|
int elementValueId = createElementValue (value, name, m_chbIsExpense.isChecked());
|
||||||
if (elementValueId == 0)
|
if (elementValueId == 0)
|
||||||
{
|
{
|
||||||
FDialog.error(m_WindowNo, this, "ChargeNotCreated", name);
|
FDialog.error(form.getWindowNo(), form, "ChargeNotCreated", name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Create Charge
|
// Create Charge
|
||||||
int chargeId = createCharge(name, elementValueId);
|
int chargeId = createCharge(name, elementValueId);
|
||||||
if (chargeId == 0)
|
if (chargeId == 0)
|
||||||
{
|
{
|
||||||
FDialog.error(m_WindowNo, this, "ChargeNotCreated", name);
|
FDialog.error(form.getWindowNo(), form, "ChargeNotCreated", name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FDialog.info(m_WindowNo, this, "ChargeCreated", name);
|
FDialog.info(form.getWindowNo(), form, "ChargeCreated", name);
|
||||||
} // createNew
|
} // createNew
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create Element Value for primary Account Schema.
|
|
||||||
* @param value account key
|
|
||||||
* @param name account name
|
|
||||||
* @param isExpenseType is expense account
|
|
||||||
* @return element value identifier
|
|
||||||
*/
|
|
||||||
private int createElementValue (String value, String name, boolean isExpenseType)
|
|
||||||
{
|
|
||||||
MElementValue elementValue;
|
|
||||||
|
|
||||||
log.config(name);
|
|
||||||
//
|
|
||||||
elementValue = new MElementValue(Env.getCtx(),
|
|
||||||
value,
|
|
||||||
name,
|
|
||||||
null,
|
|
||||||
isExpenseType ? MElementValue.ACCOUNTTYPE_Expense
|
|
||||||
: MElementValue.ACCOUNTTYPE_Revenue,
|
|
||||||
MElementValue.ACCOUNTSIGN_Natural,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
null);
|
|
||||||
|
|
||||||
elementValue.setAD_Org_ID(m_organisationId);
|
|
||||||
if (!elementValue.save())
|
|
||||||
{
|
|
||||||
log.log(Level.WARNING, "C_ElementValue_ID not created");
|
|
||||||
}
|
|
||||||
|
|
||||||
return elementValue.getC_ElementValue_ID();
|
|
||||||
} // create_ElementValue
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create Charge and account entries for primary Account Schema.
|
|
||||||
*
|
|
||||||
* @param name charge name
|
|
||||||
* @param elementValueId element value identifier
|
|
||||||
* @return charge identifier, or 0 if no charge created.
|
|
||||||
*/
|
|
||||||
private int createCharge(String name, int elementValueId)
|
|
||||||
{
|
|
||||||
MCharge charge;
|
|
||||||
MAccount account;
|
|
||||||
|
|
||||||
log.config(name + " - ");
|
|
||||||
// Charge
|
|
||||||
charge = new MCharge(Env.getCtx(), 0, null);
|
|
||||||
charge.setName(name);
|
|
||||||
charge.setC_TaxCategory_ID(m_taxCategoryId);
|
|
||||||
if (!charge.save())
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, name + " not created");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshAccountSchema();
|
|
||||||
if (!isAccountSchemaValid())
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Target Account
|
|
||||||
account = getAccount(elementValueId, charge);
|
|
||||||
if (account == null)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateAccount(charge, account);
|
|
||||||
|
|
||||||
return charge.getC_Charge_ID();
|
|
||||||
} // createCharge
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the charge account details.
|
|
||||||
* @param charge the charge
|
|
||||||
* @param account the account
|
|
||||||
*/
|
|
||||||
private void updateAccount(MCharge charge, MAccount account)
|
|
||||||
{
|
|
||||||
StringBuffer sql = createUpdateAccountSql(charge, account);
|
|
||||||
//
|
|
||||||
int noAffectedRows = DB.executeUpdate(sql.toString(), null);
|
|
||||||
if (noAffectedRows != 1)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, "Update #" + noAffectedRows + "\n" + sql.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Queries whether the current account scheme is valid.
|
|
||||||
* @return false if the current account is <code>null</code> or
|
|
||||||
* its identifier is 0 (zero).
|
|
||||||
*/
|
|
||||||
private boolean isAccountSchemaValid()
|
|
||||||
{
|
|
||||||
if (m_acctSchema == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (m_acctSchema.getC_AcctSchema_ID() == 0)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates the SQL statement for updating the account and charge.
|
|
||||||
*
|
|
||||||
* @param charge charge
|
|
||||||
* @param account account
|
|
||||||
* @return the SQL DML statement for updating the specified account and charge.
|
|
||||||
*/
|
|
||||||
private StringBuffer createUpdateAccountSql(MCharge charge, MAccount account)
|
|
||||||
{
|
|
||||||
StringBuffer sql = new StringBuffer("UPDATE C_Charge_Acct ");
|
|
||||||
sql.append("SET CH_Expense_Acct=").append(account.getC_ValidCombination_ID());
|
|
||||||
sql.append(", CH_Revenue_Acct=").append(account.getC_ValidCombination_ID());
|
|
||||||
sql.append(" WHERE C_Charge_ID=").append(charge.getC_Charge_ID());
|
|
||||||
sql.append(" AND C_AcctSchema_ID=").append(m_accountSchemaId);
|
|
||||||
|
|
||||||
return sql;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Refreshes the current account schema.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void refreshAccountSchema()
|
|
||||||
{
|
|
||||||
// Get AcctSchama
|
|
||||||
if (m_acctSchema == null)
|
|
||||||
{
|
|
||||||
m_acctSchema = new MAcctSchema(Env.getCtx(), m_accountSchemaId, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the account for the specified charge and element value.
|
|
||||||
* The account is created if it doesn't already exist.
|
|
||||||
* @param elementValueId identifier for the element value
|
|
||||||
* @param charge charge
|
|
||||||
* @return the account
|
|
||||||
*/
|
|
||||||
private MAccount getAccount(int elementValueId, MCharge charge)
|
|
||||||
{
|
|
||||||
MAccount defaultAccount = MAccount.getDefault(m_acctSchema, true); // optional null
|
|
||||||
MAccount account = MAccount.get(Env.getCtx(),
|
|
||||||
charge.getAD_Client_ID(),
|
|
||||||
charge.getAD_Org_ID(),
|
|
||||||
m_acctSchema.getC_AcctSchema_ID(),
|
|
||||||
elementValueId,
|
|
||||||
defaultAccount.getC_SubAcct_ID(),
|
|
||||||
defaultAccount.getM_Product_ID(),
|
|
||||||
defaultAccount.getC_BPartner_ID(),
|
|
||||||
defaultAccount.getAD_OrgTrx_ID(),
|
|
||||||
defaultAccount.getC_LocFrom_ID(),
|
|
||||||
defaultAccount.getC_LocTo_ID(),
|
|
||||||
defaultAccount.getC_SalesRegion_ID(),
|
|
||||||
defaultAccount.getC_Project_ID(),
|
|
||||||
defaultAccount.getC_Campaign_ID(),
|
|
||||||
defaultAccount.getC_Activity_ID(),
|
|
||||||
defaultAccount.getUser1_ID(),
|
|
||||||
defaultAccount.getUser2_ID(),
|
|
||||||
defaultAccount.getUserElement1_ID(),
|
|
||||||
defaultAccount.getUserElement2_ID());
|
|
||||||
|
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates Charges from Accounts.
|
* Creates Charges from Accounts.
|
||||||
* Charges are created for the selected accounts.
|
* Charges are created for the selected accounts.
|
||||||
|
@ -762,125 +433,19 @@ public class WCharge extends ADForm implements EventListener
|
||||||
*/
|
*/
|
||||||
private void createAccount()
|
private void createAccount()
|
||||||
{
|
{
|
||||||
StringBuffer listCreated = new StringBuffer();
|
createAccount(m_tblData);
|
||||||
StringBuffer listRejected = new StringBuffer();
|
|
||||||
|
|
||||||
log.config("");
|
|
||||||
|
|
||||||
int noCharges = getNoCharges();
|
|
||||||
|
|
||||||
for (int chargeIndex = 0; chargeIndex < noCharges; chargeIndex++)
|
|
||||||
{
|
|
||||||
if (isRowSelected(chargeIndex))
|
|
||||||
{
|
|
||||||
String name = getChargeName(chargeIndex);
|
|
||||||
int chargeId = createCharge(chargeIndex);
|
|
||||||
if (chargeId == 0)
|
|
||||||
{
|
|
||||||
appendName(listRejected, name);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
appendName(listCreated, name);
|
|
||||||
}
|
|
||||||
setRowUnselected(chargeIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (listCreated.length() > 0)
|
if (listCreated.length() > 0)
|
||||||
{
|
{
|
||||||
FDialog.info(m_WindowNo, this, "ChargeCreated", listCreated.toString());
|
FDialog.info(form.getWindowNo(), form, "ChargeCreated", listCreated.toString());
|
||||||
}
|
}
|
||||||
if (listRejected.length() > 0)
|
if (listRejected.length() > 0)
|
||||||
{
|
{
|
||||||
FDialog.error(m_WindowNo, this, "ChargeNotCreated", listRejected.toString());
|
FDialog.error(form.getWindowNo(), form, "ChargeNotCreated", listRejected.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} // createAccount
|
} // createAccount
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the number of charges in the table.
|
|
||||||
* @return the number of charges in the table.
|
|
||||||
*/
|
|
||||||
private int getNoCharges()
|
|
||||||
{
|
|
||||||
int noCharges = m_tblData.getRowCount();
|
|
||||||
|
|
||||||
return noCharges;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a charge for specified table row.
|
|
||||||
*
|
|
||||||
* @param rowIndex index of the row for which a charge is to be created.
|
|
||||||
* @return the charge identifier.
|
|
||||||
*/
|
|
||||||
private int createCharge(int rowIndex)
|
|
||||||
{
|
|
||||||
KeyNamePair pp = (KeyNamePair)m_tblData.getValueAt(rowIndex, EColumn.VALUE.index());
|
|
||||||
int elementValueId = pp.getKey();
|
|
||||||
String name = getChargeName(rowIndex);
|
|
||||||
int chargeID = createCharge(name, elementValueId);
|
|
||||||
|
|
||||||
return chargeID;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the name for a specified table row.
|
|
||||||
* @param rowIndex the table row for which to get the name.
|
|
||||||
* @return the charge name.
|
|
||||||
*/
|
|
||||||
private String getChargeName(int rowIndex)
|
|
||||||
{
|
|
||||||
String name = (String)m_tblData.getValueAt(rowIndex, EColumn.NAME.index());
|
|
||||||
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Appends the <code>name</code> to the <code>nameList</code>.
|
|
||||||
* @param nameList a list of names
|
|
||||||
* @param name the name to append
|
|
||||||
*/
|
|
||||||
private void appendName(StringBuffer nameList, String name)
|
|
||||||
{
|
|
||||||
if (nameList.length() > 0)
|
|
||||||
{
|
|
||||||
nameList.append(", ");
|
|
||||||
}
|
|
||||||
nameList.append(name);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a row at <code>rowIndex</code> as unselected.
|
|
||||||
* @param rowIndex index of the row to deselect.
|
|
||||||
*/
|
|
||||||
private void setRowUnselected(int rowIndex)
|
|
||||||
{
|
|
||||||
ListModelTable model = m_tblData.getModel();
|
|
||||||
model.setDataAt(Boolean.valueOf(false), rowIndex, EColumn.SELECT.index());
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Queries whether a row is selected.
|
|
||||||
* @param rowIndex index of the row to query.
|
|
||||||
* @return true if the row is selected, false otherwise.
|
|
||||||
*/
|
|
||||||
private boolean isRowSelected(int rowIndex)
|
|
||||||
{
|
|
||||||
ListModelTable model = m_tblData.getModel();
|
|
||||||
Boolean isSelected = (Boolean)model.getDataAt(rowIndex, EColumn.SELECT.index());
|
|
||||||
|
|
||||||
return isSelected.booleanValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create Confirmation Panel with OK Button.
|
* Create Confirmation Panel with OK Button.
|
||||||
*/
|
*/
|
||||||
|
@ -901,6 +466,11 @@ public class WCharge extends ADForm implements EventListener
|
||||||
{
|
{
|
||||||
SessionManager.getAppDesktop().closeActiveWindow();
|
SessionManager.getAppDesktop().closeActiveWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ADForm getForm() {
|
||||||
|
return form;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue