001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.endow.businessobject; 017 018 import java.util.LinkedHashMap; 019 020 import org.apache.log4j.Logger; 021 import org.kuali.kfs.coa.businessobject.Account; 022 import org.kuali.kfs.coa.businessobject.Chart; 023 import org.kuali.kfs.coa.businessobject.ObjectCodeCurrent; 024 import org.kuali.kfs.coa.businessobject.ProjectCode; 025 import org.kuali.kfs.coa.businessobject.SubAccount; 026 import org.kuali.kfs.coa.businessobject.SubObjectCodeCurrent; 027 import org.kuali.kfs.sys.KFSPropertyConstants; 028 import org.kuali.kfs.sys.businessobject.AccountingLineBase; 029 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 030 import org.kuali.rice.kns.util.KualiDecimal; 031 032 /** 033 * Provides basic implementation for the accounting lines used in the Transfer of Funds documents in the Endowment module. 034 */ 035 public class EndowmentAccountingLineBase extends PersistableBusinessObjectBase implements EndowmentAccountingLine { 036 private static Logger LOG = Logger.getLogger(AccountingLineBase.class); 037 038 private String documentNumber; 039 private Integer accountingLineNumber; // relative to the grouping of acctng lines 040 private KualiDecimal amount; 041 private String organizationReferenceId; 042 protected String financialDocumentLineTypeCode; 043 044 private String chartOfAccountsCode; 045 private String accountNumber; 046 private String financialObjectCode; 047 private String subAccountNumber; 048 private String financialSubObjectCode; 049 private String projectCode; 050 051 // bo references 052 private Chart chart; 053 private Account account; 054 private ObjectCodeCurrent objectCode; 055 private SubAccount subAccount; 056 private SubObjectCodeCurrent subObjectCode; 057 private ProjectCode project; 058 059 /** 060 * This constructor sets up empty instances for the dependent objects. 061 */ 062 public EndowmentAccountingLineBase() { 063 setAmount(KualiDecimal.ZERO); 064 chart = new Chart(); 065 account = new Account(); 066 objectCode = new ObjectCodeCurrent(); 067 subAccount = new SubAccount(); 068 subObjectCode = new SubObjectCodeCurrent(); 069 project = new ProjectCode(); 070 } 071 072 073 /** 074 * @return Returns the account. 075 */ 076 public Account getAccount() { 077 return account; 078 } 079 080 /** 081 * @param account The account to set. 082 * @deprecated 083 */ 084 public void setAccount(Account account) { 085 this.account = account; 086 } 087 088 /** 089 * @return Returns the chartOfAccountsCode. 090 */ 091 public Chart getChart() { 092 return chart; 093 } 094 095 /** 096 * @param chart The chartOfAccountsCode to set. 097 * @deprecated 098 */ 099 public void setChart(Chart chart) { 100 this.chart = chart; 101 } 102 103 /** 104 * @return Returns the documentNumber. 105 */ 106 public String getDocumentNumber() { 107 return documentNumber; 108 } 109 110 /** 111 * @return Returns the amount. 112 */ 113 public KualiDecimal getAmount() { 114 return amount; 115 } 116 117 /** 118 * @param amount The amount to set. 119 */ 120 public void setAmount(KualiDecimal amount) { 121 this.amount = amount; 122 } 123 124 /** 125 * @return Returns the objectCode. 126 */ 127 public ObjectCodeCurrent getObjectCode() { 128 return objectCode; 129 } 130 131 /** 132 * @param objectCode The objectCode to set. 133 * @deprecated 134 */ 135 public void setObjectCode(ObjectCodeCurrent objectCode) { 136 this.objectCode = objectCode; 137 } 138 139 /** 140 * @return Returns the organizationReferenceId. 141 */ 142 public String getOrganizationReferenceId() { 143 return organizationReferenceId; 144 } 145 146 /** 147 * @param organizationReferenceId The organizationReferenceId to set. 148 */ 149 public void setOrganizationReferenceId(String organizationReferenceId) { 150 this.organizationReferenceId = organizationReferenceId; 151 } 152 153 /** 154 * Gets the accountingLineNumber. 155 * 156 * @return accountingLineNumber 157 */ 158 public Integer getAccountingLineNumber() { 159 return accountingLineNumber; 160 } 161 162 163 /** 164 * Sets the accountingLineNumber. 165 * 166 * @param accountingLineNumber 167 */ 168 public void setAccountingLineNumber(Integer accountingLineNumber) { 169 this.accountingLineNumber = accountingLineNumber; 170 } 171 172 /** 173 * @return Returns the projectCode. 174 */ 175 public String getProjectCode() { 176 return projectCode; 177 } 178 179 /** 180 * @param projectCode The projectCode to set. 181 */ 182 public void setProjectCode(String projectCode) { 183 this.projectCode = projectCode; 184 } 185 186 /** 187 * @return Returns the subAccount. 188 */ 189 public SubAccount getSubAccount() { 190 return subAccount; 191 } 192 193 /** 194 * @param subAccount The subAccount to set. 195 * @deprecated 196 */ 197 public void setSubAccount(SubAccount subAccount) { 198 this.subAccount = subAccount; 199 } 200 201 /** 202 * @return Returns the subObjectCode. 203 */ 204 public SubObjectCodeCurrent getSubObjectCode() { 205 return subObjectCode; 206 } 207 208 /** 209 * @param subObjectCode The subObjectCode to set. 210 * @deprecated 211 */ 212 public void setSubObjectCode(SubObjectCodeCurrent subObjectCode) { 213 this.subObjectCode = subObjectCode; 214 } 215 216 /** 217 * @param documentNumber The documentNumber to set. 218 */ 219 public void setDocumentNumber(String documentNumber) { 220 this.documentNumber = documentNumber; 221 } 222 223 /** 224 * @return Returns the accountNumber. 225 */ 226 public String getAccountNumber() { 227 return accountNumber; 228 } 229 230 /** 231 * @param accountNumber The accountNumber to set. 232 */ 233 public void setAccountNumber(String accountNumber) { 234 this.accountNumber = accountNumber; 235 // if accounts can't cross charts, set chart code whenever account number is set 236 // SpringContext.getBean(AccountService.class).populateAccountingLineChartIfNeeded(this); 237 } 238 239 /** 240 * @return Returns the chartOfAccountsCode. 241 */ 242 public String getChartOfAccountsCode() { 243 return chartOfAccountsCode; 244 } 245 246 /** 247 * @param chartOfAccountsCode The chartOfAccountsCode to set. 248 */ 249 public void setChartOfAccountsCode(String chartOfAccountsCode) { 250 this.chartOfAccountsCode = chartOfAccountsCode; 251 } 252 253 /** 254 * @return Returns the financialObjectCode. 255 */ 256 public String getFinancialObjectCode() { 257 return financialObjectCode; 258 } 259 260 /** 261 * @param financialObjectCode The financialObjectCode to set. 262 */ 263 public void setFinancialObjectCode(String financialObjectCode) { 264 this.financialObjectCode = financialObjectCode; 265 } 266 267 /** 268 * @return Returns the financialSubObjectCode. 269 */ 270 public String getFinancialSubObjectCode() { 271 return financialSubObjectCode; 272 } 273 274 /** 275 * @param financialSubObjectCode The financialSubObjectCode to set. 276 */ 277 public void setFinancialSubObjectCode(String financialSubObjectCode) { 278 this.financialSubObjectCode = financialSubObjectCode; 279 } 280 281 /** 282 * @return Returns the financialDocumentLineTypeCode. 283 */ 284 public String getFinancialDocumentLineTypeCode() { 285 return financialDocumentLineTypeCode; 286 } 287 288 /** 289 * @param financialDocumentLineTypeCode The financialDocumentLineTypeCode to set. 290 */ 291 public void setFinancialDocumentLineTypeCode(String financialDocumentLineTypeCode) { 292 this.financialDocumentLineTypeCode = financialDocumentLineTypeCode; 293 } 294 295 /** 296 * @return Returns the project. 297 */ 298 public ProjectCode getProject() { 299 return project; 300 } 301 302 /** 303 * @param project The project to set. 304 * @deprecated 305 */ 306 public void setProject(ProjectCode project) { 307 this.project = project; 308 } 309 310 /** 311 * @return Returns the subAccountNumber. 312 */ 313 public String getSubAccountNumber() { 314 return subAccountNumber; 315 } 316 317 /** 318 * @param subAccountNumber The subAccountNumber to set. 319 */ 320 public void setSubAccountNumber(String subAccountNumber) { 321 this.subAccountNumber = subAccountNumber; 322 } 323 324 /** 325 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 326 */ 327 protected LinkedHashMap toStringMapper() { 328 LinkedHashMap m = new LinkedHashMap(); 329 330 m.put(KFSPropertyConstants.DOCUMENT_NUMBER, documentNumber); 331 332 m.put("accountingLineNumber", accountingLineNumber); 333 m.put("amount", amount); 334 m.put("chartOfAccountsCode", getChartOfAccountsCode()); 335 m.put("accountNumber", getAccountNumber()); 336 m.put("objectCode", getFinancialObjectCode()); 337 m.put("subAccountNumber", getSubAccountNumber()); 338 m.put("financialSubObjectCode", getFinancialSubObjectCode()); 339 m.put("projectCode", getProjectCode()); 340 m.put("organizationReferenceId", getOrganizationReferenceId()); 341 342 return m; 343 } 344 345 /** 346 * @see org.kuali.kfs.module.endow.businessobject.EndowmentAccountingLine#isSourceAccountingLine() 347 */ 348 public boolean isSourceAccountingLine() { 349 return (this instanceof SourceEndowmentAccountingLine); 350 } 351 352 /** 353 * @see org.kuali.kfs.module.endow.businessobject.EndowmentAccountingLine#isTargetAccountingLine() 354 */ 355 public boolean isTargetAccountingLine() { 356 return (this instanceof TargetEndowmentAccountingLine); 357 } 358 359 }