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