/* * 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.gl.businessobject; import java.sql.Date; import java.util.LinkedHashMap; import org.kuali.kfs.coa.businessobject.Account; import org.kuali.kfs.coa.businessobject.BalanceType; import org.kuali.kfs.coa.businessobject.Chart; import org.kuali.kfs.coa.businessobject.ObjectCode; import org.kuali.kfs.coa.businessobject.ObjectType; import org.kuali.kfs.coa.businessobject.PriorYearAccount; import org.kuali.kfs.coa.businessobject.SubAccount; import org.kuali.kfs.coa.businessobject.SubObjectCode; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.businessobject.SystemOptions; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; /** * This class contains the monthly balance amounts for a specific fiscal year, chart of accounts code, account number, * sub account number, object code, sub object code, balance type code, object type code * */ public class Balance extends PersistableBusinessObjectBase { static final long serialVersionUID = 6581797610149985575L; private Integer universityFiscalYear; private String chartOfAccountsCode; private String accountNumber; private String subAccountNumber; private String objectCode; private String subObjectCode; private String balanceTypeCode; private String objectTypeCode; private KualiDecimal accountLineAnnualBalanceAmount; private KualiDecimal beginningBalanceLineAmount; private KualiDecimal contractsGrantsBeginningBalanceAmount; private KualiDecimal month1Amount; private KualiDecimal month2Amount; private KualiDecimal month3Amount; private KualiDecimal month4Amount; private KualiDecimal month5Amount; private KualiDecimal month6Amount; private KualiDecimal month7Amount; private KualiDecimal month8Amount; private KualiDecimal month9Amount; private KualiDecimal month10Amount; private KualiDecimal month11Amount; private KualiDecimal month12Amount; private KualiDecimal month13Amount; private Date timestamp; private Chart chart; private Account account; private PriorYearAccount priorYearAccount; private ObjectCode financialObject; private SubObjectCode financialSubObject; private SubAccount subAccount; private BalanceType balanceType; private ObjectType objectType; private TransientBalanceInquiryAttributes dummyBusinessObject; private SystemOptions option; /** * @return Returns the options. */ public SystemOptions getOption() { return option; } /** * @param options The options to set. */ public void setOption(SystemOptions opt) { this.option = opt; } public Balance() { accountLineAnnualBalanceAmount = KualiDecimal.ZERO; beginningBalanceLineAmount = KualiDecimal.ZERO; contractsGrantsBeginningBalanceAmount = KualiDecimal.ZERO; month1Amount = KualiDecimal.ZERO; month2Amount = KualiDecimal.ZERO; month3Amount = KualiDecimal.ZERO; month4Amount = KualiDecimal.ZERO; month5Amount = KualiDecimal.ZERO; month6Amount = KualiDecimal.ZERO; month7Amount = KualiDecimal.ZERO; month8Amount = KualiDecimal.ZERO; month9Amount = KualiDecimal.ZERO; month10Amount = KualiDecimal.ZERO; month11Amount = KualiDecimal.ZERO; month12Amount = KualiDecimal.ZERO; month13Amount = KualiDecimal.ZERO; this.dummyBusinessObject = new TransientBalanceInquiryAttributes(); } public Balance(Transaction t) { this(); setUniversityFiscalYear(t.getUniversityFiscalYear()); setChartOfAccountsCode(t.getChartOfAccountsCode()); setAccountNumber(t.getAccountNumber()); setSubAccountNumber(t.getSubAccountNumber()); setObjectCode(t.getFinancialObjectCode()); setSubObjectCode(t.getFinancialSubObjectCode()); setBalanceTypeCode(t.getFinancialBalanceTypeCode()); setObjectTypeCode(t.getFinancialObjectTypeCode()); } /** * Constructs a Balance.java. * * @param transaction */ public Balance(BalanceHistory balanceHistory) { this(); this.setChartOfAccountsCode(balanceHistory.getChartOfAccountsCode()); this.setAccountNumber(balanceHistory.getAccountNumber()); this.setBalanceTypeCode(balanceHistory.getBalanceTypeCode()); this.setObjectCode(balanceHistory.getObjectCode()); this.setObjectTypeCode(balanceHistory.getObjectTypeCode()); this.setSubObjectCode(balanceHistory.getSubObjectCode()); this.setUniversityFiscalYear(balanceHistory.getUniversityFiscalYear()); this.setSubAccountNumber(balanceHistory.getSubAccountNumber()); } protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { LinkedHashMap map = new LinkedHashMap(); map.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, getUniversityFiscalYear()); map.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, getChartOfAccountsCode()); map.put(KFSPropertyConstants.ACCOUNT_NUMBER, getAccountNumber()); map.put(KFSPropertyConstants.SUB_ACCOUNT_NUMBER, getSubAccountNumber()); map.put(KFSPropertyConstants.OBJECT_CODE, getObjectCode()); map.put(KFSPropertyConstants.SUB_OBJECT_CODE, getSubObjectCode()); map.put(KFSPropertyConstants.BALANCE_TYPE_CODE, getBalanceTypeCode()); map.put(KFSPropertyConstants.OBJECT_TYPE_CODE, getObjectTypeCode()); return map; } /** * Returns an amount for a specific period * * @param period period to grab amount for * @return KualiDecimal amount for that specific period */ public KualiDecimal getAmount(String period) { if (KFSConstants.PERIOD_CODE_ANNUAL_BALANCE.equals(period)) { return getAccountLineAnnualBalanceAmount(); } else if (KFSConstants.PERIOD_CODE_BEGINNING_BALANCE.equals(period)) { return getBeginningBalanceLineAmount(); } else if (KFSConstants.PERIOD_CODE_CG_BEGINNING_BALANCE.equals(period)) { return getContractsGrantsBeginningBalanceAmount(); } else if (KFSConstants.MONTH1.equals(period)) { return getMonth1Amount(); } else if (KFSConstants.MONTH2.equals(period)) { return getMonth2Amount(); } else if (KFSConstants.MONTH3.equals(period)) { return getMonth3Amount(); } else if (KFSConstants.MONTH4.equals(period)) { return getMonth4Amount(); } else if (KFSConstants.MONTH5.equals(period)) { return getMonth5Amount(); } else if (KFSConstants.MONTH6.equals(period)) { return getMonth6Amount(); } else if (KFSConstants.MONTH7.equals(period)) { return getMonth7Amount(); } else if (KFSConstants.MONTH8.equals(period)) { return getMonth8Amount(); } else if (KFSConstants.MONTH9.equals(period)) { return getMonth9Amount(); } else if (KFSConstants.MONTH10.equals(period)) { return getMonth10Amount(); } else if (KFSConstants.MONTH11.equals(period)) { return getMonth11Amount(); } else if (KFSConstants.MONTH12.equals(period)) { return getMonth12Amount(); } else if (KFSConstants.MONTH13.equals(period)) { return getMonth13Amount(); } else { return null; } } /** * Add an amount to a specific period * * @param period period to add amount to * @param amount amount to add to period */ public void addAmount(String period, KualiDecimal amount) { if (KFSConstants.PERIOD_CODE_ANNUAL_BALANCE.equals(period)) { accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.PERIOD_CODE_BEGINNING_BALANCE.equals(period)) { beginningBalanceLineAmount = beginningBalanceLineAmount.add(amount); } else if (KFSConstants.PERIOD_CODE_CG_BEGINNING_BALANCE.equals(period)) { contractsGrantsBeginningBalanceAmount = contractsGrantsBeginningBalanceAmount.add(amount); } else if (KFSConstants.MONTH1.equals(period)) { month1Amount = month1Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH2.equals(period)) { month2Amount = month2Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH3.equals(period)) { month3Amount = month3Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH4.equals(period)) { month4Amount = month4Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH5.equals(period)) { month5Amount = month5Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH6.equals(period)) { month6Amount = month6Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH7.equals(period)) { month7Amount = month7Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH8.equals(period)) { month8Amount = month8Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH9.equals(period)) { month9Amount = month9Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH10.equals(period)) { month10Amount = month10Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH11.equals(period)) { month11Amount = month11Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH12.equals(period)) { month12Amount = month12Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } else if (KFSConstants.MONTH13.equals(period)) { month13Amount = month13Amount.add(amount); accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount.add(amount); } } /** * @return Returns the accountLineAnnualBalanceAmount. */ public KualiDecimal getAccountLineAnnualBalanceAmount() { return accountLineAnnualBalanceAmount; } /** * @param accountLineAnnualBalanceAmount The accountLineAnnualBalanceAmount to set. */ public void setAccountLineAnnualBalanceAmount(KualiDecimal accountLineAnnualBalanceAmount) { this.accountLineAnnualBalanceAmount = accountLineAnnualBalanceAmount; } /** * @return Returns the accountNumber. */ public String getAccountNumber() { return accountNumber; } /** * @param accountNumber The accountNumber to set. */ public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; } /** * @return Returns the balanceTypeCode. */ public String getBalanceTypeCode() { return balanceTypeCode; } /** * @param balanceTypeCode The balanceTypeCode to set. */ public void setBalanceTypeCode(String balanceTypeCode) { this.balanceTypeCode = balanceTypeCode; } /** * @return Returns the beginningBalanceLineAmount. */ public KualiDecimal getBeginningBalanceLineAmount() { return beginningBalanceLineAmount; } /** * @param beginningBalanceLineAmount The beginningBalanceLineAmount to set. */ public void setBeginningBalanceLineAmount(KualiDecimal beginningBalanceLineAmount) { this.beginningBalanceLineAmount = beginningBalanceLineAmount; } /** * @return Returns the chartOfAccountsCode. */ public String getChartOfAccountsCode() { return chartOfAccountsCode; } /** * @param chartOfAccountsCode The chartOfAccountsCode to set. */ public void setChartOfAccountsCode(String chartOfAccountsCode) { this.chartOfAccountsCode = chartOfAccountsCode; } /** * @return Returns the contractsGrantsBeginningBalanceAmount. */ public KualiDecimal getContractsGrantsBeginningBalanceAmount() { return contractsGrantsBeginningBalanceAmount; } /** * @param contractsGrantsBeginningBalanceAmount The contractsGrantsBeginningBalanceAmount to set. */ public void setContractsGrantsBeginningBalanceAmount(KualiDecimal contractsGrantsBeginningBalanceAmount) { this.contractsGrantsBeginningBalanceAmount = contractsGrantsBeginningBalanceAmount; } /** * @return Returns the month10Amount. */ public KualiDecimal getMonth10Amount() { return month10Amount; } /** * @param month10Amount The month10Amount to set. */ public void setMonth10Amount(KualiDecimal month10Amount) { this.month10Amount = month10Amount; } /** * @return Returns the month11Amount. */ public KualiDecimal getMonth11Amount() { return month11Amount; } /** * @param month11Amount The month11Amount to set. */ public void setMonth11Amount(KualiDecimal month11Amount) { this.month11Amount = month11Amount; } /** * @return Returns the month12Amount. */ public KualiDecimal getMonth12Amount() { return month12Amount; } /** * @param month12Amount The month12Amount to set. */ public void setMonth12Amount(KualiDecimal month12Amount) { this.month12Amount = month12Amount; } /** * @return Returns the month13Amount. */ public KualiDecimal getMonth13Amount() { return month13Amount; } /** * @param month13Amount The month13Amount to set. */ public void setMonth13Amount(KualiDecimal month13Amount) { this.month13Amount = month13Amount; } /** * @return Returns the month1Amount. */ public KualiDecimal getMonth1Amount() { return month1Amount; } /** * @param month1Amount The month1Amount to set. */ public void setMonth1Amount(KualiDecimal month1Amount) { this.month1Amount = month1Amount; } /** * @return Returns the month2Amount. */ public KualiDecimal getMonth2Amount() { return month2Amount; } /** * @param month2Amount The month2Amount to set. */ public void setMonth2Amount(KualiDecimal month2Amount) { this.month2Amount = month2Amount; } /** * @return Returns the month3Amount. */ public KualiDecimal getMonth3Amount() { return month3Amount; } /** * @param month3Amount The month3Amount to set. */ public void setMonth3Amount(KualiDecimal month3Amount) { this.month3Amount = month3Amount; } /** * @return Returns the month4Amount. */ public KualiDecimal getMonth4Amount() { return month4Amount; } /** * @param month4Amount The month4Amount to set. */ public void setMonth4Amount(KualiDecimal month4Amount) { this.month4Amount = month4Amount; } /** * @return Returns the month5Amount. */ public KualiDecimal getMonth5Amount() { return month5Amount; } /** * @param month5Amount The month5Amount to set. */ public void setMonth5Amount(KualiDecimal month5Amount) { this.month5Amount = month5Amount; } /** * @return Returns the month6Amount. */ public KualiDecimal getMonth6Amount() { return month6Amount; } /** * @param month6Amount The month6Amount to set. */ public void setMonth6Amount(KualiDecimal month6Amount) { this.month6Amount = month6Amount; } /** * @return Returns the month7Amount. */ public KualiDecimal getMonth7Amount() { return month7Amount; } /** * @param month7Amount The month7Amount to set. */ public void setMonth7Amount(KualiDecimal month7Amount) { this.month7Amount = month7Amount; } /** * @return Returns the month8Amount. */ public KualiDecimal getMonth8Amount() { return month8Amount; } /** * @param month8Amount The month8Amount to set. */ public void setMonth8Amount(KualiDecimal month8Amount) { this.month8Amount = month8Amount; } /** * @return Returns the month9Amount. */ public KualiDecimal getMonth9Amount() { return month9Amount; } /** * @param month9Amount The month9Amount to set. */ public void setMonth9Amount(KualiDecimal month9Amount) { this.month9Amount = month9Amount; } /** * @return Returns the objectCode. */ public String getObjectCode() { return objectCode; } /** * @param objectCode The objectCode to set. */ public void setObjectCode(String objectCode) { this.objectCode = objectCode; } /** * @return Returns the objectTypeCode. */ public String getObjectTypeCode() { return objectTypeCode; } /** * @param objectTypeCode The objectTypeCode to set. */ public void setObjectTypeCode(String objectTypeCode) { this.objectTypeCode = objectTypeCode; } /** * @return Returns the subAccountNumber. */ public String getSubAccountNumber() { return subAccountNumber; } /** * @param subAccountNumber The subAccountNumber to set. */ public void setSubAccountNumber(String subAccountNumber) { this.subAccountNumber = subAccountNumber; } /** * @return Returns the subObjectCode. */ public String getSubObjectCode() { return subObjectCode; } /** * @param subObjectCode The subObjectCode to set. */ public void setSubObjectCode(String subObjectCode) { this.subObjectCode = subObjectCode; } /** * @return Returns the timestamp. */ public Date getTimestamp() { return timestamp; } /** * @param timestamp The timestamp to set. */ public void setTimestamp(Date timestamp) { this.timestamp = timestamp; } /** * @return Returns the universityFiscalYear. */ public Integer getUniversityFiscalYear() { return universityFiscalYear; } /** * @param universityFiscalYear The universityFiscalYear to set. */ public void setUniversityFiscalYear(Integer universityFiscalYear) { this.universityFiscalYear = universityFiscalYear; } /** * Gets the chart attribute. * * @return Returns the chart. */ public Chart getChart() { return chart; } /** * Sets the chart attribute value. * * @param chart The chart to set. */ public void setChart(Chart chart) { this.chart = chart; } /** * Gets the account attribute. * * @return Returns the account. */ public Account getAccount() { return account; } /** * Sets the account attribute value. * * @param account The account to set. */ public void setAccount(Account account) { this.account = account; } /** * Gets the dummyBusinessObject attribute. * * @return Returns the dummyBusinessObject. */ public TransientBalanceInquiryAttributes getDummyBusinessObject() { return dummyBusinessObject; } /** * Sets the dummyBusinessObject attribute value. * * @param dummyBusinessObject The dummyBusinessObject to set. */ public void setDummyBusinessObject(TransientBalanceInquiryAttributes dummyBusinessObject) { this.dummyBusinessObject = dummyBusinessObject; } /** * Gets the financialObject attribute. * * @return Returns the financialObject. */ public ObjectCode getFinancialObject() { return financialObject; } /** * Sets the financialObject attribute value. * * @param financialObject The financialObject to set. */ public void setFinancialObject(ObjectCode financialObject) { this.financialObject = financialObject; } /** * Gets the balanceType attribute. * * @return Returns the balanceType. */ public BalanceType getBalanceType() { return balanceType; } /** * Sets the balanceType attribute value. * * @param balanceType The balanceType to set. */ public void setBalanceType(BalanceType balanceType) { this.balanceType = balanceType; } /** * Gets the financialSubObject attribute. * * @return Returns the financialSubObject. */ public SubObjectCode getFinancialSubObject() { return financialSubObject; } /** * Sets the financialSubObject attribute value. * * @param financialSubObject The financialSubObject to set. */ public void setFinancialSubObject(SubObjectCode financialSubObject) { this.financialSubObject = financialSubObject; } /** * 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 objectType attribute. * * @return Returns the objectType. */ public ObjectType getObjectType() { return objectType; } /** * Sets the objectType attribute value. * * @param objectType The objectType to set. */ public void setObjectType(ObjectType objectType) { this.objectType = objectType; } /** * Gets the priorYearAccount attribute. * * @return Returns the priorYearAccount. */ public PriorYearAccount getPriorYearAccount() { return priorYearAccount; } /** * Sets the priorYearAccount attribute value. * * @param priorYearAccount The priorYearAccount to set. */ public void setPriorYearAccount(PriorYearAccount priorYearAccount) { this.priorYearAccount = priorYearAccount; } private String fundGroup; // a transient attribute private KualiDecimal yearBalance = KualiDecimal.ZERO; // a transient attribute private KualiDecimal yearToDayBalance = KualiDecimal.ZERO; // a transient attribute /** * Gets the fundGroup attribute. * @return Returns the fundGroup. */ public String getFundGroup() { return fundGroup; } /** * Sets the fundGroup attribute value. * @param fundGroup The fundGroup to set. */ public void setFundGroup(String fundGroup) { this.fundGroup = fundGroup; } /** * Gets the yearBalance attribute. * @return Returns the yearBalance. */ public KualiDecimal getYearBalance() { return yearBalance; } /** * Sets the yearBalance attribute value. * @param yearBalance The yearBalance to set. */ public void setYearBalance(KualiDecimal yearBalance) { this.yearBalance = yearBalance; } /** * Gets the yearToDayBalance attribute. * @return Returns the yearToDayBalance. */ public KualiDecimal getYearToDayBalance() { return yearToDayBalance; } /** * Sets the yearToDayBalance attribute value. * @param yearToDayBalance The yearToDayBalance to set. */ public void setYearToDayBalance(KualiDecimal yearToDayBalance) { this.yearToDayBalance = yearToDayBalance; } public KualiDecimal getCombinedBeginningBalanceAmount() { KualiDecimal combinedBeginningBalanceAmount; combinedBeginningBalanceAmount = KualiDecimal.ZERO; combinedBeginningBalanceAmount = combinedBeginningBalanceAmount.add(getBeginningBalanceLineAmount()); combinedBeginningBalanceAmount = combinedBeginningBalanceAmount.add(getContractsGrantsBeginningBalanceAmount()); return combinedBeginningBalanceAmount; } }