001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.bc.document.service.impl; 017 018 import org.kuali.kfs.module.bc.document.dataaccess.BenefitsCalculationDao; 019 import org.kuali.kfs.module.bc.document.service.BenefitsCalculationService; 020 import org.kuali.kfs.sys.service.OptionsService; 021 import org.kuali.rice.kns.service.KualiConfigurationService; 022 import org.springframework.transaction.annotation.Transactional; 023 024 /** 025 * This class implements the BenefitsCalculationService interface 026 */ 027 @Transactional 028 public class BenefitsCalculationServiceImpl implements BenefitsCalculationService { 029 030 private KualiConfigurationService kualiConfigurationService; 031 private BenefitsCalculationDao benefitsCalculationDao; 032 private OptionsService optionsService; 033 034 /** 035 * @see org.kuali.kfs.module.bc.document.service.BenefitsCalculationService#getBenefitsCalculationDisabled() 036 */ 037 public boolean isBenefitsCalculationDisabled() { 038 // Note: for now just return false, implement application parameter 039 // if decision is made to implement this functionality as an enhancement 040 return false; 041 042 // return kualiConfigurationService.getApplicationParameterIndicator(KFSConstants.ParameterGroups.SYSTEM, 043 // BCConstants.DISABLE_BENEFITS_CALCULATION_FLAG); 044 } 045 046 /** 047 * @see org.kuali.kfs.module.bc.document.service.BenefitsCalculationService#calculateAnnualBudgetConstructionGeneralLedgerBenefits(java.lang.String, 048 * java.lang.Integer, java.lang.String, java.lang.String, java.lang.String) 049 */ 050 051 public void calculateAnnualBudgetConstructionGeneralLedgerBenefits(String documentNumber, Integer fiscalYear, String chartOfAccounts, String accountNumber, String subAccountNumber) { 052 /** 053 * do nothing if benefits calculation is disabled 054 */ 055 if (isBenefitsCalculationDisabled()) 056 return; 057 /** 058 * get the financial object type expenditure/expense 059 */ 060 String finObjTypeExpenditureexpCd = optionsService.getOptions(fiscalYear).getFinObjTypeExpenditureexpCd(); 061 /** 062 * calculate annual benefits 063 */ 064 benefitsCalculationDao.calculateAnnualBudgetConstructionGeneralLedgerBenefits(documentNumber, fiscalYear, chartOfAccounts, accountNumber, subAccountNumber, finObjTypeExpenditureexpCd); 065 } 066 067 /** 068 * @see org.kuali.kfs.module.bc.document.service.BenefitsCalculationService#calculateMonthlyBudgetConstructionGeneralLedgerBenefits(java.lang.String, 069 * java.lang.Integer, java.lang.String, java.lang.String, java.lang.String) 070 */ 071 public void calculateMonthlyBudgetConstructionGeneralLedgerBenefits(String documentNumber, Integer fiscalYear, String chartOfAccounts, String accountNumber, String subAccountNumber) { 072 /** 073 * do nothing if benefits calculation is disabled 074 */ 075 if (isBenefitsCalculationDisabled()) 076 return; 077 /** 078 * get the financial object type expenditure/expense 079 */ 080 String finObjTypeExpenditureexpCd = optionsService.getOptions(fiscalYear).getFinObjTypeExpenditureexpCd(); 081 /** 082 * calculate monthly benefits (assumes annual benefits have already been calculated 083 */ 084 benefitsCalculationDao.calculateMonthlyBudgetConstructionGeneralLedgerBenefits(documentNumber, fiscalYear, chartOfAccounts, accountNumber, subAccountNumber, finObjTypeExpenditureexpCd); 085 } 086 087 /** 088 * @see org.kuali.kfs.module.bc.document.service.BenefitsCalculationService#calculateAllBudgetConstructionGeneralLedgerBenefits(java.lang.String, 089 * java.lang.Integer, java.lang.String, java.lang.String, java.lang.String) 090 */ 091 public void calculateAllBudgetConstructionGeneralLedgerBenefits(String documentNumber, Integer fiscalYear, String chartOfAccounts, String accountNumber, String subAccountNumber) { 092 /** 093 * do nothing if benefits calculation is disabled 094 */ 095 if (isBenefitsCalculationDisabled()) 096 return; 097 /** 098 * get the financial object type expenditure/expense 099 */ 100 String finObjTypeExpenditureexpCd = optionsService.getOptions(fiscalYear).getFinObjTypeExpenditureexpCd(); 101 /** 102 * call both annual and monthly calculations (order is important) 103 */ 104 benefitsCalculationDao.calculateAnnualBudgetConstructionGeneralLedgerBenefits(documentNumber, fiscalYear, chartOfAccounts, accountNumber, subAccountNumber, finObjTypeExpenditureexpCd); 105 benefitsCalculationDao.calculateMonthlyBudgetConstructionGeneralLedgerBenefits(documentNumber, fiscalYear, chartOfAccounts, accountNumber, subAccountNumber, finObjTypeExpenditureexpCd); 106 } 107 108 109 /** 110 * Gets the kualiConfigurationService attribute. 111 * 112 * @return Returns the kualiConfigurationService. 113 */ 114 public KualiConfigurationService getKualiConfigurationService() { 115 return kualiConfigurationService; 116 } 117 118 /** 119 * Sets the kualiConfigurationService attribute value. 120 * 121 * @param kualiConfigurationService The kualiConfigurationService to set. 122 */ 123 public void setKualiConfigurationService(KualiConfigurationService kualiConfigurationService) { 124 this.kualiConfigurationService = kualiConfigurationService; 125 } 126 127 /** 128 * This method allows spring to initialize the Dao, so we don't have to look up the bean on each call from the application 129 * 130 * @param benefitsCalculationDao - the Dao for benefits calculation 131 */ 132 public void setBenefitsCalculationDao(BenefitsCalculationDao benefitsCalculationDao) { 133 this.benefitsCalculationDao = benefitsCalculationDao; 134 } 135 136 /** 137 * use this to return the "Expenditures/Expense" financial object type code from the options table this must be done by fiscal 138 * year, so unfortunately we have to make one call to OJB whenever one of the methods that needs this constant is called. 139 * 140 * @param optionsService 141 */ 142 143 public void setOptionsService(OptionsService optionsService) { 144 this.optionsService = optionsService; 145 } 146 147 148 }