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.gl.businessobject; 017 018 import java.sql.Date; 019 import java.sql.Timestamp; 020 import java.util.LinkedHashMap; 021 022 import org.kuali.kfs.coa.businessobject.Account; 023 import org.kuali.kfs.coa.businessobject.BalanceType; 024 import org.kuali.kfs.coa.businessobject.Chart; 025 import org.kuali.kfs.coa.businessobject.ObjectCode; 026 import org.kuali.kfs.coa.businessobject.SubAccount; 027 import org.kuali.kfs.coa.businessobject.SubObjectCode; 028 import org.kuali.kfs.sys.KFSPropertyConstants; 029 import org.kuali.kfs.sys.businessobject.OriginationCode; 030 import org.kuali.kfs.sys.businessobject.SystemOptions; 031 import org.kuali.kfs.sys.context.SpringContext; 032 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; 033 import org.kuali.rice.kew.service.impl.KEWModuleService; 034 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 035 import org.kuali.rice.kns.util.KualiDecimal; 036 037 /** 038 * Represents the encumbrance amount for a specific university fiscal year, 039 * chart of accounts code, account number, sub account number, object code, 040 * sub object code, balance type code, document type code, origin code, and document number. 041 * This encumbrance object contains amounts for actual enumbrance amount, closed amount, 042 * outstanding amount 043 * 044 */ 045 public class Encumbrance extends PersistableBusinessObjectBase { 046 static final long serialVersionUID = -7494473472438516396L; 047 048 private Integer universityFiscalYear; 049 private String chartOfAccountsCode; 050 private String accountNumber; 051 private String subAccountNumber; 052 private String objectCode; 053 private String subObjectCode; 054 private String balanceTypeCode; 055 private String documentTypeCode; 056 private String originCode; 057 private String documentNumber; 058 private String transactionEncumbranceDescription; 059 private Date transactionEncumbranceDate; 060 private KualiDecimal accountLineEncumbranceAmount; 061 private KualiDecimal accountLineEncumbranceClosedAmount; 062 private KualiDecimal accountLineEncumbranceOutstandingAmount; 063 private String accountLineEncumbrancePurgeCode; 064 private Timestamp timestamp; 065 066 private SubAccount subAccount; 067 private Chart chart; 068 private Account account; 069 private SubObjectCode financialSubObject; 070 private DocumentTypeEBO financialSystemDocumentTypeCode; 071 072 private ObjectCode financialObject; 073 private BalanceType balanceType; 074 private OriginationCode originationCode; 075 private SystemOptions option; 076 077 private TransientBalanceInquiryAttributes dummyBusinessObject; 078 079 public Encumbrance() { 080 } 081 082 public Encumbrance(Transaction t) { 083 universityFiscalYear = t.getUniversityFiscalYear(); 084 chartOfAccountsCode = t.getChartOfAccountsCode(); 085 accountNumber = t.getAccountNumber(); 086 subAccountNumber = t.getSubAccountNumber(); 087 objectCode = t.getFinancialObjectCode(); 088 subObjectCode = t.getFinancialSubObjectCode(); 089 balanceTypeCode = t.getFinancialBalanceTypeCode(); 090 documentTypeCode = t.getFinancialDocumentTypeCode(); 091 originCode = t.getFinancialSystemOriginationCode(); 092 documentNumber = t.getDocumentNumber(); 093 transactionEncumbranceDescription = t.getTransactionLedgerEntryDescription(); 094 transactionEncumbranceDate = t.getTransactionDate(); 095 accountLineEncumbranceAmount = KualiDecimal.ZERO; 096 accountLineEncumbranceClosedAmount = KualiDecimal.ZERO; 097 accountLineEncumbrancePurgeCode = " "; 098 this.dummyBusinessObject = new TransientBalanceInquiryAttributes(); 099 } 100 101 /** 102 * Constructs a AccountBalance.java per the primary keys only of the passed in accountBalanceHistory 103 * @param accountBalanceHistory 104 */ 105 public Encumbrance(EncumbranceHistory encumbranceHistory) { 106 universityFiscalYear = encumbranceHistory.getUniversityFiscalYear(); 107 chartOfAccountsCode = encumbranceHistory.getChartOfAccountsCode(); 108 accountNumber = encumbranceHistory.getAccountNumber(); 109 subAccountNumber = encumbranceHistory.getSubAccountNumber(); 110 objectCode = encumbranceHistory.getObjectCode(); 111 subObjectCode = encumbranceHistory.getSubObjectCode(); 112 balanceTypeCode = encumbranceHistory.getBalanceTypeCode(); 113 documentTypeCode = encumbranceHistory.getDocumentTypeCode(); 114 originCode = encumbranceHistory.getOriginCode(); 115 documentNumber = encumbranceHistory.getDocumentNumber(); 116 } 117 118 119 protected LinkedHashMap toStringMapper() { 120 LinkedHashMap map = new LinkedHashMap(); 121 map.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, getUniversityFiscalYear()); 122 map.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, getChartOfAccountsCode()); 123 map.put(KFSPropertyConstants.ACCOUNT_NUMBER, getAccountNumber()); 124 map.put(KFSPropertyConstants.SUB_ACCOUNT_NUMBER, getSubAccountNumber()); 125 map.put(KFSPropertyConstants.OBJECT_CODE, getObjectCode()); 126 map.put(KFSPropertyConstants.SUB_OBJECT_CODE, getSubObjectCode()); 127 map.put(KFSPropertyConstants.BALANCE_TYPE_CODE, getBalanceTypeCode()); 128 map.put(KFSPropertyConstants.ENCUMBRANCE_DOCUMENT_TYPE_CODE, getDocumentTypeCode()); 129 map.put(KFSPropertyConstants.ORIGIN_CODE, getOriginCode()); 130 map.put(KFSPropertyConstants.DOCUMENT_NUMBER, getDocumentNumber()); 131 map.put(KFSPropertyConstants.ACCOUNT_LINE_ENCUMBRANCE_AMOUNT, getAccountLineEncumbranceAmount()); 132 map.put(KFSPropertyConstants.ACCOUNT_LINE_ENCUMBRANCE_CLOSED_AMOUNT, getAccountLineEncumbranceClosedAmount()); 133 return map; 134 } 135 136 public OriginationCode getOriginationCode() { 137 return originationCode; 138 } 139 140 public void setOriginationCode(OriginationCode originationCode) { 141 this.originationCode = originationCode; 142 } 143 144 /** 145 * @return Returns the accountLineEncumbranceAmount. 146 */ 147 public KualiDecimal getAccountLineEncumbranceAmount() { 148 return accountLineEncumbranceAmount; 149 } 150 151 /** 152 * @param accountLineEncumbranceAmount The accountLineEncumbranceAmount to set. 153 */ 154 public void setAccountLineEncumbranceAmount(KualiDecimal accountLineEncumbranceAmount) { 155 this.accountLineEncumbranceAmount = accountLineEncumbranceAmount; 156 } 157 158 /** 159 * @return Returns the accountLineEncumbranceClearedAmount. 160 */ 161 public KualiDecimal getAccountLineEncumbranceClosedAmount() { 162 return accountLineEncumbranceClosedAmount; 163 } 164 165 public void setAccountLineEncumbranceOutstandingAmount() { 166 } 167 168 public KualiDecimal getAccountLineEncumbranceOutstandingAmount() { 169 return accountLineEncumbranceAmount.subtract(accountLineEncumbranceClosedAmount); 170 } 171 172 /** 173 * @param accountLineEncumbranceClearedAmount The accountLineEncumbranceClearedAmount to set. 174 */ 175 public void setAccountLineEncumbranceClosedAmount(KualiDecimal accountLineEncumbranceClosedAmount) { 176 this.accountLineEncumbranceClosedAmount = accountLineEncumbranceClosedAmount; 177 } 178 179 /** 180 * @return Returns the accountLineEncumbrancePrg. 181 */ 182 public String getAccountLineEncumbrancePurgeCode() { 183 return accountLineEncumbrancePurgeCode; 184 } 185 186 /** 187 * @param accountLineEncumbrancePrg The accountLineEncumbrancePrg to set. 188 */ 189 public void setAccountLineEncumbrancePurgeCode(String accountLineEncumbrancePurgeCode) { 190 this.accountLineEncumbrancePurgeCode = accountLineEncumbrancePurgeCode; 191 } 192 193 /** 194 * @return Returns the accountNumber. 195 */ 196 public String getAccountNumber() { 197 return accountNumber; 198 } 199 200 /** 201 * @param accountNumber The accountNumber to set. 202 */ 203 public void setAccountNumber(String accountNumber) { 204 this.accountNumber = accountNumber; 205 } 206 207 /** 208 * @return Returns the balanceTypeCode. 209 */ 210 public String getBalanceTypeCode() { 211 return balanceTypeCode; 212 } 213 214 /** 215 * @param balanceTypeCode The balanceTypeCode to set. 216 */ 217 public void setBalanceTypeCode(String balanceTypeCode) { 218 this.balanceTypeCode = balanceTypeCode; 219 } 220 221 /** 222 * @return Returns the chartOfAccountsCode. 223 */ 224 public String getChartOfAccountsCode() { 225 return chartOfAccountsCode; 226 } 227 228 /** 229 * @param chartOfAccountsCode The chartOfAccountsCode to set. 230 */ 231 public void setChartOfAccountsCode(String chartOfAccountsCode) { 232 this.chartOfAccountsCode = chartOfAccountsCode; 233 } 234 235 /** 236 * @return Returns the documentNumber. 237 */ 238 public String getDocumentNumber() { 239 return documentNumber; 240 } 241 242 /** 243 * @param documentNumber The documentNumber to set. 244 */ 245 public void setDocumentNumber(String documentNumber) { 246 this.documentNumber = documentNumber; 247 } 248 249 /** 250 * @return Returns the documentTypeCode. 251 */ 252 public String getDocumentTypeCode() { 253 return documentTypeCode; 254 } 255 256 /** 257 * @param documentTypeCode The documentTypeCode to set. 258 */ 259 public void setDocumentTypeCode(String documentTypeCode) { 260 this.documentTypeCode = documentTypeCode; 261 } 262 263 /** 264 * @return Returns the objectCode. 265 */ 266 public String getObjectCode() { 267 return objectCode; 268 } 269 270 /** 271 * @param objectCode The objectCode to set. 272 */ 273 public void setObjectCode(String objectCode) { 274 this.objectCode = objectCode; 275 } 276 277 /** 278 * @return Returns the originCode. 279 */ 280 public String getOriginCode() { 281 return originCode; 282 } 283 284 /** 285 * @param originCode The originCode to set. 286 */ 287 public void setOriginCode(String originCode) { 288 this.originCode = originCode; 289 } 290 291 /** 292 * @return Returns the subAccountNumber. 293 */ 294 public String getSubAccountNumber() { 295 return subAccountNumber; 296 } 297 298 /** 299 * @param subAccountNumber The subAccountNumber to set. 300 */ 301 public void setSubAccountNumber(String subAccountNumber) { 302 this.subAccountNumber = subAccountNumber; 303 } 304 305 /** 306 * @return Returns the subObjectCode. 307 */ 308 public String getSubObjectCode() { 309 return subObjectCode; 310 } 311 312 /** 313 * @param subObjectCode The subObjectCode to set. 314 */ 315 public void setSubObjectCode(String subObjectCode) { 316 this.subObjectCode = subObjectCode; 317 } 318 319 /** 320 * @return Returns the timestamp. 321 */ 322 public Timestamp getTimestamp() { 323 return timestamp; 324 } 325 326 /** 327 * @param timestamp The timestamp to set. 328 */ 329 public void setTimestamp(Timestamp timestamp) { 330 this.timestamp = timestamp; 331 } 332 333 /** 334 * @return Returns the transactionEncumbranceDate. 335 */ 336 public Date getTransactionEncumbranceDate() { 337 return transactionEncumbranceDate; 338 } 339 340 /** 341 * @param transactionEncumbranceDate The transactionEncumbranceDate to set. 342 */ 343 public void setTransactionEncumbranceDate(Date transactionEncumbranceDate) { 344 this.transactionEncumbranceDate = transactionEncumbranceDate; 345 } 346 347 /** 348 * @return Returns the transactionEncumbranceDescription. 349 */ 350 public String getTransactionEncumbranceDescription() { 351 return transactionEncumbranceDescription; 352 } 353 354 /** 355 * @param transactionEncumbranceDescription The transactionEncumbranceDescription to set. 356 */ 357 public void setTransactionEncumbranceDescription(String transactionEncumbranceDescription) { 358 this.transactionEncumbranceDescription = transactionEncumbranceDescription; 359 } 360 361 /** 362 * @return Returns the universityFiscalYear. 363 */ 364 public Integer getUniversityFiscalYear() { 365 return universityFiscalYear; 366 } 367 368 /** 369 * @param universityFiscalYear The universityFiscalYear to set. 370 */ 371 public void setUniversityFiscalYear(Integer universityFiscalYear) { 372 this.universityFiscalYear = universityFiscalYear; 373 } 374 375 /** 376 * Gets the account attribute. 377 * 378 * @return Returns the account. 379 */ 380 public Account getAccount() { 381 return account; 382 } 383 384 /** 385 * Sets the account attribute value. 386 * 387 * @param account The account to set. 388 */ 389 public void setAccount(Account account) { 390 this.account = account; 391 } 392 393 /** 394 * Gets the chart attribute. 395 * 396 * @return Returns the chart. 397 */ 398 public Chart getChart() { 399 return chart; 400 } 401 402 /** 403 * Sets the chart attribute value. 404 * 405 * @param chart The chart to set. 406 */ 407 public void setChart(Chart chart) { 408 this.chart = chart; 409 } 410 411 /** 412 * Gets the financialObject attribute. 413 * 414 * @return Returns the financialObject. 415 */ 416 public ObjectCode getFinancialObject() { 417 return financialObject; 418 } 419 420 /** 421 * Sets the financialObject attribute value. 422 * 423 * @param financialObject The financialObject to set. 424 */ 425 public void setFinancialObject(ObjectCode financialObject) { 426 this.financialObject = financialObject; 427 } 428 429 /** 430 * Gets the balanceType attribute. 431 * 432 * @return Returns the balanceType. 433 */ 434 public BalanceType getBalanceType() { 435 return balanceType; 436 } 437 438 /** 439 * Sets the balanceType attribute value. 440 * 441 * @param balanceType The balanceType to set. 442 */ 443 public void setBalanceType(BalanceType balanceType) { 444 this.balanceType = balanceType; 445 } 446 447 /** 448 * Gets the dummyBusinessObject attribute. 449 * 450 * @return Returns the dummyBusinessObject. 451 */ 452 public TransientBalanceInquiryAttributes getDummyBusinessObject() { 453 return dummyBusinessObject; 454 } 455 456 /** 457 * Sets the dummyBusinessObject attribute value. 458 * 459 * @param dummyBusinessObject The dummyBusinessObject to set. 460 */ 461 public void setDummyBusinessObject(TransientBalanceInquiryAttributes dummyBusinessObject) { 462 this.dummyBusinessObject = dummyBusinessObject; 463 } 464 465 /** 466 * Gets the option attribute. 467 * 468 * @return Returns the option. 469 */ 470 public SystemOptions getOption() { 471 return option; 472 } 473 474 /** 475 * Sets the option attribute value. 476 * 477 * @param option The option to set. 478 */ 479 public void setOption(SystemOptions option) { 480 this.option = option; 481 } 482 483 /** 484 * Gets the subAccount attribute. 485 * 486 * @return Returns the subAccount. 487 */ 488 public SubAccount getSubAccount() { 489 return subAccount; 490 } 491 492 /** 493 * Sets the subAccount attribute value. 494 * 495 * @param subAccount The subAccount to set. 496 */ 497 public void setSubAccount(SubAccount subAccount) { 498 this.subAccount = subAccount; 499 } 500 501 /** 502 * Gets the financialSystemDocumentTypeCode attribute. 503 * @return Returns the financialSystemDocumentTypeCode. 504 */ 505 public DocumentTypeEBO getFinancialSystemDocumentTypeCode() { 506 return financialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, financialSystemDocumentTypeCode, "financialSystemDocumentTypeCode"); 507 } 508 509 /** 510 * Gets the financialSubObject attribute. 511 * 512 * @return Returns the financialSubObject. 513 */ 514 public SubObjectCode getFinancialSubObject() { 515 return financialSubObject; 516 } 517 518 /** 519 * Sets the financialSubObject attribute value. 520 * 521 * @param financialSubObject The financialSubObject to set. 522 */ 523 public void setFinancialSubObject(SubObjectCode financialSubObject) { 524 this.financialSubObject = financialSubObject; 525 } 526 }