Java tutorial
/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.coa.businessobject; import java.sql.Date; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; import org.kuali.kfs.coa.service.SubFundGroupService; import org.kuali.kfs.gl.businessobject.SufficientFundRebuild; import org.kuali.kfs.integration.cg.ContractsAndGrantsAccountAwardInformation; import org.kuali.kfs.integration.cg.ContractsAndGrantsCfda; import org.kuali.kfs.integration.cg.ContractsAndGrantsModuleService; import org.kuali.kfs.integration.ld.LaborBenefitRateCategory; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.datetime.DateTimeService; import org.kuali.rice.core.api.mo.common.active.MutableInactivatable; import org.kuali.rice.kim.api.identity.Person; import org.kuali.rice.krad.bo.PersistableBusinessObject; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; import org.kuali.rice.krad.service.BusinessObjectService; import org.kuali.rice.krad.service.KualiModuleService; import org.kuali.rice.krad.service.ModuleService; import org.kuali.rice.location.api.LocationConstants; import org.kuali.rice.location.framework.campus.CampusEbo; import org.kuali.rice.location.framework.postalcode.PostalCodeEbo; import org.kuali.rice.location.framework.state.StateEbo; /** * */ public class Account extends PersistableBusinessObjectBase implements AccountIntf, MutableInactivatable { private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(Account.class); public static final String CACHE_NAME = KFSConstants.APPLICATION_NAMESPACE_CODE + "/" + "Account"; protected String chartOfAccountsCode; protected String accountNumber; protected String accountName; protected boolean accountsFringesBnftIndicator; protected Date accountRestrictedStatusDate; protected String accountCityName; protected String accountStateCode; protected String accountStreetAddress; protected String accountZipCode; protected String accountCountryCode = KFSConstants.COUNTRY_CODE_UNITED_STATES; protected Date accountCreateDate; protected Date accountEffectiveDate; protected Date accountExpirationDate; protected String acctIndirectCostRcvyTypeCd; protected String acctCustomIndCstRcvyExclCd; protected String financialIcrSeriesIdentifier; protected boolean accountInFinancialProcessingIndicator; protected String budgetRecordingLevelCode; protected String accountSufficientFundsCode; protected boolean pendingAcctSufficientFundsIndicator; protected boolean extrnlFinEncumSufficntFndIndicator; protected boolean intrnlFinEncumSufficntFndIndicator; protected boolean finPreencumSufficientFundIndicator; protected boolean financialObjectivePrsctrlIndicator; protected String accountCfdaNumber; protected boolean accountOffCampusIndicator; protected boolean active; protected String accountFiscalOfficerSystemIdentifier; protected String accountsSupervisorySystemsIdentifier; protected String accountManagerSystemIdentifier; protected String organizationCode; protected String accountTypeCode; protected String accountPhysicalCampusCode; protected String subFundGroupCode; protected String financialHigherEdFunctionCd; protected String accountRestrictedStatusCode; protected String reportsToChartOfAccountsCode; protected String reportsToAccountNumber; protected String continuationFinChrtOfAcctCd; protected String continuationAccountNumber; protected String endowmentIncomeAcctFinCoaCd; protected String endowmentIncomeAccountNumber; protected String contractControlFinCoaCode; protected String contractControlAccountNumber; protected String incomeStreamFinancialCoaCode; protected String incomeStreamAccountNumber; protected Integer contractsAndGrantsAccountResponsibilityId; protected Chart chartOfAccounts; protected Chart endowmentIncomeChartOfAccounts; protected Organization organization; protected AccountType accountType; protected CampusEbo accountPhysicalCampus; protected StateEbo accountState; protected SubFundGroup subFundGroup; protected HigherEducationFunction financialHigherEdFunction; protected RestrictedStatus accountRestrictedStatus; protected Account reportsToAccount; protected Account continuationAccount; protected Account endowmentIncomeAccount; protected Account contractControlAccount; protected Account incomeStreamAccount; protected IndirectCostRecoveryType acctIndirectCostRcvyType; protected Person accountFiscalOfficerUser; protected Person accountSupervisoryUser; protected Person accountManagerUser; protected PostalCodeEbo postalZipCode; protected BudgetRecordingLevel budgetRecordingLevel; protected SufficientFundsCode sufficientFundsCode; protected ContractsAndGrantsCfda cfda; protected Chart fringeBenefitsChartOfAccount; protected Chart continuationChartOfAccount; protected Chart incomeStreamChartOfAccounts; protected Chart contractControlChartOfAccounts; // Several kinds of Dummy Attributes for dividing sections on Inquiry page protected String accountResponsibilitySectionBlank; protected String accountResponsibilitySection; protected String contractsAndGrantsSectionBlank; protected String contractsAndGrantsSection; protected String guidelinesAndPurposeSectionBlank; protected String guidelinesAndPurposeSection; protected String accountDescriptionSectionBlank; protected String accountDescriptionSection; protected Boolean forContractsAndGrants; protected AccountGuideline accountGuideline; protected AccountDescription accountDescription; protected List subAccounts; protected List<ContractsAndGrantsAccountAwardInformation> awards; protected List<IndirectCostRecoveryAccount> indirectCostRecoveryAccounts; //added for the employee labor benefit calculation protected String laborBenefitRateCategoryCode; protected LaborBenefitRateCategory laborBenefitRateCategory; /** * Default no-arg constructor. */ public Account() { active = true; // assume active is true until set otherwise indirectCostRecoveryAccounts = new ArrayList<IndirectCostRecoveryAccount>(); } /** * This method gathers all SubAccounts related to this account if the account is marked as closed to deactivate */ public List<PersistableBusinessObject> generateDeactivationsToPersist() { // Retrieve all the existing sub accounts for this List<SubAccount> bosToDeactivate = new ArrayList<SubAccount>(); if (!isActive()) { Map<String, Object> fieldValues = new HashMap<String, Object>(); fieldValues.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, getChartOfAccountsCode()); fieldValues.put(KFSPropertyConstants.ACCOUNT_NUMBER, getAccountNumber()); fieldValues.put(KFSPropertyConstants.ACTIVE, true); Collection<SubAccount> existingSubAccounts = SpringContext.getBean(BusinessObjectService.class) .findMatching(SubAccount.class, fieldValues); bosToDeactivate.addAll(existingSubAccounts); } // mark all the sub accounts as inactive for (SubAccount subAccount : bosToDeactivate) { subAccount.setActive(false); } return new ArrayList<PersistableBusinessObject>(bosToDeactivate); } /** * Gets the accountNumber attribute. * * @return Returns the accountNumber */ @Override public String getAccountNumber() { return accountNumber; } /** * Sets the accountNumber attribute. * * @param accountNumber The accountNumber to set. */ @Override public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; } /** * Gets the accountName attribute. * * @return Returns the accountName */ @Override public String getAccountName() { return accountName; } /** * Sets the accountName attribute. * * @param accountName The accountName to set. */ @Override public void setAccountName(String accountName) { this.accountName = accountName; } /** * Gets the _AccountsFringesBnftIndicator_ attribute. * * @return Returns the _AccountsFringesBnftIndicator_ */ @Override public boolean isAccountsFringesBnftIndicator() { return accountsFringesBnftIndicator; } /** * Sets the _AccountsFringesBnftIndicator_ attribute. * * @param _AccountsFringesBnftIndicator_ The _AccountsFringesBnftIndicator_ to set. */ @Override public void setAccountsFringesBnftIndicator(boolean _AccountsFringesBnftIndicator_) { this.accountsFringesBnftIndicator = _AccountsFringesBnftIndicator_; } /** * Gets the accountRestrictedStatusDate attribute. * * @return Returns the accountRestrictedStatusDate */ @Override public Date getAccountRestrictedStatusDate() { return accountRestrictedStatusDate; } /** * Sets the accountRestrictedStatusDate attribute. * * @param accountRestrictedStatusDate The accountRestrictedStatusDate to set. */ @Override public void setAccountRestrictedStatusDate(Date accountRestrictedStatusDate) { this.accountRestrictedStatusDate = accountRestrictedStatusDate; } /** * Gets the accountCityName attribute. * * @return Returns the accountCityName */ @Override public String getAccountCityName() { return accountCityName; } /** * Sets the accountCityName attribute. * * @param accountCityName The accountCityName to set. */ @Override public void setAccountCityName(String accountCityName) { this.accountCityName = accountCityName; } /** * Gets the accountStateCode attribute. * * @return Returns the accountStateCode */ @Override public String getAccountStateCode() { return accountStateCode; } /** * Sets the accountStateCode attribute. * * @param accountStateCode The accountStateCode to set. */ @Override public void setAccountStateCode(String accountStateCode) { this.accountStateCode = accountStateCode; } /** * Gets the accountStreetAddress attribute. * * @return Returns the accountStreetAddress */ @Override public String getAccountStreetAddress() { return accountStreetAddress; } /** * Sets the accountStreetAddress attribute. * * @param accountStreetAddress The accountStreetAddress to set. */ @Override public void setAccountStreetAddress(String accountStreetAddress) { this.accountStreetAddress = accountStreetAddress; } /** * Gets the accountZipCode attribute. * * @return Returns the accountZipCode */ @Override public String getAccountZipCode() { return accountZipCode; } /** * Sets the accountZipCode attribute. * * @param accountZipCode The accountZipCode to set. */ @Override public void setAccountZipCode(String accountZipCode) { this.accountZipCode = accountZipCode; } /** * Gets the accountCreateDate attribute. * * @return Returns the accountCreateDate */ @Override public Date getAccountCreateDate() { return accountCreateDate; } /** * Sets the accountCreateDate attribute. * * @param accountCreateDate The accountCreateDate to set. */ @Override public void setAccountCreateDate(Date accountCreateDate) { this.accountCreateDate = accountCreateDate; } /** * Gets the accountEffectiveDate attribute. * * @return Returns the accountEffectiveDate */ @Override public Date getAccountEffectiveDate() { return accountEffectiveDate; } /** * Sets the accountEffectiveDate attribute. * * @param accountEffectiveDate The accountEffectiveDate to set. */ @Override public void setAccountEffectiveDate(Date accountEffectiveDate) { this.accountEffectiveDate = accountEffectiveDate; } /** * Gets the accountExpirationDate attribute. * * @return Returns the accountExpirationDate */ @Override public Date getAccountExpirationDate() { return accountExpirationDate; } /** * Sets the accountExpirationDate attribute. * * @param accountExpirationDate The accountExpirationDate to set. */ @Override public void setAccountExpirationDate(Date accountExpirationDate) { this.accountExpirationDate = accountExpirationDate; } /** * This method determines whether the account is expired or not. Note that if Expiration Date is the same as today, then this * will return false. It will only return true if the account expiration date is one day earlier than today or earlier. Note * that this logic ignores all time components when doing the comparison. It only does the before/after comparison based on date * values, not time-values. * * @return true or false based on the logic outlined above */ @Override public boolean isExpired() { LOG.debug("entering isExpired()"); // dont even bother trying to test if the accountExpirationDate is null if (accountExpirationDate == null) { return false; } return isExpired(SpringContext.getBean(DateTimeService.class).getCurrentCalendar()); } /** * This method determines whether the account is expired or not. Note that if Expiration Date is the same date as testDate, then * this will return false. It will only return true if the account expiration date is one day earlier than testDate or earlier. * Note that this logic ignores all time components when doing the comparison. It only does the before/after comparison based on * date values, not time-values. * * @param testDate - Calendar instance with the date to test the Account's Expiration Date against. This is most commonly set to * today's date. * @return true or false based on the logic outlined above */ @Override public boolean isExpired(Calendar testDate) { if (LOG.isDebugEnabled()) { LOG.debug("entering isExpired(" + testDate + ")"); } // dont even bother trying to test if the accountExpirationDate is null if (accountExpirationDate == null) { return false; } // remove any time-components from the testDate testDate = DateUtils.truncate(testDate, Calendar.DAY_OF_MONTH); // get a calendar reference to the Account Expiration // date, and remove any time components Calendar acctDate = Calendar.getInstance(); acctDate.setTime(this.accountExpirationDate); acctDate = DateUtils.truncate(acctDate, Calendar.DAY_OF_MONTH); // if the Account Expiration Date is before the testDate return acctDate.before(testDate); } /** * This method determines whether the account is expired or not. Note that if Expiration Date is the same date as testDate, then * this will return false. It will only return true if the account expiration date is one day earlier than testDate or earlier. * Note that this logic ignores all time components when doing the comparison. It only does the before/after comparison based on * date values, not time-values. * * @param testDate - java.util.Date instance with the date to test the Account's Expiration Date against. This is most commonly * set to today's date. * @return true or false based on the logic outlined above */ @Override public boolean isExpired(Date testDate) { // dont even bother trying to test if the accountExpirationDate is null if (accountExpirationDate == null) { return false; } Calendar acctDate = Calendar.getInstance(); acctDate.setTime(testDate); return isExpired(acctDate); } /** * Gets the acctIndirectCostRcvyTypeCd attribute. * * @return Returns the acctIndirectCostRcvyTypeCd */ @Override public String getAcctIndirectCostRcvyTypeCd() { return acctIndirectCostRcvyTypeCd; } /** * Sets the acctIndirectCostRcvyTypeCd attribute. * * @param acctIndirectCostRcvyTypeCd The acctIndirectCostRcvyTypeCd to set. */ @Override public void setAcctIndirectCostRcvyTypeCd(String acctIndirectCostRcvyTypeCd) { this.acctIndirectCostRcvyTypeCd = acctIndirectCostRcvyTypeCd; } /** * Gets the acctCustomIndCstRcvyExclCd attribute. * * @return Returns the acctCustomIndCstRcvyExclCd */ @Override public String getAcctCustomIndCstRcvyExclCd() { return acctCustomIndCstRcvyExclCd; } /** * Sets the acctCustomIndCstRcvyExclCd attribute. * * @param acctCustomIndCstRcvyExclCd The acctCustomIndCstRcvyExclCd to set. */ @Override public void setAcctCustomIndCstRcvyExclCd(String acctCustomIndCstRcvyExclCd) { this.acctCustomIndCstRcvyExclCd = acctCustomIndCstRcvyExclCd; } /** * Gets the financialIcrSeriesIdentifier attribute. * * @return Returns the financialIcrSeriesIdentifier */ @Override public String getFinancialIcrSeriesIdentifier() { return financialIcrSeriesIdentifier; } /** * Sets the financialIcrSeriesIdentifier attribute. * * @param financialIcrSeriesIdentifier The financialIcrSeriesIdentifier to set. */ @Override public void setFinancialIcrSeriesIdentifier(String financialIcrSeriesIdentifier) { this.financialIcrSeriesIdentifier = financialIcrSeriesIdentifier; } /** * Gets the accountInFinancialProcessingIndicator attribute. * * @return Returns the accountInFinancialProcessingIndicator */ @Override public boolean getAccountInFinancialProcessingIndicator() { return accountInFinancialProcessingIndicator; } /** * Sets the accountInFinancialProcessingIndicator attribute. * * @param accountInFinancialProcessingIndicator The accountInFinancialProcessingIndicator to set. */ @Override public void setAccountInFinancialProcessingIndicator(boolean accountInFinancialProcessingIndicator) { this.accountInFinancialProcessingIndicator = accountInFinancialProcessingIndicator; } /** * Gets the budgetRecordingLevelCode attribute. * * @return Returns the budgetRecordingLevelCode */ @Override public String getBudgetRecordingLevelCode() { return budgetRecordingLevelCode; } /** * Sets the budgetRecordingLevelCode attribute. * * @param budgetRecordingLevelCode The budgetRecordingLevelCode to set. */ @Override public void setBudgetRecordingLevelCode(String budgetRecordingLevelCode) { this.budgetRecordingLevelCode = budgetRecordingLevelCode; } /** * Gets the accountSufficientFundsCode attribute. * * @return Returns the accountSufficientFundsCode */ @Override public String getAccountSufficientFundsCode() { return accountSufficientFundsCode; } /** * Sets the accountSufficientFundsCode attribute. * * @param accountSufficientFundsCode The accountSufficientFundsCode to set. */ @Override public void setAccountSufficientFundsCode(String accountSufficientFundsCode) { this.accountSufficientFundsCode = accountSufficientFundsCode; } /** * Gets the pendingAcctSufficientFundsIndicator attribute. * * @return Returns the pendingAcctSufficientFundsIndicator */ @Override public boolean isPendingAcctSufficientFundsIndicator() { return pendingAcctSufficientFundsIndicator; } /** * Sets the pendingAcctSufficientFundsIndicator attribute. * * @param pendingAcctSufficientFundsIndicator The pendingAcctSufficientFundsIndicator to set. */ @Override public void setPendingAcctSufficientFundsIndicator(boolean pendingAcctSufficientFundsIndicator) { this.pendingAcctSufficientFundsIndicator = pendingAcctSufficientFundsIndicator; } /** * Gets the extrnlFinEncumSufficntFndIndicator attribute. * * @return Returns the extrnlFinEncumSufficntFndIndicator */ @Override public boolean isExtrnlFinEncumSufficntFndIndicator() { return extrnlFinEncumSufficntFndIndicator; } /** * Sets the extrnlFinEncumSufficntFndIndicator attribute. * * @param extrnlFinEncumSufficntFndIndicator The extrnlFinEncumSufficntFndIndicator to set. */ @Override public void setExtrnlFinEncumSufficntFndIndicator(boolean extrnlFinEncumSufficntFndIndicator) { this.extrnlFinEncumSufficntFndIndicator = extrnlFinEncumSufficntFndIndicator; } /** * Gets the intrnlFinEncumSufficntFndIndicator attribute. * * @return Returns the intrnlFinEncumSufficntFndIndicator */ @Override public boolean isIntrnlFinEncumSufficntFndIndicator() { return intrnlFinEncumSufficntFndIndicator; } /** * Sets the intrnlFinEncumSufficntFndIndicator attribute. * * @param intrnlFinEncumSufficntFndIndicator The intrnlFinEncumSufficntFndIndicator to set. */ @Override public void setIntrnlFinEncumSufficntFndIndicator(boolean intrnlFinEncumSufficntFndIndicator) { this.intrnlFinEncumSufficntFndIndicator = intrnlFinEncumSufficntFndIndicator; } /** * Gets the finPreencumSufficientFundIndicator attribute. * * @return Returns the finPreencumSufficientFundIndicator */ @Override public boolean isFinPreencumSufficientFundIndicator() { return finPreencumSufficientFundIndicator; } /** * Sets the finPreencumSufficientFundIndicator attribute. * * @param finPreencumSufficientFundIndicator The finPreencumSufficientFundIndicator to set. */ @Override public void setFinPreencumSufficientFundIndicator(boolean finPreencumSufficientFundIndicator) { this.finPreencumSufficientFundIndicator = finPreencumSufficientFundIndicator; } /** * Gets the _FinancialObjectivePrsctrlIndicator_ attribute. * * @return Returns the _FinancialObjectivePrsctrlIndicator_ */ @Override public boolean isFinancialObjectivePrsctrlIndicator() { return financialObjectivePrsctrlIndicator; } /** * Sets the _FinancialObjectivePrsctrlIndicator_ attribute. * * @param _FinancialObjectivePrsctrlIndicator_ The _FinancialObjectivePrsctrlIndicator_ to set. */ @Override public void setFinancialObjectivePrsctrlIndicator(boolean _FinancialObjectivePrsctrlIndicator_) { this.financialObjectivePrsctrlIndicator = _FinancialObjectivePrsctrlIndicator_; } /** * Gets the accountCfdaNumber attribute. * * @return Returns the accountCfdaNumber */ @Override public String getAccountCfdaNumber() { return accountCfdaNumber; } /** * Sets the accountCfdaNumber attribute. * * @param accountCfdaNumber The accountCfdaNumber to set. */ @Override public void setAccountCfdaNumber(String accountCfdaNumber) { this.accountCfdaNumber = accountCfdaNumber; } /** * Gets the related CFDA record for this account * * @return a CFDA record */ public ContractsAndGrantsCfda getCfda() { return cfda = SpringContext.getBean(KualiModuleService.class) .getResponsibleModuleService(ContractsAndGrantsCfda.class) .retrieveExternalizableBusinessObjectIfNecessary(this, cfda, "cfda"); } public List<ContractsAndGrantsAccountAwardInformation> getAwards() { // TODO this code totally breaks modularization but can't be fixed until data dictionary modularization plans come down the // pike awards = SpringContext.getBean(KualiModuleService.class) .getResponsibleModuleService(ContractsAndGrantsAccountAwardInformation.class) .retrieveExternalizableBusinessObjectsList(this, "awards", ContractsAndGrantsAccountAwardInformation.class); return awards; } public void setAwards(List awards) { this.awards = awards; } @Override public List<IndirectCostRecoveryAccount> getIndirectCostRecoveryAccounts() { return this.indirectCostRecoveryAccounts; } public List<IndirectCostRecoveryAccount> getActiveIndirectCostRecoveryAccounts() { List<IndirectCostRecoveryAccount> activeList = new ArrayList<IndirectCostRecoveryAccount>(); for (IndirectCostRecoveryAccount icr : getIndirectCostRecoveryAccounts()) { if (icr.isActive()) { activeList.add(IndirectCostRecoveryAccount.copyICRAccount(icr)); } } return activeList; } @Override public void setIndirectCostRecoveryAccounts( List<? extends IndirectCostRecoveryAccount> indirectCostRecoveryAccounts) { List<IndirectCostRecoveryAccount> accountIcrList = new ArrayList<IndirectCostRecoveryAccount>(); for (IndirectCostRecoveryAccount icr : indirectCostRecoveryAccounts) { accountIcrList.add(icr); } this.indirectCostRecoveryAccounts = accountIcrList; } /** * Gets the accountOffCampusIndicator attribute. * * @return Returns the accountOffCampusIndicator */ @Override public boolean isAccountOffCampusIndicator() { return accountOffCampusIndicator; } /** * Sets the accountOffCampusIndicator attribute. * * @param accountOffCampusIndicator The accountOffCampusIndicator to set. */ @Override public void setAccountOffCampusIndicator(boolean accountOffCampusIndicator) { this.accountOffCampusIndicator = accountOffCampusIndicator; } /** * Gets the active attribute. * * @return Returns the active */ @Override public boolean isActive() { return active; } /** * Sets the active attribute. * * @param active The active to set. */ @Override public void setActive(boolean active) { this.active = active; } /** * Returns whether this account is not active or not * * @return the opposite of isActive() */ @Override public boolean isClosed() { return !active; } /** * Sets the closed attribute. * * @param closed The closed to set. */ public void setClosed(boolean closed) { this.active = !closed; } /** * Gets the chartOfAccounts attribute. * * @return Returns the chartOfAccounts */ @Override public Chart getChartOfAccounts() { return chartOfAccounts; } /** * Sets the chartOfAccounts attribute. * * @param chartOfAccounts The chartOfAccounts to set. * @deprecated */ @Deprecated @Override public void setChartOfAccounts(Chart chartOfAccounts) { this.chartOfAccounts = chartOfAccounts; } /** * Gets the organization attribute. * * @return Returns the organization */ @Override public Organization getOrganization() { return organization; } /** * Sets the organization attribute. * * @param organization The organization to set. * @deprecated */ @Deprecated @Override public void setOrganization(Organization organization) { this.organization = organization; } /** * Gets the accountType attribute. * * @return Returns the accountType */ @Override public AccountType getAccountType() { return accountType; } /** * Sets the accountType attribute. * * @param accountType The accountType to set. * @deprecated */ @Deprecated @Override public void setAccountType(AccountType accountType) { this.accountType = accountType; } /** * Gets the accountPhysicalCampus attribute. * * @return Returns the accountPhysicalCampus */ @Override public CampusEbo getAccountPhysicalCampus() { if (StringUtils.isBlank(accountPhysicalCampusCode)) { accountPhysicalCampus = null; } else { if (accountPhysicalCampus == null || !StringUtils.equals(accountPhysicalCampus.getCode(), accountPhysicalCampusCode)) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class) .getResponsibleModuleService(CampusEbo.class); if (moduleService != null) { Map<String, Object> keys = new HashMap<String, Object>(1); keys.put(LocationConstants.PrimaryKeyConstants.CODE, accountPhysicalCampusCode); accountPhysicalCampus = moduleService.getExternalizableBusinessObject(CampusEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed."); } } } return accountPhysicalCampus; } /** * Sets the accountPhysicalCampus attribute. * * @param accountPhysicalCampus The accountPhysicalCampus to set. * @deprecated */ @Deprecated @Override public void setAccountPhysicalCampus(CampusEbo accountPhysicalCampus) { this.accountPhysicalCampus = accountPhysicalCampus; } /** * Gets the accountState attribute * * @return Returns the accountState */ @Override public StateEbo getAccountState() { if (StringUtils.isBlank(accountStateCode) || StringUtils.isBlank(accountCountryCode)) { accountState = null; } else { if (accountState == null || !StringUtils.equals(accountState.getCode(), accountStateCode) || !StringUtils.equals(accountState.getCountryCode(), accountCountryCode)) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class) .getResponsibleModuleService(StateEbo.class); if (moduleService != null) { Map<String, Object> keys = new HashMap<String, Object>(2); keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, accountCountryCode); keys.put(LocationConstants.PrimaryKeyConstants.CODE, accountStateCode); accountState = moduleService.getExternalizableBusinessObject(StateEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed."); } } } return accountState; } /** * Sets the accountState attribute * * @param state * @deprecated */ @Deprecated @Override public void setAccountState(StateEbo state) { this.accountState = state; } /** * Gets the subFundGroup attribute. * * @return Returns the subFundGroup */ @Override public SubFundGroup getSubFundGroup() { return subFundGroup; } /** * Sets the subFundGroup attribute. * * @param subFundGroup The subFundGroup to set. * @deprecated */ @Deprecated @Override public void setSubFundGroup(SubFundGroup subFundGroup) { this.subFundGroup = subFundGroup; } /** * Gets the financialHigherEdFunction attribute. * * @return Returns the financialHigherEdFunction */ @Override public HigherEducationFunction getFinancialHigherEdFunction() { return financialHigherEdFunction; } /** * Sets the financialHigherEdFunction attribute. * * @param financialHigherEdFunction The financialHigherEdFunction to set. * @deprecated */ @Deprecated @Override public void setFinancialHigherEdFunction(HigherEducationFunction financialHigherEdFunction) { this.financialHigherEdFunction = financialHigherEdFunction; } /** * Gets the accountRestrictedStatus attribute. * * @return Returns the accountRestrictedStatus */ @Override public RestrictedStatus getAccountRestrictedStatus() { return accountRestrictedStatus; } /** * Sets the accountRestrictedStatus attribute. * * @param accountRestrictedStatus The accountRestrictedStatus to set. * @deprecated */ @Deprecated @Override public void setAccountRestrictedStatus(RestrictedStatus accountRestrictedStatus) { this.accountRestrictedStatus = accountRestrictedStatus; } /** * Gets the reportsToAccount attribute. * * @return Returns the reportsToAccount */ @Override public Account getReportsToAccount() { return reportsToAccount; } /** * Sets the reportsToAccount attribute. * * @param reportsToAccount The reportsToAccount to set. * @deprecated */ @Deprecated @Override public void setReportsToAccount(Account reportsToAccount) { this.reportsToAccount = reportsToAccount; } /** * Gets the endowmentIncomeAccount attribute. * * @return Returns the endowmentIncomeAccount */ @Override public Account getEndowmentIncomeAccount() { return endowmentIncomeAccount; } /** * Sets the endowmentIncomeAccount attribute. * * @param endowmentIncomeAccount The endowmentIncomeAccount to set. * @deprecated */ @Deprecated @Override public void setEndowmentIncomeAccount(Account endowmentIncomeAccount) { this.endowmentIncomeAccount = endowmentIncomeAccount; } /** * Gets the contractControlAccount attribute. * * @return Returns the contractControlAccount */ @Override public Account getContractControlAccount() { return contractControlAccount; } /** * Sets the contractControlAccount attribute. * * @param contractControlAccount The contractControlAccount to set. * @deprecated */ @Deprecated @Override public void setContractControlAccount(Account contractControlAccount) { this.contractControlAccount = contractControlAccount; } /** * Gets the incomeStreamAccount attribute. * * @return Returns the incomeStreamAccount */ @Override public Account getIncomeStreamAccount() { return incomeStreamAccount; } /** * Sets the incomeStreamAccount attribute. * * @param incomeStreamAccount The incomeStreamAccount to set. * @deprecated */ @Deprecated @Override public void setIncomeStreamAccount(Account incomeStreamAccount) { this.incomeStreamAccount = incomeStreamAccount; } @Override public Person getAccountFiscalOfficerUser() { accountFiscalOfficerUser = SpringContext.getBean(org.kuali.rice.kim.api.identity.PersonService.class) .updatePersonIfNecessary(accountFiscalOfficerSystemIdentifier, accountFiscalOfficerUser); return accountFiscalOfficerUser; } /** * This fix is temporary until Jonathan's fix is reflected to Rice * @see org.kuali.rice.kns.bo.PersistableBusinessObjectBase#refreshReferenceObject(java.lang.String) */ @Override public void refreshReferenceObject(String referenceObjectName) { if (referenceObjectName.equals("accountFiscalOfficerUser") || referenceObjectName.equals("accountSupervisoryUser") || referenceObjectName.equals("accountManagerUser")) { // do nothing } else { super.refreshReferenceObject(referenceObjectName); } } /** * @param accountFiscalOfficerUser The accountFiscalOfficerUser to set. * @deprecated */ @Deprecated @Override public void setAccountFiscalOfficerUser(Person accountFiscalOfficerUser) { this.accountFiscalOfficerUser = accountFiscalOfficerUser; } @Override public Person getAccountManagerUser() { accountManagerUser = SpringContext.getBean(org.kuali.rice.kim.api.identity.PersonService.class) .updatePersonIfNecessary(accountManagerSystemIdentifier, accountManagerUser); return accountManagerUser; } /** * @param accountManagerUser The accountManagerUser to set. * @deprecated */ @Deprecated @Override public void setAccountManagerUser(Person accountManagerUser) { this.accountManagerUser = accountManagerUser; } @Override public Person getAccountSupervisoryUser() { accountSupervisoryUser = SpringContext.getBean(org.kuali.rice.kim.api.identity.PersonService.class) .updatePersonIfNecessary(accountsSupervisorySystemsIdentifier, accountSupervisoryUser); return accountSupervisoryUser; } /** * @param accountSupervisoryUser The accountSupervisoryUser to set. * @deprecated */ @Deprecated @Override public void setAccountSupervisoryUser(Person accountSupervisoryUser) { this.accountSupervisoryUser = accountSupervisoryUser; } /** * @return Returns the continuationAccount. */ @Override public Account getContinuationAccount() { return continuationAccount; } /** * @param continuationAccount The continuationAccount to set. * @deprecated */ @Deprecated @Override public void setContinuationAccount(Account continuationAccount) { this.continuationAccount = continuationAccount; } /** * @return Returns the accountGuideline. */ @Override public AccountGuideline getAccountGuideline() { return accountGuideline; } /** * @param accountGuideline The accountGuideline to set. */ @Override public void setAccountGuideline(AccountGuideline accountGuideline) { this.accountGuideline = accountGuideline; } /** * Gets the accountDescription attribute. * * @return Returns the accountDescription. */ @Override public AccountDescription getAccountDescription() { return accountDescription; } /** * Sets the accountDescription attribute value. * * @param accountDescription The accountDescription to set. */ @Override public void setAccountDescription(AccountDescription accountDescription) { this.accountDescription = accountDescription; } /** * @return Returns the subAccounts. */ @Override public List getSubAccounts() { return subAccounts; } /** * @param subAccounts The subAccounts to set. */ @Override public void setSubAccounts(List subAccounts) { this.subAccounts = subAccounts; } /** * @return Returns the chartOfAccountsCode. */ @Override public String getChartOfAccountsCode() { return chartOfAccountsCode; } /** * @param chartOfAccountsCode The chartOfAccountsCode to set. */ @Override public void setChartOfAccountsCode(String chartOfAccountsCode) { this.chartOfAccountsCode = chartOfAccountsCode; } /** * @return Returns the accountFiscalOfficerSystemIdentifier. */ @Override public String getAccountFiscalOfficerSystemIdentifier() { return accountFiscalOfficerSystemIdentifier; } /** * @return Returns the accountFiscalOfficerSystemIdentifier. */ public String getAccountFiscalOfficerSystemIdentifierForSearching() { return getAccountFiscalOfficerSystemIdentifier(); } /** * @param accountFiscalOfficerSystemIdentifier The accountFiscalOfficerSystemIdentifier to set. */ @Override public void setAccountFiscalOfficerSystemIdentifier(String accountFiscalOfficerSystemIdentifier) { this.accountFiscalOfficerSystemIdentifier = accountFiscalOfficerSystemIdentifier; } /** * @return Returns the accountManagerSystemIdentifier. */ @Override public String getAccountManagerSystemIdentifier() { return accountManagerSystemIdentifier; } /** * @return Returns the accountManagerSystemIdentifier. */ public String getAccountManagerSystemIdentifierForSearching() { return getAccountManagerSystemIdentifier(); } /** * @param accountManagerSystemIdentifier The accountManagerSystemIdentifier to set. */ @Override public void setAccountManagerSystemIdentifier(String accountManagerSystemIdentifier) { this.accountManagerSystemIdentifier = accountManagerSystemIdentifier; } /** * @return Returns the accountPhysicalCampusCode. */ @Override public String getAccountPhysicalCampusCode() { return accountPhysicalCampusCode; } /** * @param accountPhysicalCampusCode The accountPhysicalCampusCode to set. */ @Override public void setAccountPhysicalCampusCode(String accountPhysicalCampusCode) { this.accountPhysicalCampusCode = accountPhysicalCampusCode; } /** * @return Returns the accountRestrictedStatusCode. */ @Override public String getAccountRestrictedStatusCode() { return accountRestrictedStatusCode; } /** * @param accountRestrictedStatusCode The accountRestrictedStatusCode to set. */ @Override public void setAccountRestrictedStatusCode(String accountRestrictedStatusCode) { this.accountRestrictedStatusCode = accountRestrictedStatusCode; } /** * @return Returns the accountsSupervisorySystemsIdentifier. */ @Override public String getAccountsSupervisorySystemsIdentifier() { return accountsSupervisorySystemsIdentifier; } /** * @return Returns the accountsSupervisorySystemsIdentifier. */ public String getAccountsSupervisorySystemsIdentifierForSearching() { return accountsSupervisorySystemsIdentifier; } /** * @param accountsSupervisorySystemsIdentifier The accountsSupervisorySystemsIdentifier to set. */ @Override public void setAccountsSupervisorySystemsIdentifier(String accountsSupervisorySystemsIdentifier) { this.accountsSupervisorySystemsIdentifier = accountsSupervisorySystemsIdentifier; } /** * @return Returns the accountTypeCode. */ @Override public String getAccountTypeCode() { return accountTypeCode; } /** * @param accountTypeCode The accountTypeCode to set. */ @Override public void setAccountTypeCode(String accountTypeCode) { this.accountTypeCode = accountTypeCode; } /** * @return Returns the continuationAccountNumber. */ @Override public String getContinuationAccountNumber() { return continuationAccountNumber; } /** * @param continuationAccountNumber The continuationAccountNumber to set. */ @Override public void setContinuationAccountNumber(String continuationAccountNumber) { this.continuationAccountNumber = continuationAccountNumber; } /** * @return Returns the continuationFinChrtOfAcctCd. */ @Override public String getContinuationFinChrtOfAcctCd() { return continuationFinChrtOfAcctCd; } /** * @param continuationFinChrtOfAcctCd The continuationFinChrtOfAcctCd to set. */ @Override public void setContinuationFinChrtOfAcctCd(String continuationFinChrtOfAcctCd) { this.continuationFinChrtOfAcctCd = continuationFinChrtOfAcctCd; } /** * @return Returns the contractControlAccountNumber. */ @Override public String getContractControlAccountNumber() { return contractControlAccountNumber; } /** * @param contractControlAccountNumber The contractControlAccountNumber to set. */ @Override public void setContractControlAccountNumber(String contractControlAccountNumber) { this.contractControlAccountNumber = contractControlAccountNumber; } /** * @return Returns the contractControlFinCoaCode. */ @Override public String getContractControlFinCoaCode() { return contractControlFinCoaCode; } /** * @param contractControlFinCoaCode The contractControlFinCoaCode to set. */ @Override public void setContractControlFinCoaCode(String contractControlFinCoaCode) { this.contractControlFinCoaCode = contractControlFinCoaCode; } /** * @return Returns the endowmentIncomeAccountNumber. */ @Override public String getEndowmentIncomeAccountNumber() { return endowmentIncomeAccountNumber; } /** * @param endowmentIncomeAccountNumber The endowmentIncomeAccountNumber to set. */ @Override public void setEndowmentIncomeAccountNumber(String endowmentIncomeAccountNumber) { this.endowmentIncomeAccountNumber = endowmentIncomeAccountNumber; } /** * @return Returns the endowmentIncomeAcctFinCoaCd. */ @Override public String getEndowmentIncomeAcctFinCoaCd() { return endowmentIncomeAcctFinCoaCd; } /** * @param endowmentIncomeAcctFinCoaCd The endowmentIncomeAcctFinCoaCd to set. */ @Override public void setEndowmentIncomeAcctFinCoaCd(String endowmentIncomeAcctFinCoaCd) { this.endowmentIncomeAcctFinCoaCd = endowmentIncomeAcctFinCoaCd; } /** * @return Returns the financialHigherEdFunctionCd. */ @Override public String getFinancialHigherEdFunctionCd() { return financialHigherEdFunctionCd; } /** * @param financialHigherEdFunctionCd The financialHigherEdFunctionCd to set. */ @Override public void setFinancialHigherEdFunctionCd(String financialHigherEdFunctionCd) { this.financialHigherEdFunctionCd = financialHigherEdFunctionCd; } /** * @return Returns the incomeStreamAccountNumber. */ @Override public String getIncomeStreamAccountNumber() { return incomeStreamAccountNumber; } /** * @param incomeStreamAccountNumber The incomeStreamAccountNumber to set. */ @Override public void setIncomeStreamAccountNumber(String incomeStreamAccountNumber) { this.incomeStreamAccountNumber = incomeStreamAccountNumber; } /** * @return Returns the incomeStreamFinancialCoaCode. */ @Override public String getIncomeStreamFinancialCoaCode() { return incomeStreamFinancialCoaCode; } /** * @param incomeStreamFinancialCoaCode The incomeStreamFinancialCoaCode to set. */ @Override public void setIncomeStreamFinancialCoaCode(String incomeStreamFinancialCoaCode) { this.incomeStreamFinancialCoaCode = incomeStreamFinancialCoaCode; } /** * @return Returns the organizationCode. */ @Override public String getOrganizationCode() { return organizationCode; } /** * @param organizationCode The organizationCode to set. */ @Override public void setOrganizationCode(String organizationCode) { this.organizationCode = organizationCode; } /** * @return Returns the reportsToAccountNumber. */ @Override public String getReportsToAccountNumber() { return reportsToAccountNumber; } /** * @param reportsToAccountNumber The reportsToAccountNumber to set. */ @Override public void setReportsToAccountNumber(String reportsToAccountNumber) { this.reportsToAccountNumber = reportsToAccountNumber; } /** * @return Returns the reportsToChartOfAccountsCode. */ @Override public String getReportsToChartOfAccountsCode() { return reportsToChartOfAccountsCode; } /** * @param reportsToChartOfAccountsCode The reportsToChartOfAccountsCode to set. */ @Override public void setReportsToChartOfAccountsCode(String reportsToChartOfAccountsCode) { this.reportsToChartOfAccountsCode = reportsToChartOfAccountsCode; } /** * @return Returns the subFundGroupCode. */ @Override public String getSubFundGroupCode() { return subFundGroupCode; } /** * @param subFundGroupCode The subFundGroupCode to set. */ @Override public void setSubFundGroupCode(String subFundGroupCode) { this.subFundGroupCode = subFundGroupCode; forContractsAndGrants = null; } /** * Gets the postalZipCode attribute. * * @return Returns the postalZipCode. */ @Override public PostalCodeEbo getPostalZipCode() { if (StringUtils.isBlank(accountZipCode) || StringUtils.isBlank(accountCountryCode)) { postalZipCode = null; } else { if (postalZipCode == null || !StringUtils.equals(postalZipCode.getCode(), accountZipCode) || !StringUtils.equals(postalZipCode.getCountryCode(), accountCountryCode)) { ModuleService moduleService = SpringContext.getBean(KualiModuleService.class) .getResponsibleModuleService(PostalCodeEbo.class); if (moduleService != null) { Map<String, Object> keys = new HashMap<String, Object>(2); keys.put(LocationConstants.PrimaryKeyConstants.COUNTRY_CODE, accountCountryCode); keys.put(LocationConstants.PrimaryKeyConstants.CODE, accountZipCode); postalZipCode = moduleService.getExternalizableBusinessObject(PostalCodeEbo.class, keys); } else { throw new RuntimeException( "CONFIGURATION ERROR: No responsible module found for EBO class. Unable to proceed."); } } } return postalZipCode; } /** * Sets the postalZipCode attribute value. * * @param postalZipCode The postalZipCode to set. */ @Override public void setPostalZipCode(PostalCodeEbo postalZipCode) { this.postalZipCode = postalZipCode; } /** * Gets the budgetRecordingLevel attribute. * * @return Returns the budgetRecordingLevel. */ @Override public BudgetRecordingLevel getBudgetRecordingLevel() { return budgetRecordingLevel; } /** * Sets the budgetRecordingLevel attribute value. * * @param budgetRecordingLevel The budgetRecordingLevel to set. */ @Override public void setBudgetRecordingLevel(BudgetRecordingLevel budgetRecordingLevel) { this.budgetRecordingLevel = budgetRecordingLevel; } /** * Gets the sufficientFundsCode attribute. * * @return Returns the sufficientFundsCode. */ @Override public SufficientFundsCode getSufficientFundsCode() { return sufficientFundsCode; } /** * Sets the sufficientFundsCode attribute value. * * @param sufficientFundsCode The sufficientFundsCode to set. */ @Override public void setSufficientFundsCode(SufficientFundsCode sufficientFundsCode) { this.sufficientFundsCode = sufficientFundsCode; } /** * Gets the acctIndirectCostRcvyType attribute. * * @return Returns the acctIndirectCostRcvyType. */ public IndirectCostRecoveryType getAcctIndirectCostRcvyType() { return acctIndirectCostRcvyType; } /** * Sets the acctIndirectCostRcvyType attribute value. * * @param acctIndirectCostRcvyType The acctIndirectCostRcvyType to set. */ public void setAcctIndirectCostRcvyType(IndirectCostRecoveryType acctIndirectCostRcvyType) { this.acctIndirectCostRcvyType = acctIndirectCostRcvyType; } /** * Implementing equals since I need contains to behave reasonably in a hashed datastructure. * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { boolean equal = false; if (obj != null) { if (this.getClass().equals(obj.getClass())) { Account other = (Account) obj; if (StringUtils.equals(this.getChartOfAccountsCode(), other.getChartOfAccountsCode())) { if (StringUtils.equals(this.getAccountNumber(), other.getAccountNumber())) { equal = true; } } } } return equal; } /** * Calcluates hashCode based on current values of chartOfAccountsCode and accountNumber fields. Somewhat dangerous, since both * of those fields are mutable, but I don't expect people to be editing those values directly for Accounts stored in hashed * datastructures. * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { String hashString = getChartOfAccountsCode() + "|" + getAccountNumber(); return hashString.hashCode(); } /** * Convenience method to make the primitive account fields from this Account easier to compare to the account fields from * another Account or an AccountingLine * * @return String representing the account associated with this Accounting */ @Override public String getAccountKey() { String key = getChartOfAccountsCode() + ":" + getAccountNumber(); return key; } /** * Gets the dummy attribute. * * @return Returns the dummy. */ /** * Gets the accountResponsibilitySection attribute. * * @return Returns the accountResponsibilitySection. */ @Override public String getAccountResponsibilitySection() { return accountResponsibilitySection; } /** * Sets the accountResponsibilitySection attribute value. * * @param accountResponsibilitySection The accountResponsibilitySection to set. */ @Override public void setAccountResponsibilitySection(String accountResponsibilitySection) { this.accountResponsibilitySection = accountResponsibilitySection; } /** * Gets the contractsAndGrantsSection attribute. * * @return Returns the contractsAndGrantsSection. */ @Override public String getContractsAndGrantsSection() { return contractsAndGrantsSection; } /** * Sets the contractsAndGrantsSection attribute value. * * @param contractsAndGrantsSection The contractsAndGrantsSection to set. */ @Override public void setContractsAndGrantsSection(String contractsAndGrantsSection) { this.contractsAndGrantsSection = contractsAndGrantsSection; } /** * Gets the accountDescriptionSection attribute. * * @return Returns the accountDescriptionSection. */ @Override public String getAccountDescriptionSection() { return accountDescriptionSection; } /** * Sets the accountDescriptionSection attribute value. * * @param accountDescriptionSection The accountDescriptionSection to set. */ @Override public void setAccountDescriptionSection(String accountDescriptionSection) { this.accountDescriptionSection = accountDescriptionSection; } /** * Gets the guidelinesAndPurposeSection attribute. * * @return Returns the guidelinesAndPurposeSection. */ @Override public String getGuidelinesAndPurposeSection() { return guidelinesAndPurposeSection; } /** * Sets the guidelinesAndPurposeSection attribute value. * * @param guidelinesAndPurposeSection The guidelinesAndPurposeSection to set. */ @Override public void setGuidelinesAndPurposeSection(String guidelinesAndPurposeSection) { this.guidelinesAndPurposeSection = guidelinesAndPurposeSection; } /** * Gets the accountResponsibilitySectionBlank attribute. * * @return Returns the accountResponsibilitySectionBlank. */ @Override public String getAccountResponsibilitySectionBlank() { return accountResponsibilitySectionBlank; } /** * Gets the contractsAndGrantsSectionBlank attribute. * * @return Returns the contractsAndGrantsSectionBlank. */ @Override public String getContractsAndGrantsSectionBlank() { return contractsAndGrantsSectionBlank; } /** * Gets the accountDescriptionSectionBlank attribute. * * @return Returns the accountDescriptionSectionBlank. */ @Override public String getAccountDescriptionSectionBlank() { return accountDescriptionSectionBlank; } /** * Gets the guidelinesAndPurposeSectionBlank attribute. * * @return Returns the guidelinesAndPurposeSectionBlank. */ @Override public String getGuidelinesAndPurposeSectionBlank() { return guidelinesAndPurposeSectionBlank; } /** * Gets the endowmentIncomeChartOfAccounts attribute. * * @return Returns the endowmentIncomeChartOfAccounts. */ public Chart getEndowmentIncomeChartOfAccounts() { return endowmentIncomeChartOfAccounts; } /** * Sets the endowmentIncomeChartOfAccounts attribute value. * * @param endowmentIncomeChartOfAccounts The endowmentIncomeChartOfAccounts to set. */ public void setEndowmentIncomeChartOfAccounts(Chart endowmentIncomeChartOfAccounts) { this.endowmentIncomeChartOfAccounts = endowmentIncomeChartOfAccounts; } @Override protected void preUpdate() { super.preUpdate(); try { // KULCOA-549: update the sufficient funds table // get the current data from the database BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class); Account originalAcct = (Account) boService.retrieve(this); if (originalAcct != null) { if (!originalAcct.getSufficientFundsCode().equals(getSufficientFundsCode()) || originalAcct .isExtrnlFinEncumSufficntFndIndicator() != isExtrnlFinEncumSufficntFndIndicator() || originalAcct .isIntrnlFinEncumSufficntFndIndicator() != isIntrnlFinEncumSufficntFndIndicator() || originalAcct .isPendingAcctSufficientFundsIndicator() != isPendingAcctSufficientFundsIndicator() || originalAcct .isFinPreencumSufficientFundIndicator() != isFinPreencumSufficientFundIndicator()) { SufficientFundRebuild sfr = new SufficientFundRebuild(); sfr.setAccountFinancialObjectTypeCode(SufficientFundRebuild.REBUILD_ACCOUNT); sfr.setChartOfAccountsCode(getChartOfAccountsCode()); sfr.setAccountNumberFinancialObjectCode(getAccountNumber()); if (boService.retrieve(sfr) == null) { boService.save(sfr); } } } } catch (Exception ex) { LOG.error("Problem updating sufficient funds rebuild table: ", ex); } } /** * Gets the forContractsAndGrants attribute. * * @return Returns the forContractsAndGrants. */ @Override public boolean isForContractsAndGrants() { if (forContractsAndGrants == null) { forContractsAndGrants = SpringContext.getBean(SubFundGroupService.class) .isForContractsAndGrants(getSubFundGroup()); } return forContractsAndGrants; } /** * determine if the given account is awarded by a federal agency * * @param account the given account * @param federalAgencyTypeCodes the given federal agency type code * @return true if the given account is funded by a federal agency or associated with federal pass through indicator; otherwise, * false */ public boolean isAwardedByFederalAgency(List<String> federalAgencyTypeCodes) { return SpringContext.getBean(ContractsAndGrantsModuleService.class) .isAwardedByFederalAgency(getChartOfAccountsCode(), getAccountNumber(), federalAgencyTypeCodes); } /** * Gets the contractsAndGrantsAccountResponsibilityId attribute. * * @return Returns the contractsAndGrantsAccountResponsibilityId. */ public Integer getContractsAndGrantsAccountResponsibilityId() { return contractsAndGrantsAccountResponsibilityId; } /** * Sets the contractsAndGrantsAccountResponsibilityId attribute value. * * @param contractsAndGrantsAccountResponsibilityId The contractsAndGrantsAccountResponsibilityId to set. */ public void setContractsAndGrantsAccountResponsibilityId(Integer contractsAndGrantsAccountResponsibilityId) { this.contractsAndGrantsAccountResponsibilityId = contractsAndGrantsAccountResponsibilityId; } /** * Gets the laborBenefitRateCategoryCode attribute. * @return Returns the laborBenefitRateCategoryCode. */ public String getLaborBenefitRateCategoryCode() { return laborBenefitRateCategoryCode; } /** * Sets the laborBenefitRateCategoryCode attribute value. * @param laborBenefitRateCategoryCode The laborBenefitRateCategoryCode to set. */ public void setLaborBenefitRateCategoryCode(String laborBenefitRateCategoryCode) { this.laborBenefitRateCategoryCode = laborBenefitRateCategoryCode; } /** * Gets the laborBenefitRateCategory attribute. * @return Returns the laborBenefitRateCategory. */ public LaborBenefitRateCategory getLaborBenefitRateCategory() { laborBenefitRateCategory = SpringContext.getBean(KualiModuleService.class) .getResponsibleModuleService(LaborBenefitRateCategory.class) .retrieveExternalizableBusinessObjectIfNecessary(this, laborBenefitRateCategory, "laborBenefitRateCategory"); return laborBenefitRateCategory; } /** * Sets the laborBenefitRateCategory attribute value. * @param laborBenefitRateCategory The laborBenefitRateCategory to set. */ public void setLaborBenefitRateCategory(LaborBenefitRateCategory laborBenefitRateCategory) { this.laborBenefitRateCategory = laborBenefitRateCategory; } /** * Gets the fringeBenefitsChartOfAccount attribute. * * @return Returns the fringeBenefitsChartOfAccount. */ public Chart getFringeBenefitsChartOfAccount() { return fringeBenefitsChartOfAccount; } /** * Sets the fringeBenefitsChartOfAccount attribute value. * * @param fringeBenefitsChartOfAccount The fringeBenefitsChartOfAccount to set. */ public void setFringeBenefitsChartOfAccount(Chart fringeBenefitsChartOfAccount) { this.fringeBenefitsChartOfAccount = fringeBenefitsChartOfAccount; } /** * Gets the continuationChartOfAccount attribute. * * @return Returns the continuationChartOfAccount. */ public Chart getContinuationChartOfAccount() { return continuationChartOfAccount; } /** * Sets the continuationChartOfAccount attribute value. * * @param continuationChartOfAccount The continuationChartOfAccount to set. */ public void setContinuationChartOfAccount(Chart continuationChartOfAccount) { this.continuationChartOfAccount = continuationChartOfAccount; } /** * Gets the incomeStreamChartOfAccounts attribute. * * @return Returns the incomeStreamChartOfAccounts. */ public Chart getIncomeStreamChartOfAccounts() { return incomeStreamChartOfAccounts; } /** * Sets the incomeStreamChartOfAccounts attribute value. * * @param incomeStreamChartOfAccounts The incomeStreamChartOfAccounts to set. */ public void setIncomeStreamChartOfAccounts(Chart incomeStreamChartOfAccounts) { this.incomeStreamChartOfAccounts = incomeStreamChartOfAccounts; } /** * Gets the incomeStreamChartOfAccounts attribute. * * @return Returns the incomeStreamChartOfAccounts. */ public Chart getContractControlChartOfAccounts() { return contractControlChartOfAccounts; } /** * Sets the contractControlChartOfAccounts attribute value. * * @param contractControlChartOfAccounts The contractControlChartOfAccounts to set. */ public void setContractControlChartOfAccounts(Chart contractControlChartOfAccounts) { this.contractControlChartOfAccounts = contractControlChartOfAccounts; } /** * Gets the indirectCostRcvyChartOfAccounts attribute. * * @return Returns the indirectCostRcvyChartOfAccounts. */ @Override public List<Collection<PersistableBusinessObject>> buildListOfDeletionAwareLists() { List<Collection<PersistableBusinessObject>> managedLists = super.buildListOfDeletionAwareLists(); managedLists.add(new ArrayList<PersistableBusinessObject>(getIndirectCostRecoveryAccounts())); return managedLists; } public String getAccountCountryCode() { return accountCountryCode; } public void setAccountCountryCode(String accountCountryCode) { this.accountCountryCode = accountCountryCode; } }