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;
017    
018    /**
019     * This class defines methods that a Benefits Calculation Service must provide The Benefits Calculation Service supports
020     * functionality related to calculating benefits request amounts for a Budget Construction Document (account/sub-account). This
021     * includes calculations for annual and monthly amounts. Monthly amounts are only calculated when associated monthly request amounts
022     * exist.
023     */
024    public interface BenefitsCalculationService {
025    
026        /**
027         * This method returns the disabled setting of the System Parameter controlling Budget module Benefits Calculation. Disabling
028         * Benefits Calculation will cause any UI controls related to the Benefits Calculation functionality to not be displayed.
029         * Disabling will also cause associated business rules checks to behave differently or not be run.
030         * 
031         * @return
032         */
033        public boolean isBenefitsCalculationDisabled();
034        
035        /**
036         * 
037         * calculates the annual benefits for the budget construction general ledger key passed in, and stores them in the database
038         * @param documentNumber  the string containing the document number
039         * @param fiscalYear      the integer value of the fiscal year
040         * @param chartOfAccounts the string containing the chart of accounts
041         * @param accountNumber   the string containing the account number
042         * @param subAccountNumber the string containing the sub account number
043         */
044        public void calculateAnnualBudgetConstructionGeneralLedgerBenefits(String documentNumber,
045                                                                           Integer fiscalYear,
046                                                                           String chartOfAccounts,
047                                                                           String accountNumber,
048                                                                           String subAccountNumber);
049        /**
050         * 
051         * calculates the monthly budget benefits for the budget construction general ledger key passed in, and stores them in the database
052         * @param documentNumber  the string containing the document number
053         * @param fiscalYear      the integer value of the fiscal year
054         * @param chartOfAccounts the string containing the chart of accounts
055         * @param accountNumber   the string containing the account number
056         * @param subAccountNumber the string containing the sub account number 
057         * 
058         */
059        public void calculateMonthlyBudgetConstructionGeneralLedgerBenefits(String documentNumber,
060                                                                            Integer fiscalYear,
061                                                                            String chartOfAccounts,
062                                                                            String accountNumber,
063                                                                            String subAccountNumber);
064    
065    
066        /**
067         * 
068         * calculates both the monthly budget and the annual budget budget construction general ledger benefits for the key passed in, and 
069         * stores them in the database.
070         * @param documentNumber  the string containing the document number
071         * @param fiscalYear      the integer value of the fiscal year
072         * @param chartOfAccounts the string containing the chart of accounts
073         * @param accountNumber   the string containing the account number
074         * @param subAccountNumber
075         */
076        public void calculateAllBudgetConstructionGeneralLedgerBenefits(String documentNumber,
077                                                                        Integer fiscalYear,
078                                                                        String chartOfAccounts,
079                                                                        String accountNumber,
080                                                                        String subAccountNumber);
081    
082    }