/* * 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.module.bc.document; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.ListIterator; import java.util.Map; import org.kuali.kfs.coa.businessobject.Account; import org.kuali.kfs.coa.businessobject.Chart; import org.kuali.kfs.coa.businessobject.Organization; import org.kuali.kfs.coa.businessobject.SubAccount; import org.kuali.kfs.coa.service.AccountService; import org.kuali.kfs.module.bc.BCConstants; import org.kuali.kfs.module.bc.BCConstants.AccountSalarySettingOnlyCause; import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAccountReports; import org.kuali.kfs.module.bc.businessobject.PendingBudgetConstructionGeneralLedger; import org.kuali.kfs.module.bc.document.service.BudgetParameterService; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.sys.document.FinancialSystemTransactionalDocumentBase; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.core.api.util.type.KualiInteger; import org.kuali.rice.kew.framework.postprocessor.DocumentRouteStatusChange; import org.kuali.rice.kim.api.identity.Person; import org.kuali.rice.krad.service.BusinessObjectService; import org.kuali.rice.krad.util.ObjectUtils; public class BudgetConstructionDocument extends FinancialSystemTransactionalDocumentBase { protected static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BudgetConstructionDocument.class); protected Integer universityFiscalYear; protected String chartOfAccountsCode; protected String accountNumber; protected String subAccountNumber; protected Integer organizationLevelCode; protected String organizationLevelChartOfAccountsCode; protected String organizationLevelOrganizationCode; protected String budgetLockUserIdentifier; protected String budgetTransactionLockUserIdentifier; protected Chart chartOfAccounts; protected Account account; protected SubAccount subAccount; protected Person budgetLockUser; protected Person budgetTransactionLockUser; protected Organization organizationLevelOrganization; protected BudgetConstructionAccountReports budgetConstructionAccountReports; protected List pendingBudgetConstructionGeneralLedgerRevenueLines; protected List pendingBudgetConstructionGeneralLedgerExpenditureLines; protected Integer previousUniversityFiscalYear; // revenue and expenditure line totals protected KualiInteger revenueAccountLineAnnualBalanceAmountTotal; protected KualiInteger revenueFinancialBeginningBalanceLineAmountTotal; protected KualiDecimal revenuePercentChangeTotal; protected KualiInteger expenditureAccountLineAnnualBalanceAmountTotal; protected KualiInteger expenditureFinancialBeginningBalanceLineAmountTotal; protected KualiDecimal expenditurePercentChangeTotal; // benefits calculation state flags // these are set when a change is detected in the request and the line // is involved in the benefits calculation - ie exists in protected boolean isBenefitsCalcNeeded; protected boolean isMonthlyBenefitsCalcNeeded; protected boolean isSalarySettingOnly; protected AccountSalarySettingOnlyCause accountSalarySettingOnlyCause; protected boolean containsTwoPlug = false; protected boolean budgetableDocument = false; // This property supports a hack to indicate to the rules framework // the user is performing an action (save) that forces rules check on nonZero request amounts // while still allowing the user to do salary setting cleanup when a document becomes not budgetable protected boolean cleanupModeActionForceCheck = false; public BudgetConstructionDocument() { super(); // setPendingBudgetConstructionGeneralLedgerExpenditureLines(new ArrayList()); // setPendingBudgetConstructionGeneralLedgerRevenueLines(new ArrayList()); setPendingBudgetConstructionGeneralLedgerExpenditureLines(new ArrayList<PendingBudgetConstructionGeneralLedger>()); setPendingBudgetConstructionGeneralLedgerRevenueLines(new ArrayList<PendingBudgetConstructionGeneralLedger>()); zeroTotals(); } /** * This zeros revenue and expenditure totals displayed on the BC document screen */ public void zeroTotals() { revenueAccountLineAnnualBalanceAmountTotal = new KualiInteger(BigDecimal.ZERO); revenueFinancialBeginningBalanceLineAmountTotal = new KualiInteger(BigDecimal.ZERO); revenuePercentChangeTotal = new KualiDecimal(0); expenditureAccountLineAnnualBalanceAmountTotal = new KualiInteger(BigDecimal.ZERO); expenditureFinancialBeginningBalanceLineAmountTotal = new KualiInteger(BigDecimal.ZERO); expenditurePercentChangeTotal = new KualiDecimal(0); } /** * move stuff from constructor to here so as to get out of fred's way initiateDocument would be called from * BudgetConstructionAction */ public void initiateDocument() { Map fieldValues = new HashMap(); // fieldValues.put("UNIV_FISCAL_YR", new Integer(2008)); // fieldValues.put("FIN_COA_CD", "BA"); // fieldValues.put("ACCOUNT_NBR", "6044906"); // fieldValues.put("SUB_ACCT_NBR", "-----"); // fieldValues.put("UNIV_FISCAL_YR", budgetConstructionHeader.getUniversityFiscalYear()); // fieldValues.put("FIN_COA_CD", budgetConstructionHeader.getChartOfAccountsCode()); // fieldValues.put("ACCOUNT_NBR", budgetConstructionHeader.getAccountNumber()); // fieldValues.put("SUB_ACCT_NBR", budgetConstructionHeader.getSubAccountNumber()); fieldValues.put("UNIV_FISCAL_YR", getUniversityFiscalYear()); fieldValues.put("FIN_COA_CD", getChartOfAccountsCode()); fieldValues.put("ACCOUNT_NBR", getAccountNumber()); fieldValues.put("SUB_ACCT_NBR", getSubAccountNumber()); // this needs to do query FIN_OBJ_TYP_CD IN ('IN','IC','IN') or equivalent fieldValues.put("FIN_OBJ_TYP_CD", "IN"); pendingBudgetConstructionGeneralLedgerRevenueLines = (ArrayList) SpringContext.getBean(BusinessObjectService.class).findMatchingOrderBy(PendingBudgetConstructionGeneralLedger.class, fieldValues, "FIN_OBJECT_CD", true); if (LOG.isDebugEnabled()) { LOG.debug("pendingBudgetConstructionGeneralLedgerRevenue is: " + pendingBudgetConstructionGeneralLedgerRevenueLines); } // this needs to do query FIN_OBJ_TYP_CD IN ('EE','ES','EX') or equivalent fieldValues.remove("FIN_OBJ_TYP_CD"); fieldValues.put("FIN_OBJ_TYP_CD", "EX"); pendingBudgetConstructionGeneralLedgerExpenditureLines = (ArrayList) SpringContext.getBean(BusinessObjectService.class).findMatchingOrderBy(PendingBudgetConstructionGeneralLedger.class, fieldValues, "FIN_OBJECT_CD", true); if (LOG.isDebugEnabled()) { LOG.debug("pendingBudgetConstructionGeneralLedgerExpenditure is: " + pendingBudgetConstructionGeneralLedgerExpenditureLines); } // Iterator<PendingBudgetConstructionGeneralLedger> iter = // pendingBudgetConstructionGeneralLedgerExpenditureLines.iterator(); // while (iter.hasNext()){ // iter.next().refreshReferenceObject("budgetConstructionMonthly"); // } } /** * This adds a revenue or expenditure line to the appropriate list * * @param isRevenue * @param line */ public int addPBGLLine(PendingBudgetConstructionGeneralLedger line, boolean isRevenue) { int insertPoint = 0; ListIterator pbglLines; if (isRevenue) { pbglLines = this.getPendingBudgetConstructionGeneralLedgerRevenueLines().listIterator(); } else { pbglLines = this.getPendingBudgetConstructionGeneralLedgerExpenditureLines().listIterator(); } while (pbglLines.hasNext()) { PendingBudgetConstructionGeneralLedger pbglLine = (PendingBudgetConstructionGeneralLedger) pbglLines.next(); if (pbglLine.getFinancialObjectCode().compareToIgnoreCase(line.getFinancialObjectCode()) < 0) { insertPoint++; } else { if (pbglLine.getFinancialObjectCode().compareToIgnoreCase(line.getFinancialObjectCode()) > 0) { break; } else { if ((pbglLine.getFinancialObjectCode().compareToIgnoreCase(line.getFinancialObjectCode()) == 0) && (pbglLine.getFinancialSubObjectCode().compareToIgnoreCase(line.getFinancialSubObjectCode()) < 0)) { insertPoint++; } else { break; } } } } if (isRevenue) { this.pendingBudgetConstructionGeneralLedgerRevenueLines.add(insertPoint, line); } else { this.pendingBudgetConstructionGeneralLedgerExpenditureLines.add(insertPoint, line); } return insertPoint; } /** * Gets the universityFiscalYear attribute. * * @return Returns the universityFiscalYear */ public Integer getUniversityFiscalYear() { return universityFiscalYear; } /** * Sets the universityFiscalYear attribute. * * @param universityFiscalYear The universityFiscalYear to set. */ public void setUniversityFiscalYear(Integer universityFiscalYear) { this.universityFiscalYear = universityFiscalYear; setPreviousUniversityFiscalYear(universityFiscalYear - 1); } /** * Gets the chartOfAccountsCode attribute. * * @return Returns the chartOfAccountsCode */ public String getChartOfAccountsCode() { return chartOfAccountsCode; } /** * Sets the chartOfAccountsCode attribute. * * @param chartOfAccountsCode The chartOfAccountsCode to set. */ public void setChartOfAccountsCode(String chartOfAccountsCode) { this.chartOfAccountsCode = chartOfAccountsCode; } /** * Gets the accountNumber attribute. * * @return Returns the accountNumber */ public String getAccountNumber() { return accountNumber; } /** * Sets the accountNumber attribute. * * @param accountNumber The accountNumber to set. */ public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; // if accounts can't cross charts, set chart code whenever account number is set AccountService accountService = SpringContext.getBean(AccountService.class); if (!accountService.accountsCanCrossCharts()) { Account account = accountService.getUniqueAccountForAccountNumber(accountNumber); if (ObjectUtils.isNotNull(account)) { setChartOfAccountsCode(account.getChartOfAccountsCode()); } } } /** * Gets the subAccountNumber attribute. * * @return Returns the subAccountNumber */ public String getSubAccountNumber() { return subAccountNumber; } /** * Sets the subAccountNumber attribute. * * @param subAccountNumber The subAccountNumber to set. */ public void setSubAccountNumber(String subAccountNumber) { this.subAccountNumber = subAccountNumber; } /** * Gets the organizationLevelCode attribute. * * @return Returns the organizationLevelCode */ public Integer getOrganizationLevelCode() { return organizationLevelCode; } /** * Sets the organizationLevelCode attribute. * * @param organizationLevelCode The organizationLevelCode to set. */ public void setOrganizationLevelCode(Integer organizationLevelCode) { this.organizationLevelCode = organizationLevelCode; } /** * Gets the organizationLevelChartOfAccountsCode attribute. * * @return Returns the organizationLevelChartOfAccountsCode */ public String getOrganizationLevelChartOfAccountsCode() { return organizationLevelChartOfAccountsCode; } /** * Sets the organizationLevelChartOfAccountsCode attribute. * * @param organizationLevelChartOfAccountsCode The organizationLevelChartOfAccountsCode to set. */ public void setOrganizationLevelChartOfAccountsCode(String organizationLevelChartOfAccountsCode) { this.organizationLevelChartOfAccountsCode = organizationLevelChartOfAccountsCode; } /** * Gets the organizationLevelOrganizationCode attribute. * * @return Returns the organizationLevelOrganizationCode */ public String getOrganizationLevelOrganizationCode() { return organizationLevelOrganizationCode; } /** * Sets the organizationLevelOrganizationCode attribute. * * @param organizationLevelOrganizationCode The organizationLevelOrganizationCode to set. */ public void setOrganizationLevelOrganizationCode(String organizationLevelOrganizationCode) { this.organizationLevelOrganizationCode = organizationLevelOrganizationCode; } /** * Gets the budgetLockUserIdentifier attribute. * * @return Returns the budgetLockUserIdentifier */ public String getBudgetLockUserIdentifier() { return budgetLockUserIdentifier; } /** * Sets the budgetLockUserIdentifier attribute. * * @param budgetLockUserIdentifier The budgetLockUserIdentifier to set. */ public void setBudgetLockUserIdentifier(String budgetLockUserIdentifier) { this.budgetLockUserIdentifier = budgetLockUserIdentifier; } /** * Gets the budgetTransactionLockUserIdentifier attribute. * * @return Returns the budgetTransactionLockUserIdentifier */ public String getBudgetTransactionLockUserIdentifier() { return budgetTransactionLockUserIdentifier; } /** * Sets the budgetTransactionLockUserIdentifier attribute. * * @param budgetTransactionLockUserIdentifier The budgetTransactionLockUserIdentifier to set. */ public void setBudgetTransactionLockUserIdentifier(String budgetTransactionLockUserIdentifier) { this.budgetTransactionLockUserIdentifier = budgetTransactionLockUserIdentifier; } /** * Gets the chartOfAccounts attribute. * * @return Returns the chartOfAccounts */ public Chart getChartOfAccounts() { return chartOfAccounts; } /** * Sets the chartOfAccounts attribute. * * @param chartOfAccounts The chartOfAccounts to set. * @deprecated */ @Deprecated public void setChartOfAccounts(Chart chartOfAccounts) { this.chartOfAccounts = chartOfAccounts; } /** * Gets the account attribute. * * @return Returns the account */ public Account getAccount() { return account; } /** * Sets the account attribute. * * @param account The account to set. * @deprecated */ @Deprecated public void setAccount(Account account) { this.account = account; } public Person getBudgetLockUser() { budgetLockUser = SpringContext.getBean(org.kuali.rice.kim.api.identity.PersonService.class).updatePersonIfNecessary(budgetLockUserIdentifier, budgetLockUser); return budgetLockUser; } /** * Sets the budgetLockUser attribute. * * @param budgetLockUser The budgetLockUser to set. * @deprecated */ @Deprecated public void setBudgetLockUser(Person budgetLockUser) { this.budgetLockUser = budgetLockUser; } public Person getBudgetTransactionLockUser() { budgetTransactionLockUser = SpringContext.getBean(org.kuali.rice.kim.api.identity.PersonService.class).updatePersonIfNecessary(budgetTransactionLockUserIdentifier, budgetTransactionLockUser); return budgetTransactionLockUser; } /** * Sets the budgetTransactionLockUser attribute value. * * @param budgetTransactionLockUser The budgetTransactionLockUser to set. * @deprecated */ @Deprecated public void setBudgetTransactionLockUser(Person budgetTransactionLockUser) { this.budgetTransactionLockUser = budgetTransactionLockUser; } /** * Gets the organizationLevelOrganization attribute. * * @return Returns the organizationLevelOrganization. */ public Organization getOrganizationLevelOrganization() { return organizationLevelOrganization; } /** * Sets the organizationLevelOrganization attribute value. * * @param organizationLevelOrganization The organizationLevelOrganization to set. * @deprecated */ @Deprecated public void setOrganizationLevelOrganization(Organization organizationLevelOrganization) { this.organizationLevelOrganization = organizationLevelOrganization; } /** * Gets the subAccount attribute. * * @return Returns the subAccount. */ public SubAccount getSubAccount() { return subAccount; } /** * Sets the subAccount attribute value. * * @param subAccount The subAccount to set. */ public void setSubAccount(SubAccount subAccount) { this.subAccount = subAccount; } /** * Gets the previousUniversityFiscalYear attribute. * * @return Returns the previousUniversityFiscalYear. */ public Integer getPreviousUniversityFiscalYear() { if (previousUniversityFiscalYear == null) { this.previousUniversityFiscalYear = this.getUniversityFiscalYear() - 1; } return previousUniversityFiscalYear; } /** * Sets the previousUniversityFiscalYear attribute value. * * @param previousUniversityFiscalYear The previousUniversityFiscalYear to set. */ public void setPreviousUniversityFiscalYear(Integer previousUniversityFiscalYear) { this.previousUniversityFiscalYear = previousUniversityFiscalYear; } /** * Gets the budgetConstructionAccountReports attribute. * * @return Returns the budgetConstructionAccountReports. */ public BudgetConstructionAccountReports getBudgetConstructionAccountReports() { return budgetConstructionAccountReports; } /** * Sets the budgetConstructionAccountReports attribute value. * * @param budgetConstructionAccountReports The budgetConstructionAccountReports to set. * @deprecated */ @Deprecated public void setBudgetConstructionAccountReports(BudgetConstructionAccountReports budgetConstructionAccountReports) { this.budgetConstructionAccountReports = budgetConstructionAccountReports; } /** * @see org.kuali.rice.krad.document.DocumentBase#buildListOfDeletionAwareLists() */ @Override public List buildListOfDeletionAwareLists() { // return new ArrayList(); List managedLists = super.buildListOfDeletionAwareLists(); managedLists.add(getPendingBudgetConstructionGeneralLedgerRevenueLines()); managedLists.add(getPendingBudgetConstructionGeneralLedgerExpenditureLines()); // managedLists.add(getSourceAccountingLines()); // managedLists.add(getTargetAccountingLines()); return managedLists; } public List<PendingBudgetConstructionGeneralLedger> getPendingBudgetConstructionGeneralLedgerRevenueLines() { return pendingBudgetConstructionGeneralLedgerRevenueLines; } public void setPendingBudgetConstructionGeneralLedgerRevenueLines(List pendingBudgetConstructionGeneralLedgerRevenueLines) { this.pendingBudgetConstructionGeneralLedgerRevenueLines = pendingBudgetConstructionGeneralLedgerRevenueLines; } public List<PendingBudgetConstructionGeneralLedger> getPendingBudgetConstructionGeneralLedgerExpenditureLines() { return pendingBudgetConstructionGeneralLedgerExpenditureLines; } public void setPendingBudgetConstructionGeneralLedgerExpenditureLines(List pendingBudgetConstructionGeneralLedgerExpenditureLines) { this.pendingBudgetConstructionGeneralLedgerExpenditureLines = pendingBudgetConstructionGeneralLedgerExpenditureLines; } /** * Gets the expenditureAccountLineAnnualBalanceAmountTotal attribute. * * @return Returns the expenditureAccountLineAnnualBalanceAmountTotal. */ public KualiInteger getExpenditureAccountLineAnnualBalanceAmountTotal() { return expenditureAccountLineAnnualBalanceAmountTotal; } /** * Sets the expenditureAccountLineAnnualBalanceAmountTotal attribute value. * * @param expenditureAccountLineAnnualBalanceAmountTotal The expenditureAccountLineAnnualBalanceAmountTotal to set. */ public void setExpenditureAccountLineAnnualBalanceAmountTotal(KualiInteger expenditureAccountLineAnnualBalanceAmountTotal) { this.expenditureAccountLineAnnualBalanceAmountTotal = expenditureAccountLineAnnualBalanceAmountTotal; } /** * Gets the expenditureFinancialBeginningBalanceLineAmountTotal attribute. * * @return Returns the expenditureFinancialBeginningBalanceLineAmountTotal. */ public KualiInteger getExpenditureFinancialBeginningBalanceLineAmountTotal() { return expenditureFinancialBeginningBalanceLineAmountTotal; } /** * Sets the expenditureFinancialBeginningBalanceLineAmountTotal attribute value. * * @param expenditureFinancialBeginningBalanceLineAmountTotal The expenditureFinancialBeginningBalanceLineAmountTotal to set. */ public void setExpenditureFinancialBeginningBalanceLineAmountTotal(KualiInteger expenditureFinancialBeginningBalanceLineAmountTotal) { this.expenditureFinancialBeginningBalanceLineAmountTotal = expenditureFinancialBeginningBalanceLineAmountTotal; } /** * Gets the revenueAccountLineAnnualBalanceAmountTotal attribute. * * @return Returns the revenueAccountLineAnnualBalanceAmountTotal. */ public KualiInteger getRevenueAccountLineAnnualBalanceAmountTotal() { return revenueAccountLineAnnualBalanceAmountTotal; } /** * Sets the revenueAccountLineAnnualBalanceAmountTotal attribute value. * * @param revenueAccountLineAnnualBalanceAmountTotal The revenueAccountLineAnnualBalanceAmountTotal to set. */ public void setRevenueAccountLineAnnualBalanceAmountTotal(KualiInteger revenueAccountLineAnnualBalanceAmountTotal) { this.revenueAccountLineAnnualBalanceAmountTotal = revenueAccountLineAnnualBalanceAmountTotal; } /** * Gets the revenueFinancialBeginningBalanceLineAmountTotal attribute. * * @return Returns the revenueFinancialBeginningBalanceLineAmountTotal. */ public KualiInteger getRevenueFinancialBeginningBalanceLineAmountTotal() { return revenueFinancialBeginningBalanceLineAmountTotal; } /** * Sets the revenueFinancialBeginningBalanceLineAmountTotal attribute value. * * @param revenueFinancialBeginningBalanceLineAmountTotal The revenueFinancialBeginningBalanceLineAmountTotal to set. */ public void setRevenueFinancialBeginningBalanceLineAmountTotal(KualiInteger revenueFinancialBeginningBalanceLineAmountTotal) { this.revenueFinancialBeginningBalanceLineAmountTotal = revenueFinancialBeginningBalanceLineAmountTotal; } /** * Gets the expenditurePercentChangeTotal attribute. * * @return Returns the expenditurePercentChangeTotal. */ public KualiDecimal getExpenditurePercentChangeTotal() { if (expenditureFinancialBeginningBalanceLineAmountTotal == null || expenditureFinancialBeginningBalanceLineAmountTotal.isZero()) { this.expenditurePercentChangeTotal = null; } else { BigDecimal diffRslt = (expenditureAccountLineAnnualBalanceAmountTotal.bigDecimalValue().setScale(4)).subtract(expenditureFinancialBeginningBalanceLineAmountTotal.bigDecimalValue().setScale(4)); BigDecimal divRslt = diffRslt.divide((expenditureFinancialBeginningBalanceLineAmountTotal.bigDecimalValue().setScale(4)), KualiDecimal.ROUND_BEHAVIOR); this.expenditurePercentChangeTotal = new KualiDecimal(divRslt.multiply(BigDecimal.valueOf(100)).setScale(2)); } return expenditurePercentChangeTotal; } /** * Sets the expenditurePercentChangeTotal attribute value. * * @param expenditurePercentChangeTotal The expenditurePercentChangeTotal to set. */ public void setExpenditurePercentChangeTotal(KualiDecimal expenditurePercentChangeTotal) { this.expenditurePercentChangeTotal = expenditurePercentChangeTotal; } /** * Gets the revenuePercentChangeTotal attribute. * * @return Returns the revenuePercentChangeTotal. */ public KualiDecimal getRevenuePercentChangeTotal() { if (revenueFinancialBeginningBalanceLineAmountTotal == null || revenueFinancialBeginningBalanceLineAmountTotal.isZero()) { this.revenuePercentChangeTotal = null; } else { BigDecimal diffRslt = (revenueAccountLineAnnualBalanceAmountTotal.bigDecimalValue().setScale(4)).subtract(revenueFinancialBeginningBalanceLineAmountTotal.bigDecimalValue().setScale(4)); BigDecimal divRslt = diffRslt.divide((revenueFinancialBeginningBalanceLineAmountTotal.bigDecimalValue().setScale(4)), KualiDecimal.ROUND_BEHAVIOR); this.revenuePercentChangeTotal = new KualiDecimal(divRslt.multiply(BigDecimal.valueOf(100)).setScale(2)); } return revenuePercentChangeTotal; } /** * Sets the revenuePercentChangeTotal attribute value. * * @param revenuePercentChangeTotal The revenuePercentChangeTotal to set. */ public void setRevenuePercentChangeTotal(KualiDecimal revenuePercentChangeTotal) { this.revenuePercentChangeTotal = revenuePercentChangeTotal; } /** * Gets the isBenefitsCalcNeeded attribute. * * @return Returns the isBenefitsCalcNeeded. */ public boolean isBenefitsCalcNeeded() { return isBenefitsCalcNeeded; } /** * Sets the isBenefitsCalcNeeded attribute value. * * @param isBenefitsCalcNeeded The isBenefitsCalcNeeded to set. */ public void setBenefitsCalcNeeded(boolean isBenefitsCalcNeeded) { this.isBenefitsCalcNeeded = isBenefitsCalcNeeded; } /** * Gets the isMonthlyBenefitsCalcNeeded attribute. * * @return Returns the isMonthlyBenefitsCalcNeeded. */ public boolean isMonthlyBenefitsCalcNeeded() { return isMonthlyBenefitsCalcNeeded; } /** * Sets the isMonthlyBenefitsCalcNeeded attribute value. * * @param isMonthlyBenefitsCalcNeeded The isMonthlyBenefitsCalcNeeded to set. */ public void setMonthlyBenefitsCalcNeeded(boolean isMonthlyBenefitsCalcNeeded) { this.isMonthlyBenefitsCalcNeeded = isMonthlyBenefitsCalcNeeded; } /** * Gets the isSalarySettingOnly attribute. * * @return Returns the isSalarySettingOnly. */ public boolean isSalarySettingOnly() { if (this.getAccountSalarySettingOnlyCause() == AccountSalarySettingOnlyCause.MISSING_PARAM || this.getAccountSalarySettingOnlyCause() == AccountSalarySettingOnlyCause.NONE) { isSalarySettingOnly = false; } else { isSalarySettingOnly = true; } return isSalarySettingOnly; } /** * Sets the isSalarySettingOnly attribute value. * * @param isSalarySettingOnly The isSalarySettingOnly to set. */ public void setSalarySettingOnly(boolean isSalarySettingOnly) { this.isSalarySettingOnly = isSalarySettingOnly; } /** * Gets the accountSalarySettingOnlyCause attribute. * * @return Returns the accountSalarySettingOnlyCause. */ public AccountSalarySettingOnlyCause getAccountSalarySettingOnlyCause() { if (accountSalarySettingOnlyCause == null) { accountSalarySettingOnlyCause = SpringContext.getBean(BudgetParameterService.class).isSalarySettingOnlyAccount(this); } return accountSalarySettingOnlyCause; } /** * Sets the accountSalarySettingOnlyCause attribute value. * * @param accountSalarySettingOnlyCause The accountSalarySettingOnlyCause to set. */ public void setAccountSalarySettingOnlyCause(AccountSalarySettingOnlyCause accountSalarySettingOnlyCause) { this.accountSalarySettingOnlyCause = accountSalarySettingOnlyCause; } /** * Gets the containsTwoPlug attribute. * * @return Returns the containsTwoPlug. */ public boolean isContainsTwoPlug() { return containsTwoPlug; } /** * Sets the containsTwoPlug attribute value. * * @param containsTwoPlug The containsTwoPlug to set. */ public void setContainsTwoPlug(boolean containsTwoPlug) { this.containsTwoPlug = containsTwoPlug; } /** * Gets the budgetableDocument attribute. * * @return Returns the budgetableDocument. */ public boolean isBudgetableDocument() { return budgetableDocument; } /** * Sets the budgetableDocument attribute value. * * @param budgetableDocument The budgetableDocument to set. */ public void setBudgetableDocument(boolean budgetableDocument) { this.budgetableDocument = budgetableDocument; } /** * Gets the cleanupModeActionForceCheck attribute. * * @return Returns the cleanupModeActionForceCheck. */ public boolean isCleanupModeActionForceCheck() { return cleanupModeActionForceCheck; } /** * Sets the cleanupModeActionForceCheck attribute value. * * @param cleanupModeActionForceCheck The cleanupModeActionForceCheck to set. */ public void setCleanupModeActionForceCheck(boolean cleanupModeActionForceCheck) { this.cleanupModeActionForceCheck = cleanupModeActionForceCheck; } /** * the budget construction document never appears in anyone's in-box budget construction controls access by a * "pull-up/push-down" mechanism instead but, a budget construction document is routed so that the routing hierarchy can be used * to trace who has modified the document we override the routine below from Document we record the processed document state. a * budget construction document will never be "cancelled" or "disapproved" * * @see org.kuali.rice.krad.document.Document#doRouteStatusChange() */ @Override public void doRouteStatusChange(DocumentRouteStatusChange statusChangeEvent) { if (getDocumentHeader().getWorkflowDocument().isEnroute()) { getFinancialSystemDocumentHeader().setFinancialDocumentStatusCode(KFSConstants.DocumentStatusCodes.ENROUTE); } /* the status below is comparable to "approved" status for other documents */ if (getDocumentHeader().getWorkflowDocument().isProcessed()) { getFinancialSystemDocumentHeader().setFinancialDocumentStatusCode(BCConstants.BUDGET_CONSTRUCTION_DOCUMENT_INITIAL_STATUS); } LOG.info("Status is: " + getFinancialSystemDocumentHeader().getFinancialDocumentStatusCode()); } /** * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper() */ protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { LinkedHashMap m = new LinkedHashMap(); m.put(KFSPropertyConstants.DOCUMENT_NUMBER, this.documentNumber); if (this.universityFiscalYear != null) { m.put("universityFiscalYear", this.universityFiscalYear.toString()); } m.put("chartOfAccountsCode", this.chartOfAccountsCode); m.put("accountNumber", this.accountNumber); m.put("subAccountNumber", this.subAccountNumber); return m; } }