*Refactor custom form - ID: 2787613

This commit is contained in:
Heng Sin Low 2009-06-23 09:16:02 +00:00
parent c42dfdcca7
commit 325415d205
3 changed files with 529 additions and 772 deletions

View File

@ -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

View File

@ -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) if (listCreated.length() > 0)
listCreated.append(", "); ADialog.info(m_WindowNo, panel, "ChargeCreated", listCreated.toString());
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) 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

View File

@ -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");
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.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,39 +296,46 @@ 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());
if (m_elementId == 0) m_tblData.setData(model, getColumnNames());
{ setColumnClass(m_tblData);
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(); 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;
}
} }