/* * 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.service; import org.kuali.kfs.integration.ld.LaborLedgerObject; import org.kuali.kfs.module.ld.businessobject.BenefitsCalculation; import org.kuali.kfs.module.ld.businessobject.PositionObjectBenefit; import org.kuali.rice.core.api.util.type.KualiDecimal; /** * The interface provides its clients with access to the benefit calculation. * * @see org.kuali.kfs.module.ld.businessobject.BenefitsCalculation */ public interface LaborBenefitsCalculationService { /** * get the benefit calculation object based on the given information * * @param universityFiscalYear the given fiscal year * @param chartOfAccountsCode the given chart of accounts code * @param benefitTypeCode the given benefit type code * @return the benefit calculation object matching the given information */ public BenefitsCalculation getBenefitsCalculation(Integer universityFiscalYear, String chartOfAccountsCode, String benefitTypeCode); /** * get the benefit calculation object based on the given information * * @param universityFiscalYear the given fiscal year * @param chartOfAccountsCode the given chart of accounts code * @param benefitTypeCode the given benefit type code * @param laborBenefitRateCategorycode * @return the benefit calculation object matching the given information */ public BenefitsCalculation getBenefitsCalculation(Integer universityFiscalYear, String chartOfAccountsCode, String benefitTypeCode, String laborBenefitRateCategoryCode); /** * calculate the fringe benefit amount for the given labor object and salary amount * * @param laborLedgerObject the given labor object * @param salaryAmount the given salary amount * @param accountNumber * @param subAccountNumber * @return the fringe benefit amount for the given labor object and salary amount */ public KualiDecimal calculateFringeBenefit(LaborLedgerObject laborLedgerObject, KualiDecimal salaryAmount, String accountNumber, String subAccountNumber); /** * calculate the fringe benefit amount for the given object code and salary amount * * @param fiscalYear the year for object code record * @param chartCode the chart for object code record * @param objectCode the object code * @param salaryAmount amount to calculate benefits for * @param accountNumber * @param subAccountNumber * @return the fringe benefit amount */ public KualiDecimal calculateFringeBenefit(Integer fiscalYear, String chartCode, String objectCode, KualiDecimal salaryAmount, String accountNumber, String subAccountNumber); /** * calculate the fringe benefit amount from the given position object benefit and salary amount * * @param positionObjectBenefit the given position object benefit * @param salaryAmount the given salary amount * @param accountNumber * @param subAccountNumber * @return the fringe benefit amount for the given position object benefit and salary amount */ public KualiDecimal calculateFringeBenefit(PositionObjectBenefit positionObjectBenefit, KualiDecimal salaryAmount, String accountNumber, String subAccountNumber); /** * retrieves the benefit rate category code for the given account number. If the the account number has cost share sub accounts * the cost share account number is used for determining the category code * * @param chartOfAccountsCode - the chart of account code for the account * @param accountNumber - the account number to use for the category code lookup * @param subAccountNumber - the sub account number to use for category code lookup (for use with cost share accounts) * @return the associated benefit rate category code */ public String getBenefitRateCategoryCode(String chartOfAccountsCode, String accountNumber, String subAccountNumber); public String getCostSharingSourceAccountNumber(); public String getCostSharingSourceSubAccountNumber(); public String getCostSharingSourceAccountChartOfAccountsCode(); }