1 14 package org.compiere.model; 15 16 import java.sql.*; 17 import java.util.*; 18 19 import org.compiere.util.*; 20 import java.io.*; 21 22 28 public final class AcctSchema implements Serializable 29 { 30 34 public AcctSchema (int C_AcctSchema_ID) 35 { 36 Log.trace(Log.l1_User, "AcctSchema - " + C_AcctSchema_ID); 37 load (C_AcctSchema_ID); 38 } 40 41 private int m_C_AcctSchema_ID = 0; 42 43 44 private String m_Name = null; 45 46 private String m_GAAP = null; 47 48 private boolean m_IsAccrual = false; 49 50 private boolean m_HasAlias = true; 51 52 private String m_CostingMethod = null; 53 54 private int m_C_Currency_ID = 0; 55 private int m_AD_Client_ID = 0; 56 private boolean m_IsTradeDiscountPosted = false; 57 private boolean m_IsDiscountCorrectsTax = false; 58 59 60 61 private String m_CurrencyRateType = "S"; 63 64 private boolean m_UseSuspenseBalancing = false; 65 66 private Account m_SuspenseBalancing_Acct = null; 67 68 private boolean m_UseSuspenseError = false; 69 70 private Account m_SuspenseError_Acct = null; 71 72 private boolean m_UseCurrencyBalancing = false; 73 74 private Account m_CurrencyBalancing_Acct = null; 75 76 private Account m_DueTo_Acct = null; 77 78 private Account m_DueFrom_Acct = null; 79 81 82 ArrayList m_elementList = null; 83 84 public static final String COSTING_AVERAGE = "A"; 86 public static final String COSTING_STANDARD = "S"; 87 public static final String COSTING_LASTPO = "P"; 90 91 public static final String GAAP_US = "US"; 93 public static final String GAAP_INTERNATIONAL = "UN"; 94 public static final String GAAP_GERMAN = "DE"; 95 96 97 98 99 private static CCache s_schema = new CCache("acctSchema", 3); 101 106 public static synchronized ArrayList getAcctSchemaList (int AD_Client_ID) 107 { 108 Integer key = new Integer (AD_Client_ID); 110 if (s_schema.containsKey(key)) 111 return (ArrayList)s_schema.get(key); 112 113 ArrayList list = new ArrayList(); 115 String sql = "SELECT C_AcctSchema1_ID," 116 + "Acct2_Active,C_AcctSchema2_ID," 117 + "Acct3_Active,C_AcctSchema3_ID " 118 + "FROM AD_ClientInfo WHERE AD_Client_ID=?"; 119 try 120 { 121 PreparedStatement pstmt = DB.prepareStatement(sql); 122 pstmt.setInt(1, AD_Client_ID); 123 ResultSet rs = pstmt.executeQuery(); 124 if (rs.next()) 125 { 126 int as = rs.getInt(1); 127 list.add(new AcctSchema(as)); 128 if (rs.getString(2).equals("Y")) 130 { 131 as = rs.getInt(3); 132 if (as != 0) 133 list.add(new AcctSchema(as)); 134 } 135 if (rs.getString(4).equals("Y")) 136 { 137 as = rs.getInt(5); 138 if (as != 0) 139 list.add(new AcctSchema(as)); 140 } 141 } 142 rs.close(); 143 pstmt.close(); 144 } 145 catch (SQLException e) 146 { 147 Log.error ("AcctSchema.getAcctSchemaList", e); 148 } 149 s_schema.put(key, list); 151 return list; 152 } 154 159 public static AcctSchema[] getAcctSchemaArray(int AD_Client_ID) 160 { 161 ArrayList list = getAcctSchemaList (AD_Client_ID); 162 AcctSchema[] retValue = new AcctSchema [list.size()]; 163 list.toArray(retValue); 164 return retValue; 165 } 167 168 169 173 public void load (int newC_AcctSchema_ID) 174 { 175 Log.trace(Log.l3_Util, "AcctSchema.load - " + newC_AcctSchema_ID); 176 m_C_AcctSchema_ID = newC_AcctSchema_ID; 178 String sql = "SELECT Name,GAAP,IsAccrual,CostingMethod,C_Currency_ID,HasAlias, " 179 + "IsTradeDiscountPosted,IsDiscountCorrectsTax, AD_Client_ID " 180 + "FROM C_AcctSchema WHERE C_AcctSchema_ID=?"; 181 try 182 { 183 PreparedStatement pstmt = DB.prepareStatement(sql); 184 pstmt.setInt(1, m_C_AcctSchema_ID); 185 ResultSet rs = pstmt.executeQuery(); 186 if (rs.next()) 187 { 188 m_Name = rs.getString(1); 189 m_GAAP = rs.getString(2); 190 m_IsAccrual = rs.getString(3).equals("Y"); 191 m_CostingMethod = rs.getString(4); 192 m_C_Currency_ID = rs.getInt(5); 193 m_HasAlias = rs.getString(6).equals("Y"); 194 m_IsTradeDiscountPosted = rs.getString(7).equals("Y"); 195 m_IsDiscountCorrectsTax = rs.getString(8).equals("Y"); 196 m_AD_Client_ID = rs.getInt(9); 197 } 198 rs.close(); 199 pstmt.close(); 200 sql = "SELECT UseSuspenseBalancing,SuspenseBalancing_Acct, " + "UseSuspenseError,SuspenseError_Acct, " + "UseCurrencyBalancing,CurrencyBalancing_Acct, " + "RetainedEarning_Acct,IncomeSummary_Acct, " + "InterCompanyDueTo_Acct,InterCompanyDueFrom_Acct " + "FROM C_AcctSchema_GL " 207 + "WHERE C_AcctSchema_ID=?"; 208 pstmt = DB.prepareStatement(sql); 209 pstmt.setInt(1, m_C_AcctSchema_ID); 210 rs = pstmt.executeQuery(); 211 if (rs.next()) 212 { 213 m_UseSuspenseBalancing = rs.getString(1).equals("Y"); 215 int ID = rs.getInt(2); 216 if (m_UseSuspenseBalancing && ID != 0) 217 m_SuspenseBalancing_Acct = Account.getAccount(ID); 218 else 219 m_UseSuspenseBalancing = false; 220 Log.trace(Log.l4_Data, "SuspenseBalancing=" + m_UseSuspenseBalancing + " " + m_SuspenseBalancing_Acct); 221 m_UseSuspenseError = rs.getString(3).equals("Y"); 223 ID = rs.getInt(4); 224 if (m_UseSuspenseError && ID != 0) 225 m_SuspenseError_Acct = Account.getAccount(ID); 226 else 227 m_UseSuspenseError = false; 228 Log.trace(Log.l4_Data, "SuspenseError=" + m_UseSuspenseError + " " + m_SuspenseError_Acct); 229 m_UseCurrencyBalancing = rs.getString(5).equals("Y"); 231 ID = rs.getInt(6); 232 if (m_UseCurrencyBalancing && ID != 0) 233 m_CurrencyBalancing_Acct = Account.getAccount(ID); 234 else 235 m_UseCurrencyBalancing = false; 236 Log.trace(Log.l4_Data, "CurrencyBalancing=" + m_UseCurrencyBalancing + " " + m_CurrencyBalancing_Acct); 237 ID = rs.getInt(9); 240 if (ID != 0) 241 m_DueTo_Acct = Account.getAccount(ID); 242 ID = rs.getInt(10); 243 if (ID != 0) 244 m_DueFrom_Acct = Account.getAccount(ID); 245 } 246 rs.close(); 247 pstmt.close(); 248 249 251 m_elementList = AcctSchemaElement.getAcctSchemaElementList(m_C_AcctSchema_ID); 253 } 254 catch (SQLException e) 255 { 256 Log.error ("AcctSchema.load SQL=" + sql, e); 257 m_C_AcctSchema_ID = 0; 258 } 259 } 261 262 263 264 268 public int getC_AcctSchema_ID() 269 { 270 return m_C_AcctSchema_ID; 271 } 273 277 public ArrayList getAcctSchemaElementList() 278 { 279 return m_elementList; 280 } 282 287 public AcctSchemaElement getAcctSchemaElement (String segmentType) 288 { 289 int size = m_elementList.size(); 290 for (int i = 0; i < size; i++) 291 { 292 AcctSchemaElement ase = (AcctSchemaElement)m_elementList.get(i); 293 if (ase.getSegmentType().equals(segmentType)) 294 return ase; 295 } 296 return null; 297 } 299 304 public boolean isAcctSchemaElement (String segmentType) 305 { 306 return getAcctSchemaElement(segmentType) != null; 307 } 309 310 311 315 public String toString() 316 { 317 StringBuffer sb = new StringBuffer ("AcctSchema["); 318 sb.append(m_C_AcctSchema_ID); 319 sb.append("-").append(m_Name); 320 sb.append("]"); 321 return sb.toString(); 322 } 324 328 public String getName() 329 { 330 return m_Name; 331 } 333 337 public String getGAAP() 338 { 339 return m_GAAP; 340 } 342 346 public String getCostingMethod() 347 { 348 return m_CostingMethod; 349 } 351 355 public boolean isAccrual() 356 { 357 return m_IsAccrual; 358 } 360 364 public boolean hasAlias() 365 { 366 return m_HasAlias; 367 } 369 373 public boolean isTradeDiscountPosted() 374 { 375 return m_IsTradeDiscountPosted; 376 } 377 378 382 public boolean isDiscountCorrectTax() 383 { 384 return m_IsDiscountCorrectsTax; 385 } 386 387 391 public int getAD_Client_ID() 392 { 393 return m_AD_Client_ID; 394 } 396 400 public int getC_Currency_ID() 401 { 402 return m_C_Currency_ID; 403 } 405 409 public String getCurrencyRateType() 410 { 411 return m_CurrencyRateType; 412 } 414 418 public boolean isSuspenseBalancing() 419 { 420 return m_UseSuspenseBalancing; 421 } 423 427 public Account getSuspenseBalancing_Acct() 428 { 429 return m_SuspenseBalancing_Acct; 430 } 432 436 public boolean isSuspenseError() 437 { 438 return m_UseSuspenseError; 439 } 441 445 public Account getSuspenseError_Acct() 446 { 447 return m_SuspenseError_Acct; 448 } 450 454 public boolean isCurrencyBalancing() 455 { 456 return m_UseCurrencyBalancing; 457 } 459 463 public Account getCurrencyBalancing_Acct() 464 { 465 return m_CurrencyBalancing_Acct; 466 } 468 473 public Account getDueTo_Acct(String segment) 474 { 475 return m_DueTo_Acct; 476 } 478 483 public Account getDueFrom_Acct(String segment) 484 { 485 return m_DueFrom_Acct; 486 } 488 private void writeObject(ObjectOutputStream oos) throws IOException 489 { 490 oos.defaultWriteObject(); 491 } 492 private void readObject(ObjectInputStream ois) throws ClassNotFoundException , IOException 493 { 494 ois.defaultReadObject(); 495 } 496 497 } | Popular Tags |