From f5fbec1f661a454fd99071d2619195b472536899 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 7 Feb 2008 05:03:23 +0000 Subject: [PATCH] FR [ 1795384 ] Setup: create default accounts records is too rigid Contributed by Teo BF [ 1874419 ] JDBC Statement not close in a finally block --- base/src/org/compiere/model/MSetup.java | 224 +++++------------- client/src/org/compiere/apps/form/VSetup.java | 56 +++-- 2 files changed, 89 insertions(+), 191 deletions(-) diff --git a/base/src/org/compiere/model/MSetup.java b/base/src/org/compiere/model/MSetup.java index 0d531a67c2..68f3c81698 100644 --- a/base/src/org/compiere/model/MSetup.java +++ b/base/src/org/compiere/model/MSetup.java @@ -1,5 +1,5 @@ /****************************************************************************** - * Product: Adempiere ERP & CRM Smart Business Solution * + * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * 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 * @@ -28,6 +28,9 @@ import org.compiere.util.*; * * @author Jorg Janke * @version $Id: MSetup.java,v 1.3 2006/07/30 00:51:02 jjanke Exp $ + * + * @author Teo Sarca, SC ARHIPAC SERVICE SRL + *
  • FR [ 1795384 ] Setup: create default accounts records is too rigid */ public final class MSetup { @@ -76,8 +79,6 @@ public final class MSetup private boolean m_hasProject = false; private boolean m_hasMCampaign = false; private boolean m_hasSRegion = false; - /** Account Creation OK */ - private boolean m_accountsOK = false; /** * Create Client Info. @@ -435,14 +436,13 @@ public final class MSetup sql2 = "SELECT l.Value, t.Name FROM AD_Ref_List l, AD_Ref_List_Trl t " + "WHERE l.AD_Reference_ID=181 AND l.AD_Ref_List_ID=t.AD_Ref_List_ID" + " AND t.AD_Language=" + DB.TO_STRING(m_lang); //bug [ 1638421 ] - // - int Element_OO=0, Element_AC=0, Element_PR=0, Element_BP=0, Element_PJ=0, - Element_MC=0, Element_SR=0; + PreparedStatement stmt = null; + ResultSet rs = null; try { int AD_Client_ID = m_client.getAD_Client_ID(); - PreparedStatement stmt = DB.prepareStatement(sql2, m_trx.getTrxName()); - ResultSet rs = stmt.executeQuery(); + stmt = DB.prepareStatement(sql2, m_trx.getTrxName()); + rs = stmt.executeQuery(); while (rs.next()) { String ElementType = rs.getString(1); @@ -456,7 +456,6 @@ public final class MSetup if (ElementType.equals("OO")) { C_AcctSchema_Element_ID = getNextID(AD_Client_ID, "C_AcctSchema_Element"); - Element_OO = C_AcctSchema_Element_ID; IsMandatory = "Y"; IsBalanced = "Y"; SeqNo = 10; @@ -464,42 +463,36 @@ public final class MSetup else if (ElementType.equals("AC")) { C_AcctSchema_Element_ID = getNextID(AD_Client_ID, "C_AcctSchema_Element"); - Element_AC = C_AcctSchema_Element_ID; IsMandatory = "Y"; SeqNo = 20; } else if (ElementType.equals("PR") && hasProduct) { C_AcctSchema_Element_ID = getNextID(AD_Client_ID, "C_AcctSchema_Element"); - Element_PR = C_AcctSchema_Element_ID; IsMandatory = "N"; SeqNo = 30; } else if (ElementType.equals("BP") && hasBPartner) { C_AcctSchema_Element_ID = getNextID(AD_Client_ID, "C_AcctSchema_Element"); - Element_BP = C_AcctSchema_Element_ID; IsMandatory = "N"; SeqNo = 40; } else if (ElementType.equals("PJ") && hasProject) { C_AcctSchema_Element_ID = getNextID(AD_Client_ID, "C_AcctSchema_Element"); - Element_PJ = C_AcctSchema_Element_ID; IsMandatory = "N"; SeqNo = 50; } else if (ElementType.equals("MC") && hasMCampaign) { C_AcctSchema_Element_ID = getNextID(AD_Client_ID, "C_AcctSchema_Element"); - Element_MC = C_AcctSchema_Element_ID; IsMandatory = "N"; SeqNo = 60; } else if (ElementType.equals("SR") && hasSRegion) { C_AcctSchema_Element_ID = getNextID(AD_Client_ID, "C_AcctSchema_Element"); - Element_SR = C_AcctSchema_Element_ID; IsMandatory = "N"; SeqNo = 70; } @@ -537,8 +530,6 @@ public final class MSetup } } } - rs.close(); - stmt.close(); } catch (SQLException e1) { @@ -548,150 +539,21 @@ public final class MSetup m_trx.close(); return false; } + finally + { + DB.close(rs, stmt); + rs = null; stmt = null; + } // Create AcctSchema - // Create GL Accounts - m_accountsOK = true; - sqlCmd = new StringBuffer ("INSERT INTO C_AcctSCHEMA_GL ("); - sqlCmd.append(m_stdColumns).append(",C_AcctSCHEMA_ID," - + "USESUSPENSEBALANCING,SUSPENSEBALANCING_Acct," - + "USESUSPENSEERROR,SUSPENSEERROR_Acct," - + "USECURRENCYBALANCING,CURRENCYBALANCING_Acct," - + "RETAINEDEARNING_Acct,INCOMESUMMARY_Acct," - + "INTERCOMPANYDUETO_Acct,INTERCOMPANYDUEFROM_Acct," - + "PPVOFFSET_Acct, CommitmentOffset_Acct, CommitmentOffsetSales_Acct) VALUES ("); - sqlCmd.append(m_stdValues).append(",").append(m_as.getC_AcctSchema_ID()).append(",") - .append("'Y',").append(getAcct("SUSPENSEBALANCING_Acct")).append(",") - .append("'Y',").append(getAcct("SUSPENSEERROR_Acct")).append(",") - .append("'Y',").append(getAcct("CURRENCYBALANCING_Acct")).append(","); - // RETAINEDEARNING_Acct,INCOMESUMMARY_Acct, - sqlCmd.append(getAcct("RETAINEDEARNING_Acct")).append(",") - .append(getAcct("INCOMESUMMARY_Acct")).append(",") - // INTERCOMPANYDUETO_Acct,INTERCOMPANYDUEFROM_Acct) - .append(getAcct("INTERCOMPANYDUETO_Acct")).append(",") - .append(getAcct("INTERCOMPANYDUEFROM_Acct")).append(",") - .append(getAcct("PPVOFFSET_Acct")).append(",") - .append(getAcct("CommitmentOffset_Acct")).append(",") - .append(getAcct("CommitmentOffsetSales_Acct")) - .append(")"); - if (m_accountsOK) - no = DB.executeUpdate(sqlCmd.toString(), m_trx.getTrxName()); - else - no = -1; - if (no != 1) - { - String err = "GL Accounts NOT inserted"; - log.log(Level.SEVERE, err); - m_info.append(err); - m_trx.rollback(); - m_trx.close(); - return false; + // Create Defaults Accounts + try { + createAccountingRecord(X_C_AcctSchema_GL.Table_Name); + createAccountingRecord(X_C_AcctSchema_Default.Table_Name); } - - // Create Std Accounts - sqlCmd = new StringBuffer ("INSERT INTO C_AcctSchema_Default ("); - sqlCmd.append(m_stdColumns).append(",C_AcctSchema_ID," - + "W_INVENTORY_Acct,W_DIFFERENCES_Acct,W_REVALUATION_Acct,W_INVACTUALADJUST_Acct, " - + "P_REVENUE_Acct,P_EXPENSE_Acct,P_CostAdjustment_Acct,P_InventoryClearing_Acct,P_ASSET_Acct,P_COGS_Acct, " - + "P_PURCHASEPRICEVARIANCE_Acct,P_INVOICEPRICEVARIANCE_Acct,P_TRADEDISCOUNTREC_Acct,P_TRADEDISCOUNTGRANT_Acct, " - + "C_RECEIVABLE_Acct,C_Receivable_Services_Acct,C_PREPAYMENT_Acct, " - + "V_LIABILITY_Acct,V_LIABILITY_SERVICES_Acct,V_PREPAYMENT_Acct, " - + "PAYDISCOUNT_EXP_Acct,PAYDISCOUNT_REV_Acct,WRITEOFF_Acct, " - + "UNREALIZEDGAIN_Acct,UNREALIZEDLOSS_Acct,REALIZEDGAIN_Acct,REALIZEDLOSS_Acct, " - + "WITHHOLDING_Acct,E_PREPAYMENT_Acct,E_EXPENSE_Acct, " - + "PJ_ASSET_Acct,PJ_WIP_Acct," - + "T_EXPENSE_Acct,T_LIABILITY_Acct,T_RECEIVABLES_Acct,T_DUE_Acct,T_CREDIT_Acct, " - + "B_INTRANSIT_Acct,B_ASSET_Acct,B_EXPENSE_Acct,B_INTERESTREV_Acct,B_INTERESTEXP_Acct," - + "B_UNIDENTIFIED_Acct,B_SETTLEMENTGAIN_Acct,B_SETTLEMENTLOSS_Acct," - + "B_REVALUATIONGAIN_Acct,B_REVALUATIONLOSS_Acct,B_PAYMENTSELECT_Acct,B_UNALLOCATEDCASH_Acct, " - + "CH_EXPENSE_Acct,CH_REVENUE_Acct, " - + "UNEARNEDREVENUE_Acct,NOTINVOICEDRECEIVABLES_Acct,NOTINVOICEDREVENUE_Acct,NOTINVOICEDRECEIPTS_Acct, " - + "CB_ASSET_Acct,CB_CASHTRANSFER_Acct,CB_DIFFERENCES_Acct,CB_EXPENSE_Acct,CB_RECEIPT_Acct) VALUES ("); - sqlCmd.append(m_stdValues).append(",").append(m_as.getC_AcctSchema_ID()).append(","); - // W_INVENTORY_Acct,W_DIFFERENCES_Acct,W_REVALUATION_Acct,W_INVACTUALADJUST_Acct - sqlCmd.append(getAcct("W_INVENTORY_Acct")).append(","); - sqlCmd.append(getAcct("W_DIFFERENCES_Acct")).append(","); - sqlCmd.append(getAcct("W_REVALUATION_Acct")).append(","); - sqlCmd.append(getAcct("W_INVACTUALADJUST_Acct")).append(", "); - // P_REVENUE_Acct,P_EXPENSE_Acct,P_ASSET_Acct,P_COGS_Acct, - sqlCmd.append(getAcct("P_REVENUE_Acct")).append(","); - sqlCmd.append(getAcct("P_EXPENSE_Acct")).append(","); - sqlCmd.append(getAcct("P_CostAdjustment_Acct")).append(","); - sqlCmd.append(getAcct("P_InventoryClearing_Acct")).append(","); - sqlCmd.append(getAcct("P_ASSET_Acct")).append(","); - sqlCmd.append(getAcct("P_COGS_Acct")).append(", "); - // P_PURCHASEPRICEVARIANCE_Acct,P_INVOICEPRICEVARIANCE_Acct,P_TRADEDISCOUNTREC_Acct,P_TRADEDISCOUNTGRANT_Acct, - sqlCmd.append(getAcct("P_PURCHASEPRICEVARIANCE_Acct")).append(","); - sqlCmd.append(getAcct("P_INVOICEPRICEVARIANCE_Acct")).append(","); - sqlCmd.append(getAcct("P_TRADEDISCOUNTREC_Acct")).append(","); - sqlCmd.append(getAcct("P_TRADEDISCOUNTGRANT_Acct")).append(", "); - // C_RECEIVABLE_Acct,C_Receivable_Services_Acct,C_PREPAYMENT_Acct, - sqlCmd.append(getAcct("C_RECEIVABLE_Acct")).append(","); - sqlCmd.append(getAcct("C_RECEIVABLE_SERVICES_Acct")).append(","); - sqlCmd.append(getAcct("C_PREPAYMENT_Acct")).append(", "); - // V_LIABILITY_Acct,V_LIABILITY_SERVICES_Acct,V_PREPAYMENT_Acct, - sqlCmd.append(getAcct("V_LIABILITY_Acct")).append(","); - sqlCmd.append(getAcct("V_LIABILITY_SERVICES_Acct")).append(","); - sqlCmd.append(getAcct("V_PREPAYMENT_Acct")).append(", "); - // PAYDISCOUNT_EXP_Acct,PAYDISCOUNT_REV_Acct,WRITEOFF_Acct, - sqlCmd.append(getAcct("PAYDISCOUNT_EXP_Acct")).append(","); - sqlCmd.append(getAcct("PAYDISCOUNT_REV_Acct")).append(","); - sqlCmd.append(getAcct("WRITEOFF_Acct")).append(", "); - // UNREALIZEDGAIN_Acct,UNREALIZEDLOSS_Acct,REALIZEDGAIN_Acct,REALIZEDLOSS_Acct, - sqlCmd.append(getAcct("UNREALIZEDGAIN_Acct")).append(","); - sqlCmd.append(getAcct("UNREALIZEDLOSS_Acct")).append(","); - sqlCmd.append(getAcct("REALIZEDGAIN_Acct")).append(","); - sqlCmd.append(getAcct("REALIZEDLOSS_Acct")).append(", "); - // WITHHOLDING_Acct,E_PREPAYMENT_Acct,E_EXPENSE_Acct, - sqlCmd.append(getAcct("WITHHOLDING_Acct")).append(","); - sqlCmd.append(getAcct("E_PREPAYMENT_Acct")).append(","); - sqlCmd.append(getAcct("E_EXPENSE_Acct")).append(", "); - // PJ_ASSET_Acct,PJ_WIP_Acct, - sqlCmd.append(getAcct("PJ_ASSET_Acct")).append(","); - sqlCmd.append(getAcct("PJ_WIP_Acct")).append(","); - // T_EXPENSE_Acct,T_LIABILITY_Acct,T_RECEIVABLES_Acct,T_DUE_Acct,T_CREDIT_Acct, - sqlCmd.append(getAcct("T_EXPENSE_Acct")).append(","); - sqlCmd.append(getAcct("T_LIABILITY_Acct")).append(","); - sqlCmd.append(getAcct("T_RECEIVABLES_Acct")).append(","); - sqlCmd.append(getAcct("T_DUE_Acct")).append(","); - sqlCmd.append(getAcct("T_CREDIT_Acct")).append(", "); - // B_INTRANSIT_Acct,B_ASSET_Acct,B_EXPENSE_Acct,B_INTERESTREV_Acct,B_INTERESTEXP_Acct, - sqlCmd.append(getAcct("B_INTRANSIT_Acct")).append(","); - sqlCmd.append(getAcct("B_ASSET_Acct")).append(","); - sqlCmd.append(getAcct("B_EXPENSE_Acct")).append(","); - sqlCmd.append(getAcct("B_INTERESTREV_Acct")).append(","); - sqlCmd.append(getAcct("B_INTERESTEXP_Acct")).append(","); - // B_UNIDENTIFIED_Acct,B_SETTLEMENTGAIN_Acct,B_SETTLEMENTLOSS_Acct, - sqlCmd.append(getAcct("B_UNIDENTIFIED_Acct")).append(","); - sqlCmd.append(getAcct("B_SETTLEMENTGAIN_Acct")).append(","); - sqlCmd.append(getAcct("B_SETTLEMENTLOSS_Acct")).append(","); - // B_REVALUATIONGAIN_Acct,B_REVALUATIONLOSS_Acct,B_PAYMENTSELECT_Acct,B_UNALLOCATEDCASH_Acct, - sqlCmd.append(getAcct("B_REVALUATIONGAIN_Acct")).append(","); - sqlCmd.append(getAcct("B_REVALUATIONLOSS_Acct")).append(","); - sqlCmd.append(getAcct("B_PAYMENTSELECT_Acct")).append(","); - sqlCmd.append(getAcct("B_UNALLOCATEDCASH_Acct")).append(", "); - // CH_EXPENSE_Acct,CH_REVENUE_Acct, - sqlCmd.append(getAcct("CH_EXPENSE_Acct")).append(","); - sqlCmd.append(getAcct("CH_REVENUE_Acct")).append(", "); - // UNEARNEDREVENUE_Acct,NOTINVOICEDRECEIVABLES_Acct,NOTINVOICEDREVENUE_Acct,NOTINVOICEDRECEIPTS_Acct, - sqlCmd.append(getAcct("UNEARNEDREVENUE_Acct")).append(","); - sqlCmd.append(getAcct("NOTINVOICEDRECEIVABLES_Acct")).append(","); - sqlCmd.append(getAcct("NOTINVOICEDREVENUE_Acct")).append(","); - sqlCmd.append(getAcct("NOTINVOICEDRECEIPTS_Acct")).append(", "); - // CB_ASSET_Acct,CB_CASHTRANSFER_Acct,CB_DIFFERENCES_Acct,CB_EXPENSE_Acct,CB_RECEIPT_Acct) - sqlCmd.append(getAcct("CB_ASSET_Acct")).append(","); - sqlCmd.append(getAcct("CB_CASHTRANSFER_Acct")).append(","); - sqlCmd.append(getAcct("CB_DIFFERENCES_Acct")).append(","); - sqlCmd.append(getAcct("CB_EXPENSE_Acct")).append(","); - sqlCmd.append(getAcct("CB_RECEIPT_Acct")).append(")"); - if (m_accountsOK) - no = DB.executeUpdate(sqlCmd.toString(), m_trx.getTrxName()); - else - no = -1; - if (no != 1) - { - String err = "Default Accounts NOT inserted"; + catch (Exception e) { + String err = e.getLocalizedMessage(); log.log(Level.SEVERE, err); m_info.append(err); m_trx.rollback(); @@ -834,22 +696,49 @@ public final class MSetup log.info("fini"); return true; } // createAccounting + + private void createAccountingRecord(String tableName) throws Exception + { + MTable table = MTable.get(m_ctx, tableName); + PO acct = table.getPO(0, m_trx.getTrxName()); + + MColumn[] cols = table.getColumns(false); + for (MColumn c : cols) { + String columnName = c.getColumnName(); + if (c.isStandardColumn()) { + } + else if (DisplayType.Account == c.getAD_Reference_ID()) { + acct.set_Value(columnName, getAcct(columnName)); + log.info("Account: " + columnName); + } + else if (DisplayType.YesNo == c.getAD_Reference_ID()) { + acct.set_Value(columnName, Boolean.TRUE); + log.info("YesNo: " + c.getColumnName()); + } + } + acct.setAD_Client_ID(m_client.getAD_Client_ID()); + acct.set_Value(I_C_AcctSchema.COLUMNNAME_C_AcctSchema_ID, m_as.getC_AcctSchema_ID()); + // + if (!acct.save()) { + throw new AdempiereUserError(CLogger.retrieveErrorString(table.getName() + " not created")); + } + } + /** - * Get Account ID for key - * @param key key - * @return C_ValidCombination_ID + * Get Account ID for key + * @param key key + * @return C_ValidCombination_ID + * @throws AdempiereUserError */ - private int getAcct (String key) + private Integer getAcct (String key) throws AdempiereUserError { log.fine(key); // Element int C_ElementValue_ID = m_nap.getC_ElementValue_ID(key.toUpperCase()); if (C_ElementValue_ID == 0) { - log.severe("Account not defined: " + key); - m_accountsOK = false; - return 0; + throw new AdempiereUserError("Account not defined: " + key); } MAccount vc = MAccount.getDefault(m_as, true); // optional null @@ -857,15 +746,12 @@ public final class MSetup vc.setAccount_ID(C_ElementValue_ID); if (!vc.save()) { - log.severe("Not Saved - Key=" + key + ", C_ElementValue_ID=" + C_ElementValue_ID); - m_accountsOK = false; - return 0; + throw new AdempiereUserError("Not Saved - Key=" + key + ", C_ElementValue_ID=" + C_ElementValue_ID); } int C_ValidCombination_ID = vc.getC_ValidCombination_ID(); if (C_ValidCombination_ID == 0) { - log.severe("No account - Key=" + key + ", C_ElementValue_ID=" + C_ElementValue_ID); - m_accountsOK = false; + throw new AdempiereUserError("No account - Key=" + key + ", C_ElementValue_ID=" + C_ElementValue_ID); } return C_ValidCombination_ID; } // getAcct diff --git a/client/src/org/compiere/apps/form/VSetup.java b/client/src/org/compiere/apps/form/VSetup.java index f330569689..d1ba5901e8 100644 --- a/client/src/org/compiere/apps/form/VSetup.java +++ b/client/src/org/compiere/apps/form/VSetup.java @@ -1,5 +1,5 @@ /****************************************************************************** - * Product: Adempiere ERP & CRM Smart Business Solution * + * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * 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 * @@ -221,31 +221,36 @@ public class VSetup extends CPanel Currency currency = Currency.getInstance(locale); // Currency String sql = "SELECT C_Currency_ID, Description, ISO_Code FROM C_Currency ORDER BY 2"; // teo_sarca [ 1691388 ] + Statement stmt = null; + ResultSet rs = null; try { - Statement stmt = DB.createStatement(); - ResultSet rs = stmt.executeQuery(sql); + stmt = DB.createStatement(); + rs = stmt.executeQuery(sql); while (rs.next()) { fCurrency.addItem(new KeyNamePair(rs.getInt(1) , rs.getString(2))); // Currency from locale will be the default currency - teo_sarca [ 1691388 ] if (currency != null && currency.getCurrencyCode().equals(rs.getString(3))) fCurrency.setSelectedIndex(fCurrency.getItemCount() - 1); } - rs.close(); - stmt.close(); } catch (SQLException e1) { log.log(Level.SEVERE, "VSetup.dynInit -currency", e1); } + finally + { + DB.close(rs, stmt); + rs = null; stmt = null; + } // Country int C_Country_ID = 0; sql = "SELECT C_Country_ID, Name, CountryCode FROM C_Country ORDER BY 2"; // teo_sarca [ 1691388 ] try { - Statement stmt = DB.createStatement(); - ResultSet rs = stmt.executeQuery(sql); + stmt = DB.createStatement(); + rs = stmt.executeQuery(sql); while (rs.next()) { fCountry.addItem(new KeyNamePair(rs.getInt(1) , rs.getString(2))); // Country from locale will be the default country - teo_sarca [ 1691388 ] @@ -254,13 +259,16 @@ public class VSetup extends CPanel C_Country_ID = rs.getInt(1); } } - rs.close(); - stmt.close(); } catch (SQLException e1) { log.log(Level.SEVERE, "VSetup.dynInit -country", e1); } + finally + { + DB.close(rs, stmt); + rs = null; stmt = null; + } // Region (optional) sql = "SELECT C_Region_ID, Name, C_Country_ID FROM C_Region ORDER BY C_Country_ID, Name"; @@ -268,8 +276,8 @@ public class VSetup extends CPanel try { fRegion.addItem(new KeyNamePair(0, " ")); - Statement stmt = DB.createStatement(); - ResultSet rs = stmt.executeQuery(sql); + stmt = DB.createStatement(); + rs = stmt.executeQuery(sql); while (rs.next()) { fRegion.addItem(new KeyNamePair(rs.getInt(1) , rs.getString(2))); // First region for selected country will be the default - teo_sarca [ 1691388 ] @@ -278,13 +286,16 @@ public class VSetup extends CPanel isSelected = true; } } - rs.close(); - stmt.close(); } catch (SQLException e1) { log.log(Level.SEVERE, "VSetup.dynInit -region", e1); } + finally + { + DB.close(rs, stmt); + rs = null; stmt = null; + } // General Listeners confirmPanel.addActionListener(this); @@ -451,16 +462,17 @@ public class VSetup extends CPanel { ADialog.error(m_WindowNo, this, "AccountSetupError"); dispose(); + } else { + // Generate Entities + KeyNamePair p = (KeyNamePair)fCountry.getSelectedItem(); + int C_Country_ID = p.getKey(); + p = (KeyNamePair)fRegion.getSelectedItem(); + int C_Region_ID = p.getKey(); + ms.createEntities(C_Country_ID, fCity.getText(), C_Region_ID, currency.getKey()); + info += ms.getInfo(); + // Create Print Documents + PrintUtil.setupPrintForm(ms.getAD_Client_ID()); } - // Generate Entities - KeyNamePair p = (KeyNamePair)fCountry.getSelectedItem(); - int C_Country_ID = p.getKey(); - p = (KeyNamePair)fRegion.getSelectedItem(); - int C_Region_ID = p.getKey(); - ms.createEntities(C_Country_ID, fCity.getText(), C_Region_ID, currency.getKey()); - info += ms.getInfo(); - // Create Print Documents - PrintUtil.setupPrintForm(ms.getAD_Client_ID()); } ADialog.info(m_WindowNo, this, "VSetup", info);