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 017 package org.kuali.kfs.gl.businessobject; 018 019 import java.sql.Date; 020 import java.util.HashMap; 021 import java.util.LinkedHashMap; 022 import java.util.Map; 023 024 import org.kuali.kfs.coa.businessobject.Account; 025 import org.kuali.kfs.coa.businessobject.AccountingPeriod; 026 import org.kuali.kfs.coa.businessobject.BalanceType; 027 import org.kuali.kfs.coa.businessobject.Chart; 028 import org.kuali.kfs.coa.businessobject.ObjectCode; 029 import org.kuali.kfs.coa.businessobject.ObjectType; 030 import org.kuali.kfs.coa.businessobject.ProjectCode; 031 import org.kuali.kfs.coa.businessobject.SubAccount; 032 import org.kuali.kfs.coa.businessobject.SubObjectCode; 033 import org.kuali.kfs.sys.KFSPropertyConstants; 034 import org.kuali.kfs.sys.businessobject.SystemOptions; 035 import org.kuali.kfs.sys.businessobject.UniversityDate; 036 import org.kuali.kfs.sys.context.SpringContext; 037 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; 038 import org.kuali.rice.kew.service.impl.KEWModuleService; 039 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 040 import org.kuali.rice.kns.util.KualiDecimal; 041 042 /** 043 * This class represents a reversal of a transaction 044 */ 045 public class Reversal extends PersistableBusinessObjectBase implements Transaction { 046 047 private Date financialDocumentReversalDate; 048 private Integer universityFiscalYear; 049 private String chartOfAccountsCode; 050 private String accountNumber; 051 private String subAccountNumber; 052 private String financialObjectCode; 053 private String financialSubObjectCode; 054 private String financialBalanceTypeCode; 055 private String financialObjectTypeCode; 056 private String universityFiscalPeriodCode; 057 private String financialDocumentTypeCode; 058 private String financialSystemOriginationCode; 059 private String documentNumber; 060 private Integer transactionLedgerEntrySequenceNumber; 061 private String transactionLedgerEntryDescription; 062 private KualiDecimal transactionLedgerEntryAmount; 063 private String transactionDebitCreditCode; 064 private Date transactionDate; 065 private String organizationDocumentNumber; 066 private String projectCode; 067 private String organizationReferenceId; 068 private String referenceFinancialDocumentTypeCode; 069 private String referenceFinancialSystemOriginationCode; 070 private String referenceFinancialDocumentNumber; 071 private String transactionEncumbranceUpdateCode; 072 private Date transactionPostingDate; 073 074 // bo references 075 private Account account; 076 private SubAccount subAccount; 077 private BalanceType balanceType; 078 private Chart chart; 079 private ObjectCode financialObject; 080 private SubObjectCode financialSubObject; 081 private ObjectType objectType; 082 private ProjectCode project; 083 private DocumentTypeEBO financialSystemDocumentTypeCode; 084 private UniversityDate universityDate; 085 private SystemOptions option; 086 private AccountingPeriod accountingPeriod; 087 private UniversityDate reversalDate; 088 089 /** 090 * Default constructor. 091 */ 092 public Reversal() { 093 094 } 095 096 public Reversal(Transaction t) { 097 setUniversityFiscalYear(t.getUniversityFiscalYear()); 098 setChartOfAccountsCode(t.getChartOfAccountsCode()); 099 setAccountNumber(t.getAccountNumber()); 100 setSubAccountNumber(t.getSubAccountNumber()); 101 setFinancialObjectCode(t.getFinancialObjectCode()); 102 setFinancialSubObjectCode(t.getFinancialSubObjectCode()); 103 setFinancialBalanceTypeCode(t.getFinancialBalanceTypeCode()); 104 setFinancialObjectTypeCode(t.getFinancialObjectTypeCode()); 105 setUniversityFiscalPeriodCode(t.getUniversityFiscalPeriodCode()); 106 setFinancialDocumentTypeCode(t.getFinancialDocumentTypeCode()); 107 setFinancialSystemOriginationCode(t.getFinancialSystemOriginationCode()); 108 setDocumentNumber(t.getDocumentNumber()); 109 setTransactionLedgerEntrySequenceNumber(t.getTransactionLedgerEntrySequenceNumber()); 110 setTransactionLedgerEntryDescription(t.getTransactionLedgerEntryDescription()); 111 setTransactionLedgerEntryAmount(t.getTransactionLedgerEntryAmount()); 112 setTransactionDebitCreditCode(t.getTransactionDebitCreditCode()); 113 setTransactionDate(t.getTransactionDate()); 114 setOrganizationDocumentNumber(t.getOrganizationDocumentNumber()); 115 setProjectCode(t.getProjectCode()); 116 setOrganizationReferenceId(t.getOrganizationReferenceId()); 117 setReferenceFinancialDocumentTypeCode(t.getReferenceFinancialDocumentTypeCode()); 118 setReferenceFinancialSystemOriginationCode(t.getReferenceFinancialSystemOriginationCode()); 119 setReferenceFinancialDocumentNumber(t.getReferenceFinancialDocumentNumber()); 120 setFinancialDocumentReversalDate(t.getFinancialDocumentReversalDate()); 121 setTransactionEncumbranceUpdateCode(t.getTransactionEncumbranceUpdateCode()); 122 if (transactionPostingDate != null) { 123 setTransactionPostingDate(new Date(transactionPostingDate.getTime())); 124 } 125 } 126 127 /** 128 * Gets the financialDocumentReversalDate attribute. 129 * 130 * @return Returns the financialDocumentReversalDate 131 */ 132 public Date getFinancialDocumentReversalDate() { 133 return financialDocumentReversalDate; 134 } 135 136 /** 137 * Sets the financialDocumentReversalDate attribute. 138 * 139 * @param financialDocumentReversalDate The financialDocumentReversalDate to set. 140 */ 141 public void setFinancialDocumentReversalDate(Date financialDocumentReversalDate) { 142 this.financialDocumentReversalDate = financialDocumentReversalDate; 143 } 144 145 /** 146 * Gets the universityFiscalYear attribute. 147 * 148 * @return Returns the universityFiscalYear 149 */ 150 public Integer getUniversityFiscalYear() { 151 return universityFiscalYear; 152 } 153 154 /** 155 * Sets the universityFiscalYear attribute. 156 * 157 * @param universityFiscalYear The universityFiscalYear to set. 158 */ 159 public void setUniversityFiscalYear(Integer universityFiscalYear) { 160 this.universityFiscalYear = universityFiscalYear; 161 } 162 163 /** 164 * Gets the chartOfAccountsCode attribute. 165 * 166 * @return Returns the chartOfAccountsCode 167 */ 168 public String getChartOfAccountsCode() { 169 return chartOfAccountsCode; 170 } 171 172 /** 173 * Sets the chartOfAccountsCode attribute. 174 * 175 * @param chartOfAccountsCode The chartOfAccountsCode to set. 176 */ 177 public void setChartOfAccountsCode(String chartOfAccountsCode) { 178 this.chartOfAccountsCode = chartOfAccountsCode; 179 } 180 181 /** 182 * Gets the accountNumber attribute. 183 * 184 * @return Returns the accountNumber 185 */ 186 public String getAccountNumber() { 187 return accountNumber; 188 } 189 190 /** 191 * Sets the accountNumber attribute. 192 * 193 * @param accountNumber The accountNumber to set. 194 */ 195 public void setAccountNumber(String accountNumber) { 196 this.accountNumber = accountNumber; 197 } 198 199 /** 200 * Gets the subAccountNumber attribute. 201 * 202 * @return Returns the subAccountNumber 203 */ 204 public String getSubAccountNumber() { 205 return subAccountNumber; 206 } 207 208 /** 209 * Sets the subAccountNumber attribute. 210 * 211 * @param subAccountNumber The subAccountNumber to set. 212 */ 213 public void setSubAccountNumber(String subAccountNumber) { 214 this.subAccountNumber = subAccountNumber; 215 } 216 217 /** 218 * Gets the financialObjectCode attribute. 219 * 220 * @return Returns the financialObjectCode 221 */ 222 public String getFinancialObjectCode() { 223 return financialObjectCode; 224 } 225 226 /** 227 * Sets the financialObjectCode attribute. 228 * 229 * @param financialObjectCode The financialObjectCode to set. 230 */ 231 public void setFinancialObjectCode(String financialObjectCode) { 232 this.financialObjectCode = financialObjectCode; 233 } 234 235 /** 236 * Gets the financialSubObjectCode attribute. 237 * 238 * @return Returns the financialSubObjectCode 239 */ 240 public String getFinancialSubObjectCode() { 241 return financialSubObjectCode; 242 } 243 244 /** 245 * Sets the financialSubObjectCode attribute. 246 * 247 * @param financialSubObjectCode The financialSubObjectCode to set. 248 */ 249 public void setFinancialSubObjectCode(String financialSubObjectCode) { 250 this.financialSubObjectCode = financialSubObjectCode; 251 } 252 253 /** 254 * Gets the financialBalanceTypeCode attribute. 255 * 256 * @return Returns the financialBalanceTypeCode 257 */ 258 public String getFinancialBalanceTypeCode() { 259 return financialBalanceTypeCode; 260 } 261 262 /** 263 * Sets the financialBalanceTypeCode attribute. 264 * 265 * @param financialBalanceTypeCode The financialBalanceTypeCode to set. 266 */ 267 public void setFinancialBalanceTypeCode(String financialBalanceTypeCode) { 268 this.financialBalanceTypeCode = financialBalanceTypeCode; 269 } 270 271 /** 272 * Gets the financialObjectTypeCode attribute. 273 * 274 * @return Returns the financialObjectTypeCode 275 */ 276 public String getFinancialObjectTypeCode() { 277 return financialObjectTypeCode; 278 } 279 280 /** 281 * Sets the financialObjectTypeCode attribute. 282 * 283 * @param financialObjectTypeCode The financialObjectTypeCode to set. 284 */ 285 public void setFinancialObjectTypeCode(String financialObjectTypeCode) { 286 this.financialObjectTypeCode = financialObjectTypeCode; 287 } 288 289 /** 290 * Gets the universityFiscalPeriodCode attribute. 291 * 292 * @return Returns the universityFiscalPeriodCode 293 */ 294 public String getUniversityFiscalPeriodCode() { 295 return universityFiscalPeriodCode; 296 } 297 298 /** 299 * Sets the universityFiscalPeriodCode attribute. 300 * 301 * @param universityFiscalPeriodCode The universityFiscalPeriodCode to set. 302 */ 303 public void setUniversityFiscalPeriodCode(String universityFiscalPeriodCode) { 304 this.universityFiscalPeriodCode = universityFiscalPeriodCode; 305 } 306 307 /** 308 * Gets the financialDocumentTypeCode attribute. 309 * 310 * @return Returns the financialDocumentTypeCode 311 */ 312 public String getFinancialDocumentTypeCode() { 313 return financialDocumentTypeCode; 314 } 315 316 /** 317 * Sets the financialDocumentTypeCode attribute. 318 * 319 * @param financialDocumentTypeCode The financialDocumentTypeCode to set. 320 */ 321 public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) { 322 this.financialDocumentTypeCode = financialDocumentTypeCode; 323 } 324 325 /** 326 * Gets the financialSystemOriginationCode attribute. 327 * 328 * @return Returns the financialSystemOriginationCode 329 */ 330 public String getFinancialSystemOriginationCode() { 331 return financialSystemOriginationCode; 332 } 333 334 /** 335 * Sets the financialSystemOriginationCode attribute. 336 * 337 * @param financialSystemOriginationCode The financialSystemOriginationCode to set. 338 */ 339 public void setFinancialSystemOriginationCode(String financialSystemOriginationCode) { 340 this.financialSystemOriginationCode = financialSystemOriginationCode; 341 } 342 343 /** 344 * Gets the documentNumber attribute. 345 * 346 * @return Returns the documentNumber 347 */ 348 public String getDocumentNumber() { 349 return documentNumber; 350 } 351 352 /** 353 * Sets the documentNumber attribute. 354 * 355 * @param documentNumber The documentNumber to set. 356 */ 357 public void setDocumentNumber(String documentNumber) { 358 this.documentNumber = documentNumber; 359 } 360 361 /** 362 * Gets the transactionLedgerEntrySequenceNumber attribute. 363 * 364 * @return Returns the transactionLedgerEntrySequenceNumber 365 */ 366 public Integer getTransactionLedgerEntrySequenceNumber() { 367 return transactionLedgerEntrySequenceNumber; 368 } 369 370 /** 371 * Sets the transactionLedgerEntrySequenceNumber attribute. 372 * 373 * @param transactionLedgerEntrySequenceNumber The transactionLedgerEntrySequenceNumber to set. 374 */ 375 public void setTransactionLedgerEntrySequenceNumber(Integer transactionLedgerEntrySequenceNumber) { 376 this.transactionLedgerEntrySequenceNumber = transactionLedgerEntrySequenceNumber; 377 } 378 379 /** 380 * Gets the transactionLedgerEntryDescription attribute. 381 * 382 * @return Returns the transactionLedgerEntryDescription 383 */ 384 public String getTransactionLedgerEntryDescription() { 385 return transactionLedgerEntryDescription; 386 } 387 388 /** 389 * Sets the transactionLedgerEntryDescription attribute. 390 * 391 * @param transactionLedgerEntryDescription The transactionLedgerEntryDescription to set. 392 */ 393 public void setTransactionLedgerEntryDescription(String transactionLedgerEntryDescription) { 394 this.transactionLedgerEntryDescription = transactionLedgerEntryDescription; 395 } 396 397 /** 398 * Gets the transactionLedgerEntryAmount attribute. 399 * 400 * @return Returns the transactionLedgerEntryAmount 401 */ 402 public KualiDecimal getTransactionLedgerEntryAmount() { 403 return transactionLedgerEntryAmount; 404 } 405 406 /** 407 * Sets the transactionLedgerEntryAmount attribute. 408 * 409 * @param transactionLedgerEntryAmount The transactionLedgerEntryAmount to set. 410 */ 411 public void setTransactionLedgerEntryAmount(KualiDecimal transactionLedgerEntryAmount) { 412 this.transactionLedgerEntryAmount = transactionLedgerEntryAmount; 413 } 414 415 /** 416 * Gets the transactionDebitCreditCode attribute. 417 * 418 * @return Returns the transactionDebitCreditCode 419 */ 420 public String getTransactionDebitCreditCode() { 421 return transactionDebitCreditCode; 422 } 423 424 /** 425 * Sets the transactionDebitCreditCode attribute. 426 * 427 * @param transactionDebitCreditCode The transactionDebitCreditCode to set. 428 */ 429 public void setTransactionDebitCreditCode(String transactionDebitCreditCode) { 430 this.transactionDebitCreditCode = transactionDebitCreditCode; 431 } 432 433 /** 434 * Gets the transactionDate attribute. 435 * 436 * @return Returns the transactionDate 437 */ 438 public Date getTransactionDate() { 439 return transactionDate; 440 } 441 442 /** 443 * Sets the transactionDate attribute. 444 * 445 * @param transactionDate The transactionDate to set. 446 */ 447 public void setTransactionDate(Date transactionDate) { 448 this.transactionDate = transactionDate; 449 } 450 451 /** 452 * Gets the organizationDocumentNumber attribute. 453 * 454 * @return Returns the organizationDocumentNumber 455 */ 456 public String getOrganizationDocumentNumber() { 457 return organizationDocumentNumber; 458 } 459 460 /** 461 * Sets the organizationDocumentNumber attribute. 462 * 463 * @param organizationDocumentNumber The organizationDocumentNumber to set. 464 */ 465 public void setOrganizationDocumentNumber(String organizationDocumentNumber) { 466 this.organizationDocumentNumber = organizationDocumentNumber; 467 } 468 469 /** 470 * Gets the projectCode attribute. 471 * 472 * @return Returns the projectCode 473 */ 474 public String getProjectCode() { 475 return projectCode; 476 } 477 478 /** 479 * Sets the projectCode attribute. 480 * 481 * @param projectCode The projectCode to set. 482 */ 483 public void setProjectCode(String projectCode) { 484 this.projectCode = projectCode; 485 } 486 487 /** 488 * Gets the organizationReferenceId attribute. 489 * 490 * @return Returns the organizationReferenceId 491 */ 492 public String getOrganizationReferenceId() { 493 return organizationReferenceId; 494 } 495 496 /** 497 * Sets the organizationReferenceId attribute. 498 * 499 * @param organizationReferenceId The organizationReferenceId to set. 500 */ 501 public void setOrganizationReferenceId(String organizationReferenceId) { 502 this.organizationReferenceId = organizationReferenceId; 503 } 504 505 /** 506 * Gets the referenceFinancialDocumentTypeCode attribute. 507 * 508 * @return Returns the referenceFinancialDocumentTypeCode 509 */ 510 public String getReferenceFinancialDocumentTypeCode() { 511 return referenceFinancialDocumentTypeCode; 512 } 513 514 /** 515 * Sets the referenceFinancialDocumentTypeCode attribute. 516 * 517 * @param referenceFinancialDocumentTypeCode The referenceFinancialDocumentTypeCode to set. 518 */ 519 public void setReferenceFinancialDocumentTypeCode(String referenceFinancialDocumentTypeCode) { 520 this.referenceFinancialDocumentTypeCode = referenceFinancialDocumentTypeCode; 521 } 522 523 /** 524 * Gets the referenceFinancialSystemOriginationCode attribute. 525 * 526 * @return Returns the referenceFinancialSystemOriginationCode 527 */ 528 public String getReferenceFinancialSystemOriginationCode() { 529 return referenceFinancialSystemOriginationCode; 530 } 531 532 /** 533 * Sets the referenceFinancialSystemOriginationCode attribute. 534 * 535 * @param referenceFinancialSystemOriginationCode The referenceFinancialSystemOriginationCode to set. 536 */ 537 public void setReferenceFinancialSystemOriginationCode(String referenceFinancialSystemOriginationCode) { 538 this.referenceFinancialSystemOriginationCode = referenceFinancialSystemOriginationCode; 539 } 540 541 /** 542 * Gets the referenceFinancialDocumentNumber attribute. 543 * 544 * @return Returns the referenceFinancialDocumentNumber 545 */ 546 public String getReferenceFinancialDocumentNumber() { 547 return referenceFinancialDocumentNumber; 548 } 549 550 /** 551 * Sets the referenceFinancialDocumentNumber attribute. 552 * 553 * @param referenceFinancialDocumentNumber The referenceFinancialDocumentNumber to set. 554 */ 555 public void setReferenceFinancialDocumentNumber(String referenceFinancialDocumentNumber) { 556 this.referenceFinancialDocumentNumber = referenceFinancialDocumentNumber; 557 } 558 559 /** 560 * Gets the transactionEncumbranceUpdateCode attribute. 561 * 562 * @return Returns the transactionEncumbranceUpdateCode 563 */ 564 public String getTransactionEncumbranceUpdateCode() { 565 return transactionEncumbranceUpdateCode; 566 } 567 568 /** 569 * Sets the transactionEncumbranceUpdateCode attribute. 570 * 571 * @param transactionEncumbranceUpdateCode The transactionEncumbranceUpdateCode to set. 572 */ 573 public void setTransactionEncumbranceUpdateCode(String transactionEncumbranceUpdateCode) { 574 this.transactionEncumbranceUpdateCode = transactionEncumbranceUpdateCode; 575 } 576 577 /** 578 * Gets the transactionPostingDate attribute. 579 * 580 * @return Returns the transactionPostingDate 581 */ 582 public Date getTransactionPostingDate() { 583 return transactionPostingDate; 584 } 585 586 /** 587 * Sets the transactionPostingDate attribute. 588 * 589 * @param transactionPostingDate The transactionPostingDate to set. 590 */ 591 public void setTransactionPostingDate(Date transactionPostingDate) { 592 this.transactionPostingDate = transactionPostingDate; 593 } 594 595 public Account getAccount() { 596 return account; 597 } 598 599 public void setAccount(Account account) { 600 this.account = account; 601 } 602 603 public AccountingPeriod getAccountingPeriod() { 604 return accountingPeriod; 605 } 606 607 public void setAccountingPeriod(AccountingPeriod accountingPeriod) { 608 this.accountingPeriod = accountingPeriod; 609 } 610 611 public BalanceType getBalanceType() { 612 return balanceType; 613 } 614 615 public void setBalanceType(BalanceType balanceType) { 616 this.balanceType = balanceType; 617 } 618 619 public Chart getChart() { 620 return chart; 621 } 622 623 public void setChart(Chart chart) { 624 this.chart = chart; 625 } 626 627 public DocumentTypeEBO getFinancialSystemDocumentTypeCode() { 628 if (financialSystemDocumentTypeCode == null || !financialSystemDocumentTypeCode.getName().equals(financialDocumentTypeCode)) { 629 Map<String, Object> docTypeKeys = new HashMap<String, Object>(); 630 docTypeKeys.put("name", financialSystemDocumentTypeCode); 631 financialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).getExternalizableBusinessObject(DocumentTypeEBO.class, docTypeKeys); 632 } 633 return financialSystemDocumentTypeCode; 634 } 635 636 public ObjectCode getFinancialObject() { 637 return financialObject; 638 } 639 640 public void setFinancialObject(ObjectCode financialObject) { 641 this.financialObject = financialObject; 642 } 643 644 public SubObjectCode getFinancialSubObject() { 645 return financialSubObject; 646 } 647 648 public void setFinancialSubObject(SubObjectCode financialSubObject) { 649 this.financialSubObject = financialSubObject; 650 } 651 652 public ObjectType getObjectType() { 653 return objectType; 654 } 655 656 public void setObjectType(ObjectType objectType) { 657 this.objectType = objectType; 658 } 659 660 public SystemOptions getOption() { 661 return option; 662 } 663 664 public void setOption(SystemOptions option) { 665 this.option = option; 666 } 667 668 public ProjectCode getProject() { 669 return project; 670 } 671 672 public void setProject(ProjectCode project) { 673 this.project = project; 674 } 675 676 public UniversityDate getReversalDate() { 677 return reversalDate; 678 } 679 680 public void setReversalDate(UniversityDate reversalDate) { 681 this.reversalDate = reversalDate; 682 } 683 684 public SubAccount getSubAccount() { 685 return subAccount; 686 } 687 688 public void setSubAccount(SubAccount subAccount) { 689 this.subAccount = subAccount; 690 } 691 692 public UniversityDate getUniversityDate() { 693 return universityDate; 694 } 695 696 public void setUniversityDate(UniversityDate universityDate) { 697 this.universityDate = universityDate; 698 } 699 700 protected LinkedHashMap toStringMapper() { 701 LinkedHashMap map = new LinkedHashMap(); 702 map.put("universityFiscalYear", getUniversityFiscalYear()); 703 map.put("chartOfAccountsCode", getChartOfAccountsCode()); 704 map.put("accountNumber", getAccountNumber()); 705 map.put("subAccountNumber", getSubAccountNumber()); 706 map.put("financialObjectCode", getFinancialObjectCode()); 707 map.put("financialSubObjectCode", getFinancialSubObjectCode()); 708 map.put("financialBalanceTypeCode", getFinancialBalanceTypeCode()); 709 map.put("financialObjectTypeCode", getFinancialObjectTypeCode()); 710 map.put("universityFiscalPeriodCode", getUniversityFiscalPeriodCode()); 711 map.put("financialDocumentTypeCode", getFinancialDocumentTypeCode()); 712 map.put("financialSystemOriginationCode", getFinancialSystemOriginationCode()); 713 map.put(KFSPropertyConstants.DOCUMENT_NUMBER, getDocumentNumber()); 714 map.put("transactionLedgerEntrySequenceNumber", getTransactionLedgerEntrySequenceNumber()); 715 return map; 716 } 717 }