/* * 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 java.util.LinkedHashMap; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.coa.businessobject.Account; import org.kuali.kfs.coa.businessobject.Chart; import org.kuali.kfs.coa.businessobject.ObjectCode; import org.kuali.kfs.integration.ld.LaborLedgerBenefitsCalculation; import org.kuali.kfs.integration.ld.LaborLedgerPositionObjectBenefit; import org.kuali.kfs.module.ld.LaborConstants; import org.kuali.kfs.module.ld.service.LaborBenefitsCalculationService; 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.core.api.mo.common.active.MutableInactivatable; import org.kuali.rice.core.api.util.type.KualiPercent; import org.kuali.rice.coreservice.framework.parameter.ParameterService; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; /** * Labor business object for Modeling of Position Object Benefit */ public class PositionObjectBenefit extends PersistableBusinessObjectBase implements LaborLedgerPositionObjectBenefit, MutableInactivatable, FiscalYearBasedBusinessObject { protected Integer universityFiscalYear; protected String chartOfAccountsCode; protected String financialObjectCode; protected String financialObjectBenefitsTypeCode; protected Chart chartOfAccounts; protected boolean active; protected ObjectCode financialObject; protected transient SystemOptions universityFiscal; protected BenefitsCalculation benefitsCalculation; protected BenefitsType financialObjectBenefitsType; protected LaborObject laborObject; private String laborBenefitRateCategoryCode; /** * Default constructor. */ public PositionObjectBenefit() { } /** * Gets the universityFiscalYear * * @return Returns the universityFiscalYear */ public Integer getUniversityFiscalYear() { return universityFiscalYear; } /** * Sets the universityFiscalYear * * @param universityFiscalYear The universityFiscalYear to set. */ public void setUniversityFiscalYear(Integer universityFiscalYear) { this.universityFiscalYear = universityFiscalYear; } /** * Gets the chartOfAccountsCode * * @return Returns the chartOfAccountsCode */ public String getChartOfAccountsCode() { return chartOfAccountsCode; } /** * Sets the chartOfAccountsCode * * @param chartOfAccountsCode The chartOfAccountsCode to set. */ public void setChartOfAccountsCode(String chartOfAccountsCode) { this.chartOfAccountsCode = chartOfAccountsCode; } /** * Gets the financialObjectCode * * @return Returns the financialObjectCode */ public String getFinancialObjectCode() { return financialObjectCode; } /** * Sets the financialObjectCode * * @param financialObjectCode The financialObjectCode to set. */ public void setFinancialObjectCode(String financialObjectCode) { this.financialObjectCode = financialObjectCode; } /** * Gets the financialObjectBenefitsTypeCode * * @return Returns the financialObjectBenefitsTypeCode */ public String getFinancialObjectBenefitsTypeCode() { return financialObjectBenefitsTypeCode; } /** * Sets the financialObjectBenefitsTypeCode * * @param financialObjectBenefitsTypeCode The financialObjectBenefitsTypeCode to set. */ public void setFinancialObjectBenefitsTypeCode(String financialObjectBenefitsTypeCode) { this.financialObjectBenefitsTypeCode = financialObjectBenefitsTypeCode; } /** * Gets the financialObject * * @return Returns the financialObject */ public ObjectCode getFinancialObject() { return financialObject; } /** * Sets the financialObject * * @param financialObject The financialObject to set. */ @Deprecated public void setFinancialObject(ObjectCode financialObject) { this.financialObject = financialObject; } /** * Gets the chartOfAccounts * * @return Returns the chartOfAccounts */ public Chart getChartOfAccounts() { return chartOfAccounts; } /** * Sets the chartOfAccounts * * @param chartOfAccounts The chartOfAccounts to set. */ @Deprecated public void setChartOfAccounts(Chart chartOfAccounts) { this.chartOfAccounts = chartOfAccounts; } /** * Gets the universityFiscal * * @return Returns the universityFiscal. */ public SystemOptions getUniversityFiscal() { return universityFiscal; } /** * Sets the universityFiscal * * @param universityFiscal The universityFiscal to set. */ @Deprecated public void setUniversityFiscal(SystemOptions universityFiscal) { this.universityFiscal = universityFiscal; } /** * Gets the benefitsCalculation * * @return Returns the benefitsCalculation. */ public BenefitsCalculation getBenefitsCalculation(String laborBenefitRateCategoryCode) { BenefitsCalculation bc = SpringContext.getBean(LaborBenefitsCalculationService.class).getBenefitsCalculation(universityFiscalYear, chartOfAccountsCode, financialObjectBenefitsTypeCode, laborBenefitRateCategoryCode); //if we can't find a match, create a new benefit calculation with a 0.00 benefit percent if(bc == null){ bc = new BenefitsCalculation(); bc.setPositionFringeBenefitPercent(new KualiPercent(0)); } return bc; } /** * Gets the benefitsCalculation * * @return Returns the benefitsCalculation. */ public BenefitsCalculation getBenefitsCalculation() { if(benefitsCalculation == null){ benefitsCalculation = this.getBenefitsCalculation(this.getLaborBenefitRateCategoryCode()); } return benefitsCalculation; } /** * Sets the benefitsCalculation * * @param benefitsCalculation The benefitsCalculation to set. */ @Deprecated public void setBenefitsCalculation(BenefitsCalculation benefitsCalculation) { this.benefitsCalculation = benefitsCalculation; } /** * Gets the financialObjectBenefitsType * * @return financialObjectBenefitsType */ public BenefitsType getFinancialObjectBenefitsType() { return financialObjectBenefitsType; } /** * Sets financialObjectBenefitsType * * @param financialObjectBenefitsType The financialObjectBenefitsType to be set */ @Deprecated public void setFinancialObjectBenefitsType(BenefitsType financialObjectBenefitsType) { this.financialObjectBenefitsType = financialObjectBenefitsType; } /** * Gets the laborObject * * @return Returns the laborObject. */ public LaborObject getLaborObject() { return laborObject; } /** * Sets the laborObject * * @param laborObject The laborObject to set. */ @Deprecated public void setLaborObject(LaborObject laborObject) { this.laborObject = laborObject; } /** * Gets the active attribute. * * @return Returns the active. */ public boolean isActive() { return active; } /** * Sets the active attribute value. * * @param active The active to set. */ public void setActive(boolean active) { this.active = active; } /** * This method (a hack by any other name...) returns a string so that an Labor Object Code Benefits can have a link to view its own * inquiry page after a look up * * @return the String "View Labor Object Code Benefits" */ public String getLaborObjectCodeBenefitsViewer() { return "View Labor Object Code Benefits"; } /** * construct the key list of the business object. * * @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper() */ protected LinkedHashMap toStringMapper_RICE20_REFACTORME() { LinkedHashMap m = new LinkedHashMap(); if (this.universityFiscalYear != null) { m.put("universityFiscalYear", this.universityFiscalYear.toString()); } m.put("chartOfAccountsCode", this.chartOfAccountsCode); m.put("financialObjectCode", this.financialObjectCode); m.put("financialObjectBenefitsTypeCode", this.financialObjectBenefitsTypeCode); return m; } /** * @see org.kuali.kfs.integration.businessobject.LaborLedgerPositionObjectBenefit#getLaborLedgerBenefitsCalculation() */ public LaborLedgerBenefitsCalculation getLaborLedgerBenefitsCalculation() { return SpringContext.getBean(LaborBenefitsCalculationService.class).getBenefitsCalculation(universityFiscalYear, chartOfAccountsCode, financialObjectBenefitsTypeCode); } /** * @see org.kuali.kfs.integration.businessobject.LaborLedgerPositionObjectBenefit#getLaborLedgerBenefitsCalculation() */ public LaborLedgerBenefitsCalculation getLaborLedgerBenefitsCalculation(String laborBenefitRateCategoryCode) { return SpringContext.getBean(LaborBenefitsCalculationService.class).getBenefitsCalculation(universityFiscalYear, chartOfAccountsCode, financialObjectBenefitsTypeCode,laborBenefitRateCategoryCode); } /** * @see org.kuali.kfs.integration.businessobject.LaborLedgerPositionObjectBenefit#setLaborLedgerBenefitsCalculation(org.kuali.kfs.integration.businessobject.LaborLedgerBenefitsCalculation) */ public void setLaborLedgerBenefitsCalculation(LaborLedgerBenefitsCalculation laborLedgerBenefitsCalculation) { benefitsCalculation = (BenefitsCalculation)laborLedgerBenefitsCalculation; } /** * Gets the laborBenefitRateCategoryCode attribute. * @return Returns the laborBenefitRateCategoryCode. */ public String getLaborBenefitRateCategoryCode() { if(StringUtils.isEmpty(laborBenefitRateCategoryCode)){ ParameterService parameterService = SpringContext.getBean(ParameterService.class); laborBenefitRateCategoryCode = StringUtils.defaultString(parameterService.getParameterValueAsString(Account.class, LaborConstants.BenefitCalculation.DEFAULT_BENEFIT_RATE_CATEGORY_CODE_PARAMETER)); } return laborBenefitRateCategoryCode; } /** * Sets the laborBenefitRateCategoryCode attribute value. * @param laborBenefitRateCategoryCode The laborBenefitRateCategoryCode to set. */ public void setLaborBenefitRateCategoryCode(String laborBenefitRateCategoryCode) { this.laborBenefitRateCategoryCode = laborBenefitRateCategoryCode; } }