/*
* 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.ld.businessobject;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.module.ld.LaborConstants;
import org.kuali.kfs.sys.KFSPropertyConstants;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.service.FinancialSystemUserService;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* Labor business object for Account Status (Current Funds).
*/
public class AccountStatusCurrentFunds extends LedgerBalance {
private String personName;
private KualiDecimal outstandingEncum;
private KualiDecimal july1BudgetAmount;
private KualiDecimal annualActualAmount;
private KualiDecimal variance;
/**
* Constructs an AccountStatusCurrentFunds.java.
*/
public AccountStatusCurrentFunds() {
super();
setMonth1Amount(KualiDecimal.ZERO);
this.setOutstandingEncum(KualiDecimal.ZERO);
this.setVariance(KualiDecimal.ZERO);
this.setJuly1BudgetAmount(KualiDecimal.ZERO);
this.setAnnualActualAmount(KualiDecimal.ZERO);
}
/**
* Gets the person name.
* @return the person name
*/
public String getName() {
/*
Person person = SpringContext.getBean(PersonService.class).getPersonByEmployeeId(getEmplid());
if (person == null) {
return LaborConstants.BalanceInquiries.UnknownPersonName;
}
return person.getName();
*/
/*
* KFSCNTRB-1344
* Replace the above logic that uses PersonService with the following one that uses IdentityService, since the former is a lot slower.
*/
String name = SpringContext.getBean(FinancialSystemUserService.class).getPersonNameByEmployeeId(getEmplid());
if (!StringUtils.isEmpty(name)) {
return name;
}
return LaborConstants.BalanceInquiries.UnknownPersonName;
}
/**
* Sets the persons name
*
* @param personName
*/
public void setName(String personName) {
this.personName = personName;
}
/**
* Gets an outstanding encumberance value
*
* @return outstanding encumberance value
*/
public KualiDecimal getOutstandingEncum() {
return outstandingEncum;
}
/**
* Sets an outstanding encumberance value
*
* @param outstandingEncum
*/
public void setOutstandingEncum(KualiDecimal outstandingEncum) {
this.outstandingEncum = outstandingEncum;
}
/**
* Gets the Jul1BudgerAmount
*
* @return July1st amount
*/
public KualiDecimal getJuly1BudgetAmount() {
return july1BudgetAmount;
}
/**
* Sets the july1BudgetAmount
*
* @param july1BudgetAmount
*/
public void setJuly1BudgetAmount(KualiDecimal july1BudgetAmount) {
this.july1BudgetAmount = july1BudgetAmount;
}
/**
* Gets the variance which is calculated by substracting from July1BudgetAmount the YTD Actual, and outstanding encumbrance.
*
* @return
*/
public KualiDecimal getVariance() {
return this.getJuly1BudgetAmount().subtract(getAnnualActualAmount()).subtract(getOutstandingEncum());
}
/**
* Sets the variance which is calculated by substracting from July1BudgetAmount the YTD Actual, and outstanding encumbrance.
*
* @param variance
*/
public void setVariance(KualiDecimal variance) {
this.variance = variance;
}
/**
* Returns a list of keys used to generate a query.
*
* @param consolidated
* @return a list with the keys needed to generate a query
*/
public List<String> getKeyFieldList(boolean consolidated) {
List<String> primaryKeyList = new ArrayList<String>();
primaryKeyList.add(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR);
primaryKeyList.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE);
primaryKeyList.add(KFSPropertyConstants.ACCOUNT_NUMBER);
if (!consolidated) {
primaryKeyList.add(KFSPropertyConstants.SUB_ACCOUNT_NUMBER);
}
primaryKeyList.add(KFSPropertyConstants.FINANCIAL_OBJECT_CODE);
if (!consolidated) {
primaryKeyList.add(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE);
}
primaryKeyList.add(KFSPropertyConstants.POSITION_NUMBER);
primaryKeyList.add(KFSPropertyConstants.EMPLID);
return primaryKeyList;
}
/**
* Gets the annualActualAmount attribute.
*
* @return Returns the annualActualAmount.
*/
public KualiDecimal getAnnualActualAmount() {
return this.getAccountLineAnnualBalanceAmount().add(this.getContractsGrantsBeginningBalanceAmount());
}
/**
* Sets the annualActualAmount attribute value.
*
* @param annualActualAmount The annualActualAmount to set.
*/
public void setAnnualActualAmount(KualiDecimal annualActualAmount) {
this.annualActualAmount = annualActualAmount;
}
}