/*
* 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.util.LinkedHashMap;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.gl.businessobject.SufficientFundRebuild;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.kfs.sys.businessobject.FiscalYearBasedBusinessObject;
import org.kuali.kfs.sys.businessobject.SystemOptions;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.krad.bo.KualiCode;
import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.kuali.rice.krad.service.impl.PersistenceStructureServiceImpl;
/**
*
*/
public class ObjectCode extends PersistableBusinessObjectBase implements KualiCode, FiscalYearBasedBusinessObject {
static {
PersistenceStructureServiceImpl.referenceConversionMap.put(ObjectCode.class, ObjectCodeCurrent.class);
}
private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ObjectCode.class);
public static final String CACHE_NAME = KFSConstants.APPLICATION_NAMESPACE_CODE + "/" + "ObjectCode";
private static final long serialVersionUID = -965833141452795485L;
protected Integer universityFiscalYear;
protected String chartOfAccountsCode;
protected String financialObjectCode;
protected String financialObjectCodeName;
protected String financialObjectCodeShortName;
protected String historicalFinancialObjectCode;
protected boolean active;
protected String financialObjectLevelCode;
protected String reportsToChartOfAccountsCode;
protected String reportsToFinancialObjectCode;
protected String financialObjectTypeCode;
protected String financialObjectSubTypeCode;
protected String financialBudgetAggregationCd;
protected String nextYearFinancialObjectCode;
protected String finObjMandatoryTrnfrelimCd;
protected String financialFederalFundedCode;
protected transient BudgetAggregationCode financialBudgetAggregation;
protected transient MandatoryTransferEliminationCode finObjMandatoryTrnfrelim;
protected transient FederalFundedCode financialFederalFunded;
protected transient SystemOptions universityFiscal;
protected transient ObjectLevel financialObjectLevel;
protected transient Chart chartOfAccounts;
protected transient Chart reportsToChartOfAccounts;
protected transient ObjectCode reportsToFinancialObject;
protected transient ObjectType financialObjectType;
protected transient ObjectSubType financialObjectSubType;
/**
* Default no-arg constructor.
*/
public ObjectCode() {
// initialize the object fiscal year to the current fiscal year
// universityFiscalYear = SpringContext.getBean(DateTimeService.class).getCurrentFiscalYear();
// construct the referenced objects for the calling of the referencing object
this.financialObjectLevel = new ObjectLevel();
this.financialObjectType = new ObjectType();
}
/**
* Constructs a ObjectCode.java with the given defaults; this way, it is not necessary to use any deprecated setters.
*
* @param fiscalYear
* @param chart
* @param financialObjectCode - an active object code
*/
public ObjectCode(Integer fiscalYear, String chart, String financialObjectCode) {
this.universityFiscalYear = fiscalYear;
this.chartOfAccountsCode = chart;
this.financialObjectCode = financialObjectCode;
this.active = true;
}
/**
* This method is only for use by the framework
*/
public void setUniversityFiscalYear(Integer i) {
this.universityFiscalYear = i;
}
/**
* Gets the financialFederalFunded attribute.
*
* @return Returns the financialFederalFunded.
*/
public FederalFundedCode getFinancialFederalFunded() {
return financialFederalFunded;
}
/**
* Sets the financialFederalFunded attribute value.
*
* @param financialFederalFunded The financialFederalFunded to set.
* @deprecated
*/
public void setFinancialFederalFunded(FederalFundedCode financialFederalFunded) {
this.financialFederalFunded = financialFederalFunded;
}
/**
* Gets the finObjMandatoryTrnfrelim attribute.
*
* @return Returns the finObjMandatoryTrnfrelimCd.
*/
public MandatoryTransferEliminationCode getFinObjMandatoryTrnfrelim() {
return finObjMandatoryTrnfrelim;
}
/**
* Sets the finObjMandatoryTrnfrelim attribute value.
*
* @param finObjMandatoryTrnfrelim The finObjMandatoryTrnfrelim to set.
* @deprecated
*/
public void setFinObjMandatoryTrnfrelim(MandatoryTransferEliminationCode finObjMandatoryTrnfrelim) {
this.finObjMandatoryTrnfrelim = finObjMandatoryTrnfrelim;
}
/**
* Gets the financialObjectCode attribute.
*
* @return Returns the financialObjectCode
*/
public String getFinancialObjectCode() {
return financialObjectCode;
}
/**
* Sets the financialObjectCode attribute.
*
* @param financialObjectCode The financialObjectCode to set.
*/
public void setFinancialObjectCode(String financialObjectCode) {
this.financialObjectCode = financialObjectCode;
}
/**
* Gets the financialObjectCodeName attribute.
*
* @return Returns the financialObjectCodeName
*/
public String getFinancialObjectCodeName() {
return financialObjectCodeName;
}
/**
* Sets the financialObjectCodeName attribute.
*
* @param financialObjectCodeName The financialObjectCodeName to set.
*/
public void setFinancialObjectCodeName(String financialObjectCodeName) {
this.financialObjectCodeName = financialObjectCodeName;
}
/**
* Gets the financialObjectCodeShortName attribute.
*
* @return Returns the financialObjectCodeShortName
*/
public String getFinancialObjectCodeShortName() {
return financialObjectCodeShortName;
}
/**
* Sets the financialObjectCodeShortName attribute.
*
* @param financialObjectCodeShortName The financialObjectCodeShortName to set.
*/
public void setFinancialObjectCodeShortName(String financialObjectCodeShortName) {
this.financialObjectCodeShortName = financialObjectCodeShortName;
}
/**
* Gets the historicalFinancialObjectCode attribute.
*
* @return Returns the historicalFinancialObjectCode
*/
public String getHistoricalFinancialObjectCode() {
return historicalFinancialObjectCode;
}
/**
* Sets the historicalFinancialObjectCode attribute.
*
* @param historicalFinancialObjectCode The historicalFinancialObjectCode to set.
*/
public void setHistoricalFinancialObjectCode(String historicalFinancialObjectCode) {
this.historicalFinancialObjectCode = historicalFinancialObjectCode;
}
/**
* Gets the financialObjectActiveCode attribute.
*
* @return Returns the financialObjectActiveCode
*/
public boolean isFinancialObjectActiveCode() {
return active;
}
/**
* Sets the financialObjectActiveCode attribute.
*
* @param financialObjectActiveCode The financialObjectActiveCode to set.
*/
public void setFinancialObjectActiveCode(boolean active) {
this.active = active;
}
/**
* Gets the financialBudgetAggregationCd attribute.
*
* @return Returns the financialBudgetAggregationCd
*/
/*
* public BudgetAggregationCode getFinancialBudgetAggregation() { return financialBudgetAggregation; }
*/
/**
* Sets the financialBudgetAggregationCd attribute.
*
* @param financialBudgetAggregationCd The financialBudgetAggregationCd to set.
* @deprecated
*/
/*
* public void setFinancialBudgetAggregation(BudgetAggregationCode financialBudgetAggregationCd) {
* this.financialBudgetAggregation = financialBudgetAggregationCd; }
*/
/**
* Gets the universityFiscal attribute.
*
* @return Returns the universityFiscal
*/
public SystemOptions getUniversityFiscal() {
return universityFiscal;
}
/**
* Sets the universityFiscal attribute.
*
* @param universityFiscal The universityFiscal to set.
* @deprecated
*/
public void setUniversityFiscal(SystemOptions universityFiscal) {
this.universityFiscal = universityFiscal;
}
/**
* Gets the financialObjectLevel attribute.
*
* @return Returns the financialObjectLevel
*/
public ObjectLevel getFinancialObjectLevel() {
return financialObjectLevel;
}
/**
* Sets the financialObjectLevel attribute.
*
* @param financialObjectLevel The financialObjectLevel to set.
* @deprecated
*/
public void setFinancialObjectLevel(ObjectLevel financialObjectLevel) {
this.financialObjectLevel = financialObjectLevel;
}
/**
* Gets the chartOfAccounts attribute.
*
* @return Returns the chartOfAccounts
*/
public Chart getChartOfAccounts() {
return chartOfAccounts;
}
/**
* Sets the chartOfAccounts attribute.
*
* @param chartOfAccounts The chartOfAccounts to set.
* @deprecated
*/
public void setChartOfAccounts(Chart chartOfAccounts) {
this.chartOfAccounts = chartOfAccounts;
}
/**
* Gets the reportsToChartOfAccounts attribute.
*
* @return Returns the reportsToChartOfAccounts
*/
public Chart getReportsToChartOfAccounts() {
return reportsToChartOfAccounts;
}
/**
* Sets the reportsToChartOfAccounts attribute.
*
* @param reportsToChartOfAccounts The reportsToChartOfAccounts to set.
* @deprecated
*/
public void setReportsToChartOfAccounts(Chart reportsToChartOfAccounts) {
this.reportsToChartOfAccounts = reportsToChartOfAccounts;
}
/**
* Gets the reportsToFinancialObject attribute.
*
* @return Returns the reportsToFinancialObject
*/
public ObjectCode getReportsToFinancialObject() {
return reportsToFinancialObject;
}
/**
* Sets the reportsToFinancialObject attribute.
*
* @param reportsToFinancialObject The reportsToFinancialObject to set.
* @deprecated
*/
public void setReportsToFinancialObject(ObjectCode reportsToFinancialObject) {
this.reportsToFinancialObject = reportsToFinancialObject;
}
/**
* Gets the financialObjectType attribute.
*
* @return Returns the financialObjectType
*/
public ObjectType getFinancialObjectType() {
return financialObjectType;
}
/**
* Sets the financialObjectType attribute.
*
* @param financialObjectType The financialObjectType to set.
* @deprecated
*/
public void setFinancialObjectType(ObjectType financialObjectType) {
this.financialObjectType = financialObjectType;
}
/**
* Gets the financialObjectSubType attribute.
*
* @return Returns the financialObjectSubType
*/
public ObjectSubType getFinancialObjectSubType() {
return financialObjectSubType;
}
/**
* Sets the financialObjectSubType attribute.
*
* @param financialObjectSubType The financialObjectSubType to set.
* @deprecated
*/
public void setFinancialObjectSubType(ObjectSubType financialObjectSubType) {
this.financialObjectSubType = financialObjectSubType;
}
/**
*/
public void setChartOfAccountsCode(String string) {
this.chartOfAccountsCode = string;
}
/**
*
*/
public String getChartOfAccountsCode() {
return this.chartOfAccountsCode;
}
/**
*
*/
public Integer getUniversityFiscalYear() {
return this.universityFiscalYear;
}
/**
* @return Returns the financialBudgetAggregationCd.
*/
public String getFinancialBudgetAggregationCd() {
return financialBudgetAggregationCd;
}
/**
* @param financialBudgetAggregationCd The financialBudgetAggregationCd to set.
*/
public void setFinancialBudgetAggregationCd(String financialBudgetAggregationCd) {
this.financialBudgetAggregationCd = financialBudgetAggregationCd;
}
/**
* @return Returns the financialObjectLevelCode.
*/
public String getFinancialObjectLevelCode() {
return financialObjectLevelCode;
}
/**
* @param financialObjectLevelCode The financialObjectLevelCode to set.
*/
public void setFinancialObjectLevelCode(String financialObjectLevelCode) {
this.financialObjectLevelCode = financialObjectLevelCode;
}
/**
* @return Returns the financialObjectSubTypeCode.
*/
public String getFinancialObjectSubTypeCode() {
return financialObjectSubTypeCode;
}
/**
* @param financialObjectSubTypeCode The financialObjectSubTypeCode to set.
*/
public void setFinancialObjectSubTypeCode(String financialObjectSubTypeCode) {
this.financialObjectSubTypeCode = financialObjectSubTypeCode;
}
/**
* @return Returns the financialObjectTypeCode.
*/
public String getFinancialObjectTypeCode() {
return financialObjectTypeCode;
}
/**
* @param financialObjectTypeCode The financialObjectTypeCode to set.
*/
public void setFinancialObjectTypeCode(String financialObjectTypeCode) {
this.financialObjectTypeCode = financialObjectTypeCode;
}
/**
* @return Returns the nextYearFinancialObjectCode.
*/
public String getNextYearFinancialObjectCode() {
return nextYearFinancialObjectCode;
}
/**
* @param nextYearFinancialObjectCode The nextYearFinancialObjectCode to set.
*/
public void setNextYearFinancialObjectCode(String nextYearFinancialObjectCode) {
this.nextYearFinancialObjectCode = nextYearFinancialObjectCode;
}
/**
* @return Returns the reportsToChartOfAccountsCode.
*/
public String getReportsToChartOfAccountsCode() {
return reportsToChartOfAccountsCode;
}
/**
* @param reportsToChartOfAccountsCode The reportsToChartOfAccountsCode to set.
*/
public void setReportsToChartOfAccountsCode(String reportsToChartOfAccountsCode) {
this.reportsToChartOfAccountsCode = reportsToChartOfAccountsCode;
}
/**
* @return Returns the reportsToFinancialObjectCode.
*/
public String getReportsToFinancialObjectCode() {
return reportsToFinancialObjectCode;
}
/**
* @param reportsToFinancialObjectCode The reportsToFinancialObjectCode to set.
*/
public void setReportsToFinancialObjectCode(String reportsToFinancialObjectCode) {
this.reportsToFinancialObjectCode = reportsToFinancialObjectCode;
}
/**
* @return Returns the financialFederalFundedCode.
*/
public String getFinancialFederalFundedCode() {
return financialFederalFundedCode;
}
/**
* @param financialFederalFundedCode The financialFederalFundedCode to set.
*/
public void setFinancialFederalFundedCode(String financialFederalFundedCode) {
this.financialFederalFundedCode = financialFederalFundedCode;
}
/**
* @return Returns the finObjMandatoryTrnfrelimCd.
*/
public String getFinObjMandatoryTrnfrelimCd() {
return finObjMandatoryTrnfrelimCd;
}
/**
* @param finObjMandatoryTrnfrelimCd The finObjMandatoryTrnfrelimCd to set.
*/
public void setFinObjMandatoryTrnfrelimCd(String finObjMandatoryTrnfrelimCd) {
this.finObjMandatoryTrnfrelimCd = finObjMandatoryTrnfrelimCd;
}
public BudgetAggregationCode getFinancialBudgetAggregation() {
return financialBudgetAggregation;
}
public void setFinancialBudgetAggregation(BudgetAggregationCode financialBudgetAggregation) {
this.financialBudgetAggregation = financialBudgetAggregation;
}
/**
* @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper()
*/
protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
LinkedHashMap<String, String> m = new LinkedHashMap<String, String>();
m.put("chartOfAccountsCode", this.chartOfAccountsCode);
m.put("financialObjectCode", this.financialObjectCode);
return m;
}
protected static BusinessObjectService businessObjectService;
protected BusinessObjectService getBusinessObjectService() {
if ( businessObjectService == null ) {
businessObjectService = SpringContext.getBean(BusinessObjectService.class);
}
return businessObjectService;
}
@Override protected void preUpdate() {
// TODO Auto-generated method stub
super.preUpdate();
try {
// KULCOA-549: update the sufficient funds table
// get the current data from the database
ObjectCode originalObjectCode = (ObjectCode) getBusinessObjectService().retrieve(this);
if (originalObjectCode != null) {
if (!originalObjectCode.getFinancialObjectLevelCode().equals(getFinancialObjectLevelCode())) {
SufficientFundRebuild sfr = new SufficientFundRebuild();
sfr.setAccountFinancialObjectTypeCode(SufficientFundRebuild.REBUILD_OBJECT);
sfr.setChartOfAccountsCode(originalObjectCode.getChartOfAccountsCode());
sfr.setAccountNumberFinancialObjectCode(originalObjectCode.getFinancialObjectLevelCode());
if (getBusinessObjectService().retrieve(sfr) == null) {
getBusinessObjectService().save(sfr);
}
sfr = new SufficientFundRebuild();
sfr.setAccountFinancialObjectTypeCode(SufficientFundRebuild.REBUILD_OBJECT);
sfr.setChartOfAccountsCode(getChartOfAccountsCode());
sfr.setAccountNumberFinancialObjectCode(getFinancialObjectLevelCode());
if (getBusinessObjectService().retrieve(sfr) == null) {
getBusinessObjectService().save(sfr);
}
}
}
} catch (Exception ex) {
LOG.error("Problem updating sufficient funds rebuild table: ", ex);
}
}
public boolean isActive() {
return this.active;
}
public void setActive(boolean a) {
this.active = a;
}
public void setCode(String code) {
this.chartOfAccountsCode = code;
}
public void setName(String name) {
this.financialObjectCodeName = name;
}
public String getCode() {
return this.financialObjectCode;
}
public String getName() {
return this.financialObjectCodeName;
}
/**
* Determines if this object code reports to itself
* @return true if the object code reports to itself, false otherwise
*/
public boolean isReportingToSelf() {
return StringUtils.equals(this.getChartOfAccountsCode(), this.getReportsToChartOfAccountsCode()) && StringUtils.equals(this.getFinancialObjectCode(), this.getReportsToFinancialObjectCode());
}
}