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.coa.businessobject; 018 019 import java.sql.Date; 020 import java.util.ArrayList; 021 import java.util.Calendar; 022 import java.util.Collection; 023 import java.util.HashMap; 024 import java.util.LinkedHashMap; 025 import java.util.List; 026 import java.util.Map; 027 028 import org.apache.commons.lang.StringUtils; 029 import org.apache.commons.lang.time.DateUtils; 030 import org.apache.ojb.broker.PersistenceBroker; 031 import org.apache.ojb.broker.PersistenceBrokerException; 032 import org.kuali.kfs.coa.service.SubFundGroupService; 033 import org.kuali.kfs.gl.businessobject.SufficientFundRebuild; 034 import org.kuali.kfs.integration.cg.ContractsAndGrantsAccountAwardInformation; 035 import org.kuali.kfs.integration.cg.ContractsAndGrantsCfda; 036 import org.kuali.kfs.integration.cg.ContractsAndGrantsModuleService; 037 import org.kuali.kfs.sys.context.SpringContext; 038 import org.kuali.rice.kim.bo.Person; 039 import org.kuali.rice.kim.service.KIMServiceLocator; 040 import org.kuali.rice.kim.service.PersonService; 041 import org.kuali.rice.kns.bo.Campus; 042 import org.kuali.rice.kns.bo.Inactivateable; 043 import org.kuali.rice.kns.bo.PersistableBusinessObject; 044 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 045 import org.kuali.rice.kns.bo.PostalCode; 046 import org.kuali.rice.kns.bo.State; 047 import org.kuali.rice.kns.service.BusinessObjectService; 048 import org.kuali.rice.kns.service.DateTimeService; 049 import org.kuali.rice.kns.service.KualiModuleService; 050 import org.kuali.rice.kns.service.PostalCodeService; 051 import org.kuali.rice.kns.service.StateService; 052 053 /** 054 * 055 */ 056 public class Account extends PersistableBusinessObjectBase implements AccountIntf, Inactivateable { 057 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(Account.class); 058 059 private String chartOfAccountsCode; 060 private String accountNumber; 061 private String accountName; 062 private boolean accountsFringesBnftIndicator; 063 private Date accountRestrictedStatusDate; 064 private String accountCityName; 065 private String accountStateCode; 066 private String accountStreetAddress; 067 private String accountZipCode; 068 private Date accountCreateDate; 069 private Date accountEffectiveDate; 070 private Date accountExpirationDate; 071 private String acctIndirectCostRcvyTypeCd; 072 private String acctCustomIndCstRcvyExclCd; 073 private String financialIcrSeriesIdentifier; 074 private boolean accountInFinancialProcessingIndicator; 075 private String budgetRecordingLevelCode; 076 private String accountSufficientFundsCode; 077 private boolean pendingAcctSufficientFundsIndicator; 078 private boolean extrnlFinEncumSufficntFndIndicator; 079 private boolean intrnlFinEncumSufficntFndIndicator; 080 private boolean finPreencumSufficientFundIndicator; 081 private boolean financialObjectivePrsctrlIndicator; 082 private String accountCfdaNumber; 083 private boolean accountOffCampusIndicator; 084 private boolean active; 085 086 private String accountFiscalOfficerSystemIdentifier; 087 private String accountsSupervisorySystemsIdentifier; 088 private String accountManagerSystemIdentifier; 089 private String organizationCode; 090 private String accountTypeCode; 091 private String accountPhysicalCampusCode; 092 private String subFundGroupCode; 093 private String financialHigherEdFunctionCd; 094 private String accountRestrictedStatusCode; 095 private String reportsToChartOfAccountsCode; 096 private String reportsToAccountNumber; 097 private String continuationFinChrtOfAcctCd; 098 private String continuationAccountNumber; 099 private String endowmentIncomeAcctFinCoaCd; 100 private String endowmentIncomeAccountNumber; 101 private String contractControlFinCoaCode; 102 private String contractControlAccountNumber; 103 private String incomeStreamFinancialCoaCode; 104 private String incomeStreamAccountNumber; 105 private String indirectCostRcvyFinCoaCode; 106 private String indirectCostRecoveryAcctNbr; 107 private Integer contractsAndGrantsAccountResponsibilityId; 108 109 private Chart chartOfAccounts; 110 private Chart endowmentIncomeChartOfAccounts; 111 private Organization organization; 112 private AccountType accountType; 113 private Campus accountPhysicalCampus; 114 private State accountState; 115 private SubFundGroup subFundGroup; 116 private HigherEducationFunction financialHigherEdFunction; 117 private RestrictedStatus accountRestrictedStatus; 118 private Account reportsToAccount; 119 private Account continuationAccount; 120 private Account endowmentIncomeAccount; 121 private Account contractControlAccount; 122 private Account incomeStreamAccount; 123 private Account indirectCostRecoveryAcct; 124 private IndirectCostRecoveryType acctIndirectCostRcvyType; 125 private Person accountFiscalOfficerUser; 126 private Person accountSupervisoryUser; 127 private Person accountManagerUser; 128 private PostalCode postalZipCode; 129 private BudgetRecordingLevel budgetRecordingLevel; 130 private SufficientFundsCode sufficientFundsCode; 131 private ContractsAndGrantsCfda cfda; 132 133 protected Chart fringeBenefitsChartOfAccount; 134 protected Chart continuationChartOfAccount; 135 protected Chart incomeStreamChartOfAccounts; 136 protected Chart contractControlChartOfAccounts; 137 protected Chart indirectCostRcvyChartOfAccounts; 138 139 // Several kinds of Dummy Attributes for dividing sections on Inquiry page 140 private String accountResponsibilitySectionBlank; 141 private String accountResponsibilitySection; 142 private String contractsAndGrantsSectionBlank; 143 private String contractsAndGrantsSection; 144 private String guidelinesAndPurposeSectionBlank; 145 private String guidelinesAndPurposeSection; 146 private String accountDescriptionSectionBlank; 147 private String accountDescriptionSection; 148 149 private Boolean forContractsAndGrants; 150 151 private AccountGuideline accountGuideline; 152 private AccountDescription accountDescription; 153 154 private List subAccounts; 155 private List<ContractsAndGrantsAccountAwardInformation> awards; 156 157 /** 158 * Default no-arg constructor. 159 */ 160 public Account() { 161 active = true; // assume active is true until set otherwise 162 } 163 164 /** 165 * This method gathers all SubAccounts related to this account if the account is marked as closed to deactivate 166 */ 167 public List<PersistableBusinessObject> generateDeactivationsToPersist() { 168 BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class); 169 170 // retreive all the existing sub accounts for this 171 List<SubAccount> bosToDeactivate = new ArrayList(); 172 Map<String, Object> fieldValues; 173 Collection existingSubAccounts; 174 if (!isActive()) { 175 fieldValues = new HashMap(); 176 fieldValues.put("chartOfAccountsCode", this.getChartOfAccountsCode()); 177 fieldValues.put("accountNumber", this.getAccountNumber()); 178 fieldValues.put("active", true); 179 existingSubAccounts = boService.findMatching(SubAccount.class, fieldValues); 180 bosToDeactivate.addAll(existingSubAccounts); 181 } 182 183 184 // mark all the sub accounts as inactive 185 for (SubAccount subAccount : bosToDeactivate) { 186 subAccount.setActive(false); 187 } 188 return new ArrayList<PersistableBusinessObject>(bosToDeactivate); 189 } 190 191 /** 192 * Gets the accountNumber attribute. 193 * 194 * @return Returns the accountNumber 195 */ 196 public String getAccountNumber() { 197 return accountNumber; 198 } 199 200 /** 201 * Sets the accountNumber attribute. 202 * 203 * @param accountNumber The accountNumber to set. 204 */ 205 public void setAccountNumber(String accountNumber) { 206 this.accountNumber = accountNumber; 207 } 208 209 /** 210 * Gets the accountName attribute. 211 * 212 * @return Returns the accountName 213 */ 214 public String getAccountName() { 215 return accountName; 216 } 217 218 /** 219 * Sets the accountName attribute. 220 * 221 * @param accountName The accountName to set. 222 */ 223 public void setAccountName(String accountName) { 224 this.accountName = accountName; 225 } 226 227 /** 228 * Gets the _AccountsFringesBnftIndicator_ attribute. 229 * 230 * @return Returns the _AccountsFringesBnftIndicator_ 231 */ 232 public boolean isAccountsFringesBnftIndicator() { 233 return accountsFringesBnftIndicator; 234 } 235 236 /** 237 * Sets the _AccountsFringesBnftIndicator_ attribute. 238 * 239 * @param _AccountsFringesBnftIndicator_ The _AccountsFringesBnftIndicator_ to set. 240 */ 241 public void setAccountsFringesBnftIndicator(boolean _AccountsFringesBnftIndicator_) { 242 this.accountsFringesBnftIndicator = _AccountsFringesBnftIndicator_; 243 } 244 245 /** 246 * Gets the accountRestrictedStatusDate attribute. 247 * 248 * @return Returns the accountRestrictedStatusDate 249 */ 250 public Date getAccountRestrictedStatusDate() { 251 return accountRestrictedStatusDate; 252 } 253 254 /** 255 * Sets the accountRestrictedStatusDate attribute. 256 * 257 * @param accountRestrictedStatusDate The accountRestrictedStatusDate to set. 258 */ 259 public void setAccountRestrictedStatusDate(Date accountRestrictedStatusDate) { 260 this.accountRestrictedStatusDate = accountRestrictedStatusDate; 261 } 262 263 /** 264 * Gets the accountCityName attribute. 265 * 266 * @return Returns the accountCityName 267 */ 268 public String getAccountCityName() { 269 return accountCityName; 270 } 271 272 /** 273 * Sets the accountCityName attribute. 274 * 275 * @param accountCityName The accountCityName to set. 276 */ 277 public void setAccountCityName(String accountCityName) { 278 this.accountCityName = accountCityName; 279 } 280 281 /** 282 * Gets the accountStateCode attribute. 283 * 284 * @return Returns the accountStateCode 285 */ 286 public String getAccountStateCode() { 287 return accountStateCode; 288 } 289 290 /** 291 * Sets the accountStateCode attribute. 292 * 293 * @param accountStateCode The accountStateCode to set. 294 */ 295 public void setAccountStateCode(String accountStateCode) { 296 this.accountStateCode = accountStateCode; 297 } 298 299 /** 300 * Gets the accountStreetAddress attribute. 301 * 302 * @return Returns the accountStreetAddress 303 */ 304 public String getAccountStreetAddress() { 305 return accountStreetAddress; 306 } 307 308 /** 309 * Sets the accountStreetAddress attribute. 310 * 311 * @param accountStreetAddress The accountStreetAddress to set. 312 */ 313 public void setAccountStreetAddress(String accountStreetAddress) { 314 this.accountStreetAddress = accountStreetAddress; 315 } 316 317 /** 318 * Gets the accountZipCode attribute. 319 * 320 * @return Returns the accountZipCode 321 */ 322 public String getAccountZipCode() { 323 return accountZipCode; 324 } 325 326 /** 327 * Sets the accountZipCode attribute. 328 * 329 * @param accountZipCode The accountZipCode to set. 330 */ 331 public void setAccountZipCode(String accountZipCode) { 332 this.accountZipCode = accountZipCode; 333 } 334 335 /** 336 * Gets the accountCreateDate attribute. 337 * 338 * @return Returns the accountCreateDate 339 */ 340 public Date getAccountCreateDate() { 341 return accountCreateDate; 342 } 343 344 /** 345 * Sets the accountCreateDate attribute. 346 * 347 * @param accountCreateDate The accountCreateDate to set. 348 */ 349 public void setAccountCreateDate(Date accountCreateDate) { 350 this.accountCreateDate = accountCreateDate; 351 } 352 353 /** 354 * Gets the accountEffectiveDate attribute. 355 * 356 * @return Returns the accountEffectiveDate 357 */ 358 public Date getAccountEffectiveDate() { 359 return accountEffectiveDate; 360 } 361 362 /** 363 * Sets the accountEffectiveDate attribute. 364 * 365 * @param accountEffectiveDate The accountEffectiveDate to set. 366 */ 367 public void setAccountEffectiveDate(Date accountEffectiveDate) { 368 this.accountEffectiveDate = accountEffectiveDate; 369 } 370 371 /** 372 * Gets the accountExpirationDate attribute. 373 * 374 * @return Returns the accountExpirationDate 375 */ 376 public Date getAccountExpirationDate() { 377 return accountExpirationDate; 378 } 379 380 /** 381 * Sets the accountExpirationDate attribute. 382 * 383 * @param accountExpirationDate The accountExpirationDate to set. 384 */ 385 public void setAccountExpirationDate(Date accountExpirationDate) { 386 this.accountExpirationDate = accountExpirationDate; 387 } 388 389 /** 390 * This method determines whether the account is expired or not. Note that if Expiration Date is the same as today, then this 391 * will return false. It will only return true if the account expiration date is one day earlier than today or earlier. Note 392 * that this logic ignores all time components when doing the comparison. It only does the before/after comparison based on date 393 * values, not time-values. 394 * 395 * @return true or false based on the logic outlined above 396 */ 397 public boolean isExpired() { 398 LOG.debug("entering isExpired()"); 399 // dont even bother trying to test if the accountExpirationDate is null 400 if (this.accountExpirationDate == null) { 401 return false; 402 } 403 404 return this.isExpired(SpringContext.getBean(DateTimeService.class).getCurrentCalendar()); 405 } 406 407 /** 408 * This method determines whether the account is expired or not. Note that if Expiration Date is the same date as testDate, then 409 * this will return false. It will only return true if the account expiration date is one day earlier than testDate or earlier. 410 * Note that this logic ignores all time components when doing the comparison. It only does the before/after comparison based on 411 * date values, not time-values. 412 * 413 * @param testDate - Calendar instance with the date to test the Account's Expiration Date against. This is most commonly set to 414 * today's date. 415 * @return true or false based on the logic outlined above 416 */ 417 public boolean isExpired(Calendar testDate) { 418 if (LOG.isDebugEnabled()) { 419 LOG.debug("entering isExpired(" + testDate + ")"); 420 } 421 422 // dont even bother trying to test if the accountExpirationDate is null 423 if (this.accountExpirationDate == null) { 424 return false; 425 } 426 427 // remove any time-components from the testDate 428 testDate = DateUtils.truncate(testDate, Calendar.DAY_OF_MONTH); 429 430 // get a calendar reference to the Account Expiration 431 // date, and remove any time components 432 Calendar acctDate = Calendar.getInstance(); 433 acctDate.setTime(this.accountExpirationDate); 434 acctDate = DateUtils.truncate(acctDate, Calendar.DAY_OF_MONTH); 435 436 // if the Account Expiration Date is before the testDate 437 if (acctDate.before(testDate)) { 438 return true; 439 } 440 else { 441 return false; 442 } 443 } 444 445 /** 446 * This method determines whether the account is expired or not. Note that if Expiration Date is the same date as testDate, then 447 * this will return false. It will only return true if the account expiration date is one day earlier than testDate or earlier. 448 * Note that this logic ignores all time components when doing the comparison. It only does the before/after comparison based on 449 * date values, not time-values. 450 * 451 * @param testDate - java.util.Date instance with the date to test the Account's Expiration Date against. This is most commonly 452 * set to today's date. 453 * @return true or false based on the logic outlined above 454 */ 455 public boolean isExpired(Date testDate) { 456 457 // dont even bother trying to test if the accountExpirationDate is null 458 if (this.accountExpirationDate == null) { 459 return false; 460 } 461 462 Calendar acctDate = Calendar.getInstance(); 463 acctDate.setTime(testDate); 464 return isExpired(acctDate); 465 } 466 467 /** 468 * Gets the acctIndirectCostRcvyTypeCd attribute. 469 * 470 * @return Returns the acctIndirectCostRcvyTypeCd 471 */ 472 public String getAcctIndirectCostRcvyTypeCd() { 473 return acctIndirectCostRcvyTypeCd; 474 } 475 476 /** 477 * Sets the acctIndirectCostRcvyTypeCd attribute. 478 * 479 * @param acctIndirectCostRcvyTypeCd The acctIndirectCostRcvyTypeCd to set. 480 */ 481 public void setAcctIndirectCostRcvyTypeCd(String acctIndirectCostRcvyTypeCd) { 482 this.acctIndirectCostRcvyTypeCd = acctIndirectCostRcvyTypeCd; 483 } 484 485 /** 486 * Gets the acctCustomIndCstRcvyExclCd attribute. 487 * 488 * @return Returns the acctCustomIndCstRcvyExclCd 489 */ 490 public String getAcctCustomIndCstRcvyExclCd() { 491 return acctCustomIndCstRcvyExclCd; 492 } 493 494 /** 495 * Sets the acctCustomIndCstRcvyExclCd attribute. 496 * 497 * @param acctCustomIndCstRcvyExclCd The acctCustomIndCstRcvyExclCd to set. 498 */ 499 public void setAcctCustomIndCstRcvyExclCd(String acctCustomIndCstRcvyExclCd) { 500 this.acctCustomIndCstRcvyExclCd = acctCustomIndCstRcvyExclCd; 501 } 502 503 /** 504 * Gets the financialIcrSeriesIdentifier attribute. 505 * 506 * @return Returns the financialIcrSeriesIdentifier 507 */ 508 public String getFinancialIcrSeriesIdentifier() { 509 return financialIcrSeriesIdentifier; 510 } 511 512 /** 513 * Sets the financialIcrSeriesIdentifier attribute. 514 * 515 * @param financialIcrSeriesIdentifier The financialIcrSeriesIdentifier to set. 516 */ 517 public void setFinancialIcrSeriesIdentifier(String financialIcrSeriesIdentifier) { 518 this.financialIcrSeriesIdentifier = financialIcrSeriesIdentifier; 519 } 520 521 /** 522 * Gets the accountInFinancialProcessingIndicator attribute. 523 * 524 * @return Returns the accountInFinancialProcessingIndicator 525 */ 526 public boolean getAccountInFinancialProcessingIndicator() { 527 return accountInFinancialProcessingIndicator; 528 } 529 530 /** 531 * Sets the accountInFinancialProcessingIndicator attribute. 532 * 533 * @param accountInFinancialProcessingIndicator The accountInFinancialProcessingIndicator to set. 534 */ 535 public void setAccountInFinancialProcessingIndicator(boolean accountInFinancialProcessingIndicator) { 536 this.accountInFinancialProcessingIndicator = accountInFinancialProcessingIndicator; 537 } 538 539 /** 540 * Gets the budgetRecordingLevelCode attribute. 541 * 542 * @return Returns the budgetRecordingLevelCode 543 */ 544 public String getBudgetRecordingLevelCode() { 545 return budgetRecordingLevelCode; 546 } 547 548 /** 549 * Sets the budgetRecordingLevelCode attribute. 550 * 551 * @param budgetRecordingLevelCode The budgetRecordingLevelCode to set. 552 */ 553 public void setBudgetRecordingLevelCode(String budgetRecordingLevelCode) { 554 this.budgetRecordingLevelCode = budgetRecordingLevelCode; 555 } 556 557 /** 558 * Gets the accountSufficientFundsCode attribute. 559 * 560 * @return Returns the accountSufficientFundsCode 561 */ 562 public String getAccountSufficientFundsCode() { 563 return accountSufficientFundsCode; 564 } 565 566 /** 567 * Sets the accountSufficientFundsCode attribute. 568 * 569 * @param accountSufficientFundsCode The accountSufficientFundsCode to set. 570 */ 571 public void setAccountSufficientFundsCode(String accountSufficientFundsCode) { 572 this.accountSufficientFundsCode = accountSufficientFundsCode; 573 } 574 575 /** 576 * Gets the pendingAcctSufficientFundsIndicator attribute. 577 * 578 * @return Returns the pendingAcctSufficientFundsIndicator 579 */ 580 public boolean isPendingAcctSufficientFundsIndicator() { 581 return pendingAcctSufficientFundsIndicator; 582 } 583 584 /** 585 * Sets the pendingAcctSufficientFundsIndicator attribute. 586 * 587 * @param pendingAcctSufficientFundsIndicator The pendingAcctSufficientFundsIndicator to set. 588 */ 589 public void setPendingAcctSufficientFundsIndicator(boolean pendingAcctSufficientFundsIndicator) { 590 this.pendingAcctSufficientFundsIndicator = pendingAcctSufficientFundsIndicator; 591 } 592 593 /** 594 * Gets the extrnlFinEncumSufficntFndIndicator attribute. 595 * 596 * @return Returns the extrnlFinEncumSufficntFndIndicator 597 */ 598 public boolean isExtrnlFinEncumSufficntFndIndicator() { 599 return extrnlFinEncumSufficntFndIndicator; 600 } 601 602 /** 603 * Sets the extrnlFinEncumSufficntFndIndicator attribute. 604 * 605 * @param extrnlFinEncumSufficntFndIndicator The extrnlFinEncumSufficntFndIndicator to set. 606 */ 607 public void setExtrnlFinEncumSufficntFndIndicator(boolean extrnlFinEncumSufficntFndIndicator) { 608 this.extrnlFinEncumSufficntFndIndicator = extrnlFinEncumSufficntFndIndicator; 609 } 610 611 /** 612 * Gets the intrnlFinEncumSufficntFndIndicator attribute. 613 * 614 * @return Returns the intrnlFinEncumSufficntFndIndicator 615 */ 616 public boolean isIntrnlFinEncumSufficntFndIndicator() { 617 return intrnlFinEncumSufficntFndIndicator; 618 } 619 620 /** 621 * Sets the intrnlFinEncumSufficntFndIndicator attribute. 622 * 623 * @param intrnlFinEncumSufficntFndIndicator The intrnlFinEncumSufficntFndIndicator to set. 624 */ 625 public void setIntrnlFinEncumSufficntFndIndicator(boolean intrnlFinEncumSufficntFndIndicator) { 626 this.intrnlFinEncumSufficntFndIndicator = intrnlFinEncumSufficntFndIndicator; 627 } 628 629 /** 630 * Gets the finPreencumSufficientFundIndicator attribute. 631 * 632 * @return Returns the finPreencumSufficientFundIndicator 633 */ 634 public boolean isFinPreencumSufficientFundIndicator() { 635 return finPreencumSufficientFundIndicator; 636 } 637 638 /** 639 * Sets the finPreencumSufficientFundIndicator attribute. 640 * 641 * @param finPreencumSufficientFundIndicator The finPreencumSufficientFundIndicator to set. 642 */ 643 public void setFinPreencumSufficientFundIndicator(boolean finPreencumSufficientFundIndicator) { 644 this.finPreencumSufficientFundIndicator = finPreencumSufficientFundIndicator; 645 } 646 647 /** 648 * Gets the _FinancialObjectivePrsctrlIndicator_ attribute. 649 * 650 * @return Returns the _FinancialObjectivePrsctrlIndicator_ 651 */ 652 public boolean isFinancialObjectivePrsctrlIndicator() { 653 return financialObjectivePrsctrlIndicator; 654 } 655 656 /** 657 * Sets the _FinancialObjectivePrsctrlIndicator_ attribute. 658 * 659 * @param _FinancialObjectivePrsctrlIndicator_ The _FinancialObjectivePrsctrlIndicator_ to set. 660 */ 661 public void setFinancialObjectivePrsctrlIndicator(boolean _FinancialObjectivePrsctrlIndicator_) { 662 this.financialObjectivePrsctrlIndicator = _FinancialObjectivePrsctrlIndicator_; 663 } 664 665 /** 666 * Gets the accountCfdaNumber attribute. 667 * 668 * @return Returns the accountCfdaNumber 669 */ 670 public String getAccountCfdaNumber() { 671 return accountCfdaNumber; 672 } 673 674 /** 675 * Sets the accountCfdaNumber attribute. 676 * 677 * @param accountCfdaNumber The accountCfdaNumber to set. 678 */ 679 public void setAccountCfdaNumber(String accountCfdaNumber) { 680 this.accountCfdaNumber = accountCfdaNumber; 681 } 682 683 /** 684 * Gets the related CFDA record for this account 685 * 686 * @return a CFDA record 687 */ 688 public ContractsAndGrantsCfda getCfda() { 689 return cfda = (ContractsAndGrantsCfda) SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(ContractsAndGrantsCfda.class).retrieveExternalizableBusinessObjectIfNecessary(this, cfda, "cfda"); 690 } 691 692 public List<ContractsAndGrantsAccountAwardInformation> getAwards() { 693 // TODO this code totally breaks modularization but can't be fixed until data dictionary modularization plans come down the 694 // pike 695 awards = (List) SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(ContractsAndGrantsAccountAwardInformation.class).retrieveExternalizableBusinessObjectsList(this, "awards", ContractsAndGrantsAccountAwardInformation.class); 696 return awards; 697 } 698 699 public void setAwards(List awards) { 700 this.awards = awards; 701 } 702 703 /** 704 * Gets the accountOffCampusIndicator attribute. 705 * 706 * @return Returns the accountOffCampusIndicator 707 */ 708 public boolean isAccountOffCampusIndicator() { 709 return accountOffCampusIndicator; 710 } 711 712 /** 713 * Sets the accountOffCampusIndicator attribute. 714 * 715 * @param accountOffCampusIndicator The accountOffCampusIndicator to set. 716 */ 717 public void setAccountOffCampusIndicator(boolean accountOffCampusIndicator) { 718 this.accountOffCampusIndicator = accountOffCampusIndicator; 719 } 720 721 /** 722 * Gets the active attribute. 723 * 724 * @return Returns the active 725 */ 726 public boolean isActive() { 727 return active; 728 } 729 730 /** 731 * Sets the active attribute. 732 * 733 * @param active The active to set. 734 */ 735 public void setActive(boolean active) { 736 this.active = active; 737 } 738 739 /** 740 * Returns whether this account is not active or not 741 * 742 * @return the opposite of isActive() 743 */ 744 public boolean isClosed() { 745 return !active; 746 } 747 748 /** 749 * Sets the closed attribute. 750 * 751 * @param closed The closed to set. 752 */ 753 public void setClosed(boolean closed) { 754 this.active = !closed; 755 } 756 757 /** 758 * Gets the chartOfAccounts attribute. 759 * 760 * @return Returns the chartOfAccounts 761 */ 762 public Chart getChartOfAccounts() { 763 return chartOfAccounts; 764 } 765 766 /** 767 * Sets the chartOfAccounts attribute. 768 * 769 * @param chartOfAccounts The chartOfAccounts to set. 770 * @deprecated 771 */ 772 public void setChartOfAccounts(Chart chartOfAccounts) { 773 this.chartOfAccounts = chartOfAccounts; 774 } 775 776 /** 777 * Gets the organization attribute. 778 * 779 * @return Returns the organization 780 */ 781 public Organization getOrganization() { 782 return organization; 783 } 784 785 /** 786 * Sets the organization attribute. 787 * 788 * @param organization The organization to set. 789 * @deprecated 790 */ 791 public void setOrganization(Organization organization) { 792 this.organization = organization; 793 } 794 795 /** 796 * Gets the accountType attribute. 797 * 798 * @return Returns the accountType 799 */ 800 public AccountType getAccountType() { 801 return accountType; 802 } 803 804 /** 805 * Sets the accountType attribute. 806 * 807 * @param accountType The accountType to set. 808 * @deprecated 809 */ 810 public void setAccountType(AccountType accountType) { 811 this.accountType = accountType; 812 } 813 814 /** 815 * Gets the accountPhysicalCampus attribute. 816 * 817 * @return Returns the accountPhysicalCampus 818 */ 819 public Campus getAccountPhysicalCampus() { 820 return accountPhysicalCampus = (Campus) SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(Campus.class).retrieveExternalizableBusinessObjectIfNecessary(this, accountPhysicalCampus, "accountPhysicalCampus"); 821 } 822 823 /** 824 * Sets the accountPhysicalCampus attribute. 825 * 826 * @param accountPhysicalCampus The accountPhysicalCampus to set. 827 * @deprecated 828 */ 829 public void setAccountPhysicalCampus(Campus accountPhysicalCampus) { 830 this.accountPhysicalCampus = accountPhysicalCampus; 831 } 832 833 /** 834 * Gets the accountState attribute 835 * 836 * @return Returns the accountState 837 */ 838 public State getAccountState() { 839 accountState = SpringContext.getBean(StateService.class).getByPrimaryIdIfNecessary(accountStateCode, accountState); 840 return accountState; 841 } 842 843 /** 844 * Sets the accountState attribute 845 * 846 * @param state 847 * @deprecated 848 */ 849 public void setAccountState(State state) { 850 this.accountState = state; 851 } 852 853 /** 854 * Gets the subFundGroup attribute. 855 * 856 * @return Returns the subFundGroup 857 */ 858 public SubFundGroup getSubFundGroup() { 859 return subFundGroup; 860 } 861 862 /** 863 * Sets the subFundGroup attribute. 864 * 865 * @param subFundGroup The subFundGroup to set. 866 * @deprecated 867 */ 868 public void setSubFundGroup(SubFundGroup subFundGroup) { 869 this.subFundGroup = subFundGroup; 870 } 871 872 /** 873 * Gets the financialHigherEdFunction attribute. 874 * 875 * @return Returns the financialHigherEdFunction 876 */ 877 public HigherEducationFunction getFinancialHigherEdFunction() { 878 return financialHigherEdFunction; 879 } 880 881 /** 882 * Sets the financialHigherEdFunction attribute. 883 * 884 * @param financialHigherEdFunction The financialHigherEdFunction to set. 885 * @deprecated 886 */ 887 public void setFinancialHigherEdFunction(HigherEducationFunction financialHigherEdFunction) { 888 this.financialHigherEdFunction = financialHigherEdFunction; 889 } 890 891 /** 892 * Gets the accountRestrictedStatus attribute. 893 * 894 * @return Returns the accountRestrictedStatus 895 */ 896 public RestrictedStatus getAccountRestrictedStatus() { 897 return accountRestrictedStatus; 898 } 899 900 /** 901 * Sets the accountRestrictedStatus attribute. 902 * 903 * @param accountRestrictedStatus The accountRestrictedStatus to set. 904 * @deprecated 905 */ 906 public void setAccountRestrictedStatus(RestrictedStatus accountRestrictedStatus) { 907 this.accountRestrictedStatus = accountRestrictedStatus; 908 } 909 910 /** 911 * Gets the reportsToAccount attribute. 912 * 913 * @return Returns the reportsToAccount 914 */ 915 public Account getReportsToAccount() { 916 return reportsToAccount; 917 } 918 919 /** 920 * Sets the reportsToAccount attribute. 921 * 922 * @param reportsToAccount The reportsToAccount to set. 923 * @deprecated 924 */ 925 public void setReportsToAccount(Account reportsToAccount) { 926 this.reportsToAccount = reportsToAccount; 927 } 928 929 /** 930 * Gets the endowmentIncomeAccount attribute. 931 * 932 * @return Returns the endowmentIncomeAccount 933 */ 934 public Account getEndowmentIncomeAccount() { 935 return endowmentIncomeAccount; 936 } 937 938 /** 939 * Sets the endowmentIncomeAccount attribute. 940 * 941 * @param endowmentIncomeAccount The endowmentIncomeAccount to set. 942 * @deprecated 943 */ 944 public void setEndowmentIncomeAccount(Account endowmentIncomeAccount) { 945 this.endowmentIncomeAccount = endowmentIncomeAccount; 946 } 947 948 /** 949 * Gets the contractControlAccount attribute. 950 * 951 * @return Returns the contractControlAccount 952 */ 953 public Account getContractControlAccount() { 954 return contractControlAccount; 955 } 956 957 /** 958 * Sets the contractControlAccount attribute. 959 * 960 * @param contractControlAccount The contractControlAccount to set. 961 * @deprecated 962 */ 963 public void setContractControlAccount(Account contractControlAccount) { 964 this.contractControlAccount = contractControlAccount; 965 } 966 967 968 /** 969 * Gets the incomeStreamAccount attribute. 970 * 971 * @return Returns the incomeStreamAccount 972 */ 973 public Account getIncomeStreamAccount() { 974 return incomeStreamAccount; 975 } 976 977 /** 978 * Sets the incomeStreamAccount attribute. 979 * 980 * @param incomeStreamAccount The incomeStreamAccount to set. 981 * @deprecated 982 */ 983 public void setIncomeStreamAccount(Account incomeStreamAccount) { 984 this.incomeStreamAccount = incomeStreamAccount; 985 } 986 987 /** 988 * Gets the indirectCostRecoveryAcct attribute. 989 * 990 * @return Returns the indirectCostRecoveryAcct 991 */ 992 public Account getIndirectCostRecoveryAcct() { 993 return indirectCostRecoveryAcct; 994 } 995 996 /** 997 * Sets the indirectCostRecoveryAcct attribute. 998 * 999 * @param indirectCostRecoveryAcct The indirectCostRecoveryAcct to set. 1000 * @deprecated 1001 */ 1002 public void setIndirectCostRecoveryAcct(Account indirectCostRecoveryAcct) { 1003 this.indirectCostRecoveryAcct = indirectCostRecoveryAcct; 1004 } 1005 1006 1007 public Person getAccountFiscalOfficerUser() { 1008 // **** This fix is temporary until Jonathan's fix is reflected to Rice 1009 //accountFiscalOfficerUser = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(accountFiscalOfficerSystemIdentifier, accountFiscalOfficerUser); 1010 //return accountFiscalOfficerUser; 1011 PersonService<Person> personService = KIMServiceLocator.getPersonService(); 1012 accountFiscalOfficerUser = personService.getPerson(accountFiscalOfficerSystemIdentifier); 1013 return accountFiscalOfficerUser; 1014 } 1015 1016 /** 1017 * This fix is temporary until Jonathan's fix is reflected to Rice 1018 * @see org.kuali.rice.kns.bo.PersistableBusinessObjectBase#refreshReferenceObject(java.lang.String) 1019 */ 1020 public void refreshReferenceObject(String referenceObjectName) { 1021 if (referenceObjectName.equals("accountFiscalOfficerUser") || 1022 referenceObjectName.equals("accountSupervisoryUser") || 1023 referenceObjectName.equals("accountManagerUser")) { 1024 getAccountFiscalOfficerUser(); 1025 } else { 1026 super.refreshReferenceObject(referenceObjectName); 1027 } 1028 } 1029 1030 /** 1031 * @param accountFiscalOfficerUser The accountFiscalOfficerUser to set. 1032 * @deprecated 1033 */ 1034 public void setAccountFiscalOfficerUser(Person accountFiscalOfficerUser) { 1035 this.accountFiscalOfficerUser = accountFiscalOfficerUser; 1036 } 1037 1038 public Person getAccountManagerUser() { 1039 accountManagerUser = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(accountManagerSystemIdentifier, accountManagerUser); 1040 return accountManagerUser; 1041 } 1042 1043 /** 1044 * @param accountManagerUser The accountManagerUser to set. 1045 * @deprecated 1046 */ 1047 public void setAccountManagerUser(Person accountManagerUser) { 1048 this.accountManagerUser = accountManagerUser; 1049 } 1050 1051 1052 public Person getAccountSupervisoryUser() { 1053 accountSupervisoryUser = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(accountsSupervisorySystemsIdentifier, accountSupervisoryUser); 1054 return accountSupervisoryUser; 1055 } 1056 1057 /** 1058 * @param accountSupervisoryUser The accountSupervisoryUser to set. 1059 * @deprecated 1060 */ 1061 public void setAccountSupervisoryUser(Person accountSupervisoryUser) { 1062 this.accountSupervisoryUser = accountSupervisoryUser; 1063 } 1064 1065 1066 /** 1067 * @return Returns the continuationAccount. 1068 */ 1069 public Account getContinuationAccount() { 1070 return continuationAccount; 1071 } 1072 1073 1074 /** 1075 * @param continuationAccount The continuationAccount to set. 1076 * @deprecated 1077 */ 1078 public void setContinuationAccount(Account continuationAccount) { 1079 this.continuationAccount = continuationAccount; 1080 } 1081 1082 /** 1083 * @return Returns the accountGuideline. 1084 */ 1085 public AccountGuideline getAccountGuideline() { 1086 return accountGuideline; 1087 } 1088 1089 1090 /** 1091 * @param accountGuideline The accountGuideline to set. 1092 */ 1093 public void setAccountGuideline(AccountGuideline accountGuideline) { 1094 this.accountGuideline = accountGuideline; 1095 } 1096 1097 1098 /** 1099 * Gets the accountDescription attribute. 1100 * 1101 * @return Returns the accountDescription. 1102 */ 1103 public AccountDescription getAccountDescription() { 1104 return accountDescription; 1105 } 1106 1107 /** 1108 * Sets the accountDescription attribute value. 1109 * 1110 * @param accountDescription The accountDescription to set. 1111 */ 1112 public void setAccountDescription(AccountDescription accountDescription) { 1113 this.accountDescription = accountDescription; 1114 } 1115 1116 /** 1117 * @return Returns the subAccounts. 1118 */ 1119 public List getSubAccounts() { 1120 return subAccounts; 1121 } 1122 1123 1124 /** 1125 * @param subAccounts The subAccounts to set. 1126 */ 1127 public void setSubAccounts(List subAccounts) { 1128 this.subAccounts = subAccounts; 1129 } 1130 1131 1132 /** 1133 * @return Returns the chartOfAccountsCode. 1134 */ 1135 public String getChartOfAccountsCode() { 1136 return chartOfAccountsCode; 1137 } 1138 1139 1140 /** 1141 * @param chartOfAccountsCode The chartOfAccountsCode to set. 1142 */ 1143 public void setChartOfAccountsCode(String chartOfAccountsCode) { 1144 this.chartOfAccountsCode = chartOfAccountsCode; 1145 } 1146 1147 1148 /** 1149 * @return Returns the accountFiscalOfficerSystemIdentifier. 1150 */ 1151 public String getAccountFiscalOfficerSystemIdentifier() { 1152 return accountFiscalOfficerSystemIdentifier; 1153 } 1154 1155 /** 1156 * @return Returns the accountFiscalOfficerSystemIdentifier. 1157 */ 1158 public String getAccountFiscalOfficerSystemIdentifierForSearching() { 1159 return getAccountFiscalOfficerSystemIdentifier(); 1160 } 1161 1162 1163 /** 1164 * @param accountFiscalOfficerSystemIdentifier The accountFiscalOfficerSystemIdentifier to set. 1165 */ 1166 public void setAccountFiscalOfficerSystemIdentifier(String accountFiscalOfficerSystemIdentifier) { 1167 this.accountFiscalOfficerSystemIdentifier = accountFiscalOfficerSystemIdentifier; 1168 } 1169 1170 /** 1171 * @return Returns the accountManagerSystemIdentifier. 1172 */ 1173 public String getAccountManagerSystemIdentifier() { 1174 return accountManagerSystemIdentifier; 1175 } 1176 1177 /** 1178 * @return Returns the accountManagerSystemIdentifier. 1179 */ 1180 public String getAccountManagerSystemIdentifierForSearching() { 1181 return getAccountManagerSystemIdentifier(); 1182 } 1183 1184 /** 1185 * @param accountManagerSystemIdentifier The accountManagerSystemIdentifier to set. 1186 */ 1187 public void setAccountManagerSystemIdentifier(String accountManagerSystemIdentifier) { 1188 this.accountManagerSystemIdentifier = accountManagerSystemIdentifier; 1189 } 1190 1191 /** 1192 * @return Returns the accountPhysicalCampusCode. 1193 */ 1194 public String getAccountPhysicalCampusCode() { 1195 return accountPhysicalCampusCode; 1196 } 1197 1198 /** 1199 * @param accountPhysicalCampusCode The accountPhysicalCampusCode to set. 1200 */ 1201 public void setAccountPhysicalCampusCode(String accountPhysicalCampusCode) { 1202 this.accountPhysicalCampusCode = accountPhysicalCampusCode; 1203 } 1204 1205 /** 1206 * @return Returns the accountRestrictedStatusCode. 1207 */ 1208 public String getAccountRestrictedStatusCode() { 1209 return accountRestrictedStatusCode; 1210 } 1211 1212 /** 1213 * @param accountRestrictedStatusCode The accountRestrictedStatusCode to set. 1214 */ 1215 public void setAccountRestrictedStatusCode(String accountRestrictedStatusCode) { 1216 this.accountRestrictedStatusCode = accountRestrictedStatusCode; 1217 } 1218 1219 /** 1220 * @return Returns the accountsSupervisorySystemsIdentifier. 1221 */ 1222 public String getAccountsSupervisorySystemsIdentifier() { 1223 return accountsSupervisorySystemsIdentifier; 1224 } 1225 1226 /** 1227 * @return Returns the accountsSupervisorySystemsIdentifier. 1228 */ 1229 public String getAccountsSupervisorySystemsIdentifierForSearching() { 1230 return accountsSupervisorySystemsIdentifier; 1231 } 1232 1233 /** 1234 * @param accountsSupervisorySystemsIdentifier The accountsSupervisorySystemsIdentifier to set. 1235 */ 1236 public void setAccountsSupervisorySystemsIdentifier(String accountsSupervisorySystemsIdentifier) { 1237 this.accountsSupervisorySystemsIdentifier = accountsSupervisorySystemsIdentifier; 1238 } 1239 1240 /** 1241 * @return Returns the accountTypeCode. 1242 */ 1243 public String getAccountTypeCode() { 1244 return accountTypeCode; 1245 } 1246 1247 /** 1248 * @param accountTypeCode The accountTypeCode to set. 1249 */ 1250 public void setAccountTypeCode(String accountTypeCode) { 1251 this.accountTypeCode = accountTypeCode; 1252 } 1253 1254 /** 1255 * @return Returns the continuationAccountNumber. 1256 */ 1257 public String getContinuationAccountNumber() { 1258 return continuationAccountNumber; 1259 } 1260 1261 /** 1262 * @param continuationAccountNumber The continuationAccountNumber to set. 1263 */ 1264 public void setContinuationAccountNumber(String continuationAccountNumber) { 1265 this.continuationAccountNumber = continuationAccountNumber; 1266 } 1267 1268 /** 1269 * @return Returns the continuationFinChrtOfAcctCd. 1270 */ 1271 public String getContinuationFinChrtOfAcctCd() { 1272 return continuationFinChrtOfAcctCd; 1273 } 1274 1275 /** 1276 * @param continuationFinChrtOfAcctCd The continuationFinChrtOfAcctCd to set. 1277 */ 1278 public void setContinuationFinChrtOfAcctCd(String continuationFinChrtOfAcctCd) { 1279 this.continuationFinChrtOfAcctCd = continuationFinChrtOfAcctCd; 1280 } 1281 1282 /** 1283 * @return Returns the contractControlAccountNumber. 1284 */ 1285 public String getContractControlAccountNumber() { 1286 return contractControlAccountNumber; 1287 } 1288 1289 /** 1290 * @param contractControlAccountNumber The contractControlAccountNumber to set. 1291 */ 1292 public void setContractControlAccountNumber(String contractControlAccountNumber) { 1293 this.contractControlAccountNumber = contractControlAccountNumber; 1294 } 1295 1296 /** 1297 * @return Returns the contractControlFinCoaCode. 1298 */ 1299 public String getContractControlFinCoaCode() { 1300 return contractControlFinCoaCode; 1301 } 1302 1303 /** 1304 * @param contractControlFinCoaCode The contractControlFinCoaCode to set. 1305 */ 1306 public void setContractControlFinCoaCode(String contractControlFinCoaCode) { 1307 this.contractControlFinCoaCode = contractControlFinCoaCode; 1308 } 1309 1310 /** 1311 * @return Returns the endowmentIncomeAccountNumber. 1312 */ 1313 public String getEndowmentIncomeAccountNumber() { 1314 return endowmentIncomeAccountNumber; 1315 } 1316 1317 /** 1318 * @param endowmentIncomeAccountNumber The endowmentIncomeAccountNumber to set. 1319 */ 1320 public void setEndowmentIncomeAccountNumber(String endowmentIncomeAccountNumber) { 1321 this.endowmentIncomeAccountNumber = endowmentIncomeAccountNumber; 1322 } 1323 1324 /** 1325 * @return Returns the endowmentIncomeAcctFinCoaCd. 1326 */ 1327 public String getEndowmentIncomeAcctFinCoaCd() { 1328 return endowmentIncomeAcctFinCoaCd; 1329 } 1330 1331 /** 1332 * @param endowmentIncomeAcctFinCoaCd The endowmentIncomeAcctFinCoaCd to set. 1333 */ 1334 public void setEndowmentIncomeAcctFinCoaCd(String endowmentIncomeAcctFinCoaCd) { 1335 this.endowmentIncomeAcctFinCoaCd = endowmentIncomeAcctFinCoaCd; 1336 } 1337 1338 /** 1339 * @return Returns the financialHigherEdFunctionCd. 1340 */ 1341 public String getFinancialHigherEdFunctionCd() { 1342 return financialHigherEdFunctionCd; 1343 } 1344 1345 /** 1346 * @param financialHigherEdFunctionCd The financialHigherEdFunctionCd to set. 1347 */ 1348 public void setFinancialHigherEdFunctionCd(String financialHigherEdFunctionCd) { 1349 this.financialHigherEdFunctionCd = financialHigherEdFunctionCd; 1350 } 1351 1352 /** 1353 * @return Returns the incomeStreamAccountNumber. 1354 */ 1355 public String getIncomeStreamAccountNumber() { 1356 return incomeStreamAccountNumber; 1357 } 1358 1359 /** 1360 * @param incomeStreamAccountNumber The incomeStreamAccountNumber to set. 1361 */ 1362 public void setIncomeStreamAccountNumber(String incomeStreamAccountNumber) { 1363 this.incomeStreamAccountNumber = incomeStreamAccountNumber; 1364 } 1365 1366 /** 1367 * @return Returns the incomeStreamFinancialCoaCode. 1368 */ 1369 public String getIncomeStreamFinancialCoaCode() { 1370 return incomeStreamFinancialCoaCode; 1371 } 1372 1373 /** 1374 * @param incomeStreamFinancialCoaCode The incomeStreamFinancialCoaCode to set. 1375 */ 1376 public void setIncomeStreamFinancialCoaCode(String incomeStreamFinancialCoaCode) { 1377 this.incomeStreamFinancialCoaCode = incomeStreamFinancialCoaCode; 1378 } 1379 1380 /** 1381 * @return Returns the indirectCostRcvyFinCoaCode. 1382 */ 1383 public String getIndirectCostRcvyFinCoaCode() { 1384 return indirectCostRcvyFinCoaCode; 1385 } 1386 1387 /** 1388 * @param indirectCostRcvyFinCoaCode The indirectCostRcvyFinCoaCode to set. 1389 */ 1390 public void setIndirectCostRcvyFinCoaCode(String indirectCostRcvyFinCoaCode) { 1391 this.indirectCostRcvyFinCoaCode = indirectCostRcvyFinCoaCode; 1392 } 1393 1394 /** 1395 * @return Returns the indirectCostRecoveryAcctNbr. 1396 */ 1397 public String getIndirectCostRecoveryAcctNbr() { 1398 return indirectCostRecoveryAcctNbr; 1399 } 1400 1401 /** 1402 * @param indirectCostRecoveryAcctNbr The indirectCostRecoveryAcctNbr to set. 1403 */ 1404 public void setIndirectCostRecoveryAcctNbr(String indirectCostRecoveryAcctNbr) { 1405 this.indirectCostRecoveryAcctNbr = indirectCostRecoveryAcctNbr; 1406 } 1407 1408 /** 1409 * @return Returns the organizationCode. 1410 */ 1411 public String getOrganizationCode() { 1412 return organizationCode; 1413 } 1414 1415 /** 1416 * @param organizationCode The organizationCode to set. 1417 */ 1418 public void setOrganizationCode(String organizationCode) { 1419 this.organizationCode = organizationCode; 1420 } 1421 1422 /** 1423 * @return Returns the reportsToAccountNumber. 1424 */ 1425 public String getReportsToAccountNumber() { 1426 return reportsToAccountNumber; 1427 } 1428 1429 /** 1430 * @param reportsToAccountNumber The reportsToAccountNumber to set. 1431 */ 1432 public void setReportsToAccountNumber(String reportsToAccountNumber) { 1433 this.reportsToAccountNumber = reportsToAccountNumber; 1434 } 1435 1436 /** 1437 * @return Returns the reportsToChartOfAccountsCode. 1438 */ 1439 public String getReportsToChartOfAccountsCode() { 1440 return reportsToChartOfAccountsCode; 1441 } 1442 1443 /** 1444 * @param reportsToChartOfAccountsCode The reportsToChartOfAccountsCode to set. 1445 */ 1446 public void setReportsToChartOfAccountsCode(String reportsToChartOfAccountsCode) { 1447 this.reportsToChartOfAccountsCode = reportsToChartOfAccountsCode; 1448 } 1449 1450 /** 1451 * @return Returns the subFundGroupCode. 1452 */ 1453 public String getSubFundGroupCode() { 1454 return subFundGroupCode; 1455 } 1456 1457 /** 1458 * @param subFundGroupCode The subFundGroupCode to set. 1459 */ 1460 public void setSubFundGroupCode(String subFundGroupCode) { 1461 this.subFundGroupCode = subFundGroupCode; 1462 forContractsAndGrants = null; 1463 } 1464 1465 /** 1466 * Gets the postalZipCode attribute. 1467 * 1468 * @return Returns the postalZipCode. 1469 */ 1470 public PostalCode getPostalZipCode() { 1471 postalZipCode = SpringContext.getBean(PostalCodeService.class).getByPostalCodeInDefaultCountryIfNecessary(accountZipCode, postalZipCode); 1472 return postalZipCode; 1473 } 1474 1475 /** 1476 * Sets the postalZipCode attribute value. 1477 * 1478 * @param postalZipCode The postalZipCode to set. 1479 */ 1480 public void setPostalZipCode(PostalCode postalZipCode) { 1481 this.postalZipCode = postalZipCode; 1482 } 1483 1484 /** 1485 * Gets the budgetRecordingLevel attribute. 1486 * 1487 * @return Returns the budgetRecordingLevel. 1488 */ 1489 public BudgetRecordingLevel getBudgetRecordingLevel() { 1490 return budgetRecordingLevel; 1491 } 1492 1493 /** 1494 * Sets the budgetRecordingLevel attribute value. 1495 * 1496 * @param budgetRecordingLevel The budgetRecordingLevel to set. 1497 */ 1498 public void setBudgetRecordingLevel(BudgetRecordingLevel budgetRecordingLevel) { 1499 this.budgetRecordingLevel = budgetRecordingLevel; 1500 } 1501 1502 /** 1503 * Gets the sufficientFundsCode attribute. 1504 * 1505 * @return Returns the sufficientFundsCode. 1506 */ 1507 public SufficientFundsCode getSufficientFundsCode() { 1508 return sufficientFundsCode; 1509 } 1510 1511 /** 1512 * Sets the sufficientFundsCode attribute value. 1513 * 1514 * @param sufficientFundsCode The sufficientFundsCode to set. 1515 */ 1516 public void setSufficientFundsCode(SufficientFundsCode sufficientFundsCode) { 1517 this.sufficientFundsCode = sufficientFundsCode; 1518 } 1519 1520 /** 1521 * Gets the acctIndirectCostRcvyType attribute. 1522 * 1523 * @return Returns the acctIndirectCostRcvyType. 1524 */ 1525 public IndirectCostRecoveryType getAcctIndirectCostRcvyType() { 1526 return acctIndirectCostRcvyType; 1527 } 1528 1529 /** 1530 * Sets the acctIndirectCostRcvyType attribute value. 1531 * 1532 * @param acctIndirectCostRcvyType The acctIndirectCostRcvyType to set. 1533 */ 1534 public void setAcctIndirectCostRcvyType(IndirectCostRecoveryType acctIndirectCostRcvyType) { 1535 this.acctIndirectCostRcvyType = acctIndirectCostRcvyType; 1536 } 1537 1538 /** 1539 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 1540 */ 1541 protected LinkedHashMap toStringMapper() { 1542 LinkedHashMap m = new LinkedHashMap(); 1543 1544 m.put("chartCode", this.chartOfAccountsCode); 1545 m.put("accountNumber", this.accountNumber); 1546 1547 return m; 1548 } 1549 1550 1551 /** 1552 * Implementing equals since I need contains to behave reasonably in a hashed datastructure. 1553 * 1554 * @see java.lang.Object#equals(java.lang.Object) 1555 */ 1556 public boolean equals(Object obj) { 1557 boolean equal = false; 1558 1559 if (obj != null) { 1560 if (this.getClass().equals(obj.getClass())) { 1561 Account other = (Account) obj; 1562 1563 if (StringUtils.equals(this.getChartOfAccountsCode(), other.getChartOfAccountsCode())) { 1564 if (StringUtils.equals(this.getAccountNumber(), other.getAccountNumber())) { 1565 equal = true; 1566 } 1567 } 1568 } 1569 } 1570 1571 return equal; 1572 } 1573 1574 /** 1575 * Calcluates hashCode based on current values of chartOfAccountsCode and accountNumber fields. Somewhat dangerous, since both 1576 * of those fields are mutable, but I don't expect people to be editing those values directly for Accounts stored in hashed 1577 * datastructures. 1578 * 1579 * @see java.lang.Object#hashCode() 1580 */ 1581 public int hashCode() { 1582 String hashString = getChartOfAccountsCode() + "|" + getAccountNumber(); 1583 1584 return hashString.hashCode(); 1585 } 1586 1587 1588 /** 1589 * Convenience method to make the primitive account fields from this Account easier to compare to the account fields from 1590 * another Account or an AccountingLine 1591 * 1592 * @return String representing the account associated with this Accounting 1593 */ 1594 public String getAccountKey() { 1595 String key = getChartOfAccountsCode() + ":" + getAccountNumber(); 1596 return key; 1597 } 1598 1599 /** 1600 * Gets the dummy attribute. 1601 * 1602 * @return Returns the dummy. 1603 */ 1604 1605 /** 1606 * Gets the accountResponsibilitySection attribute. 1607 * 1608 * @return Returns the accountResponsibilitySection. 1609 */ 1610 public String getAccountResponsibilitySection() { 1611 return accountResponsibilitySection; 1612 } 1613 1614 /** 1615 * Sets the accountResponsibilitySection attribute value. 1616 * 1617 * @param accountResponsibilitySection The accountResponsibilitySection to set. 1618 */ 1619 public void setAccountResponsibilitySection(String accountResponsibilitySection) { 1620 this.accountResponsibilitySection = accountResponsibilitySection; 1621 } 1622 1623 /** 1624 * Gets the contractsAndGrantsSection attribute. 1625 * 1626 * @return Returns the contractsAndGrantsSection. 1627 */ 1628 public String getContractsAndGrantsSection() { 1629 return contractsAndGrantsSection; 1630 } 1631 1632 /** 1633 * Sets the contractsAndGrantsSection attribute value. 1634 * 1635 * @param contractsAndGrantsSection The contractsAndGrantsSection to set. 1636 */ 1637 public void setContractsAndGrantsSection(String contractsAndGrantsSection) { 1638 this.contractsAndGrantsSection = contractsAndGrantsSection; 1639 } 1640 1641 /** 1642 * Gets the accountDescriptionSection attribute. 1643 * 1644 * @return Returns the accountDescriptionSection. 1645 */ 1646 public String getAccountDescriptionSection() { 1647 return accountDescriptionSection; 1648 } 1649 1650 /** 1651 * Sets the accountDescriptionSection attribute value. 1652 * 1653 * @param accountDescriptionSection The accountDescriptionSection to set. 1654 */ 1655 public void setAccountDescriptionSection(String accountDescriptionSection) { 1656 this.accountDescriptionSection = accountDescriptionSection; 1657 } 1658 1659 /** 1660 * Gets the guidelinesAndPurposeSection attribute. 1661 * 1662 * @return Returns the guidelinesAndPurposeSection. 1663 */ 1664 public String getGuidelinesAndPurposeSection() { 1665 return guidelinesAndPurposeSection; 1666 } 1667 1668 /** 1669 * Sets the guidelinesAndPurposeSection attribute value. 1670 * 1671 * @param guidelinesAndPurposeSection The guidelinesAndPurposeSection to set. 1672 */ 1673 public void setGuidelinesAndPurposeSection(String guidelinesAndPurposeSection) { 1674 this.guidelinesAndPurposeSection = guidelinesAndPurposeSection; 1675 } 1676 1677 /** 1678 * Gets the accountResponsibilitySectionBlank attribute. 1679 * 1680 * @return Returns the accountResponsibilitySectionBlank. 1681 */ 1682 public String getAccountResponsibilitySectionBlank() { 1683 return accountResponsibilitySectionBlank; 1684 } 1685 1686 /** 1687 * Gets the contractsAndGrantsSectionBlank attribute. 1688 * 1689 * @return Returns the contractsAndGrantsSectionBlank. 1690 */ 1691 public String getContractsAndGrantsSectionBlank() { 1692 return contractsAndGrantsSectionBlank; 1693 } 1694 1695 /** 1696 * Gets the accountDescriptionSectionBlank attribute. 1697 * 1698 * @return Returns the accountDescriptionSectionBlank. 1699 */ 1700 public String getAccountDescriptionSectionBlank() { 1701 return accountDescriptionSectionBlank; 1702 } 1703 1704 /** 1705 * Gets the guidelinesAndPurposeSectionBlank attribute. 1706 * 1707 * @return Returns the guidelinesAndPurposeSectionBlank. 1708 */ 1709 public String getGuidelinesAndPurposeSectionBlank() { 1710 return guidelinesAndPurposeSectionBlank; 1711 } 1712 1713 /** 1714 * Gets the endowmentIncomeChartOfAccounts attribute. 1715 * 1716 * @return Returns the endowmentIncomeChartOfAccounts. 1717 */ 1718 public Chart getEndowmentIncomeChartOfAccounts() { 1719 return endowmentIncomeChartOfAccounts; 1720 } 1721 1722 /** 1723 * Sets the endowmentIncomeChartOfAccounts attribute value. 1724 * 1725 * @param endowmentIncomeChartOfAccounts The endowmentIncomeChartOfAccounts to set. 1726 */ 1727 public void setEndowmentIncomeChartOfAccounts(Chart endowmentIncomeChartOfAccounts) { 1728 this.endowmentIncomeChartOfAccounts = endowmentIncomeChartOfAccounts; 1729 } 1730 1731 @Override 1732 public void beforeUpdate(PersistenceBroker persistenceBroker) throws PersistenceBrokerException { 1733 super.beforeUpdate(persistenceBroker); 1734 try { 1735 // KULCOA-549: update the sufficient funds table 1736 // get the current data from the database 1737 BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class); 1738 Account originalAcct = (Account) boService.retrieve(this); 1739 1740 if (originalAcct != null) { 1741 if (!originalAcct.getSufficientFundsCode().equals(getSufficientFundsCode()) || originalAcct.isExtrnlFinEncumSufficntFndIndicator() != isExtrnlFinEncumSufficntFndIndicator() || originalAcct.isIntrnlFinEncumSufficntFndIndicator() != isIntrnlFinEncumSufficntFndIndicator() || originalAcct.isPendingAcctSufficientFundsIndicator() != isPendingAcctSufficientFundsIndicator() || originalAcct.isFinPreencumSufficientFundIndicator() != isFinPreencumSufficientFundIndicator()) { 1742 SufficientFundRebuild sfr = new SufficientFundRebuild(); 1743 sfr.setAccountFinancialObjectTypeCode(SufficientFundRebuild.REBUILD_ACCOUNT); 1744 sfr.setChartOfAccountsCode(getChartOfAccountsCode()); 1745 sfr.setAccountNumberFinancialObjectCode(getAccountNumber()); 1746 if (boService.retrieve(sfr) == null) { 1747 persistenceBroker.store(sfr); 1748 } 1749 } 1750 } 1751 } 1752 catch (Exception ex) { 1753 LOG.error("Problem updating sufficient funds rebuild table: ", ex); 1754 } 1755 } 1756 1757 /** 1758 * Gets the forContractsAndGrants attribute. 1759 * 1760 * @return Returns the forContractsAndGrants. 1761 */ 1762 public boolean isForContractsAndGrants() { 1763 if ( forContractsAndGrants == null ) { 1764 forContractsAndGrants = SpringContext.getBean(SubFundGroupService.class).isForContractsAndGrants(getSubFundGroup()); 1765 } 1766 return forContractsAndGrants; 1767 } 1768 1769 /** 1770 * determine if the given account is awarded by a federal agency 1771 * 1772 * @param account the given account 1773 * @param federalAgencyTypeCodes the given federal agency type code 1774 * @return true if the given account is funded by a federal agency or associated with federal pass through indicator; otherwise, 1775 * false 1776 */ 1777 public boolean isAwardedByFederalAgency(List<String> federalAgencyTypeCodes) { 1778 return SpringContext.getBean(ContractsAndGrantsModuleService.class).isAwardedByFederalAgency(getChartOfAccountsCode(), getAccountNumber(), federalAgencyTypeCodes); 1779 } 1780 1781 /** 1782 * Gets the contractsAndGrantsAccountResponsibilityId attribute. 1783 * 1784 * @return Returns the contractsAndGrantsAccountResponsibilityId. 1785 */ 1786 public Integer getContractsAndGrantsAccountResponsibilityId() { 1787 return contractsAndGrantsAccountResponsibilityId; 1788 } 1789 1790 /** 1791 * Sets the contractsAndGrantsAccountResponsibilityId attribute value. 1792 * 1793 * @param contractsAndGrantsAccountResponsibilityId The contractsAndGrantsAccountResponsibilityId to set. 1794 */ 1795 public void setContractsAndGrantsAccountResponsibilityId(Integer contractsAndGrantsAccountResponsibilityId) { 1796 this.contractsAndGrantsAccountResponsibilityId = contractsAndGrantsAccountResponsibilityId; 1797 } 1798 1799 /** 1800 * Gets the fringeBenefitsChartOfAccount attribute. 1801 * 1802 * @return Returns the fringeBenefitsChartOfAccount. 1803 */ 1804 public Chart getFringeBenefitsChartOfAccount() { 1805 return fringeBenefitsChartOfAccount; 1806 } 1807 1808 /** 1809 * Sets the fringeBenefitsChartOfAccount attribute value. 1810 * 1811 * @param fringeBenefitsChartOfAccount The fringeBenefitsChartOfAccount to set. 1812 */ 1813 public void setFringeBenefitsChartOfAccount(Chart fringeBenefitsChartOfAccount) { 1814 this.fringeBenefitsChartOfAccount = fringeBenefitsChartOfAccount; 1815 } 1816 1817 /** 1818 * Gets the continuationChartOfAccount attribute. 1819 * 1820 * @return Returns the continuationChartOfAccount. 1821 */ 1822 public Chart getContinuationChartOfAccount() { 1823 return continuationChartOfAccount; 1824 } 1825 1826 /** 1827 * Sets the continuationChartOfAccount attribute value. 1828 * 1829 * @param continuationChartOfAccount The continuationChartOfAccount to set. 1830 */ 1831 public void setContinuationChartOfAccount(Chart continuationChartOfAccount) { 1832 this.continuationChartOfAccount = continuationChartOfAccount; 1833 } 1834 1835 /** 1836 * Gets the incomeStreamChartOfAccounts attribute. 1837 * 1838 * @return Returns the incomeStreamChartOfAccounts. 1839 */ 1840 public Chart getIncomeStreamChartOfAccounts() { 1841 return incomeStreamChartOfAccounts; 1842 } 1843 1844 /** 1845 * Sets the incomeStreamChartOfAccounts attribute value. 1846 * 1847 * @param incomeStreamChartOfAccounts The incomeStreamChartOfAccounts to set. 1848 */ 1849 public void setIncomeStreamChartOfAccounts(Chart incomeStreamChartOfAccounts) { 1850 this.incomeStreamChartOfAccounts = incomeStreamChartOfAccounts; 1851 } 1852 1853 /** 1854 * Gets the incomeStreamChartOfAccounts attribute. 1855 * 1856 * @return Returns the incomeStreamChartOfAccounts. 1857 */ 1858 public Chart getContractControlChartOfAccounts() { 1859 return contractControlChartOfAccounts; 1860 } 1861 1862 /** 1863 * Sets the contractControlChartOfAccounts attribute value. 1864 * 1865 * @param contractControlChartOfAccounts The contractControlChartOfAccounts to set. 1866 */ 1867 public void setContractControlChartOfAccounts(Chart contractControlChartOfAccounts) { 1868 this.contractControlChartOfAccounts = contractControlChartOfAccounts; 1869 } 1870 1871 /** 1872 * Gets the indirectCostRcvyChartOfAccounts attribute. 1873 * 1874 * @return Returns the indirectCostRcvyChartOfAccounts. 1875 */ 1876 public Chart getIndirectCostRcvyChartOfAccounts() { 1877 return indirectCostRcvyChartOfAccounts; 1878 } 1879 1880 /** 1881 * Sets the indirectCostRcvyChartOfAccounts attribute value. 1882 * 1883 * @param indirectCostRcvyChartOfAccounts The indirectCostRcvyChartOfAccounts to set. 1884 */ 1885 public void setIndirectCostRcvyChartOfAccounts(Chart indirectCostRcvyChartOfAccounts) { 1886 this.indirectCostRcvyChartOfAccounts = indirectCostRcvyChartOfAccounts; 1887 } 1888 1889 }