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.dataaccess;
017    
018    
019    /**
020     * 
021     * provides the data access methods to distribute a set of budget construction general ledger amounts among tweleve monthly periods in a budget
022     * construction monthly budget row with the same key. any rounding errors are added/subtracted from the first monthly period, so the total of the
023     * monthly periods equals the original amount distributed
024     */
025    public interface BudgetConstructionMonthlyBudgetsCreateDeleteDao {
026    
027        /**
028         * 
029         * remove the existing revenue monthly budgets for this key
030         * @param documentNumber  the budget construction document number
031         * @param fiscalYear      the fiscal year for which the budget is being built
032         * @param chartCode
033         * @param accountNumber
034         * @param subAccountNumber
035         */
036          public void deleteBudgetConstructionMonthlyBudgetsRevenue(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber);
037          
038          /**
039           * 
040           * remove the existing expenditure monthly budgets for this key
041           * @param documentNumber  the budget construction document number
042           * @param fiscalYear      the fiscal year for which the budget is being built
043           * @param chartCode
044           * @param accountNumber
045           * @param subAccountNumber
046           */ 
047           public void deleteBudgetConstructionMonthlyBudgetsExpenditure(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber);
048    
049           /**
050            * 
051            * spread the revenue for this key evenly over 12 months, with any remainder mod 12 added to the first month
052            * @param documentNumber  the budget construction document number
053            * @param fiscalYear      the fiscal year for which the budget is being built
054            * @param chartCode
055            * @param accountNumber
056            * @param subAccountNumber
057            */
058           public void spreadBudgetConstructionMonthlyBudgetsRevenue(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber);
059    
060           /**
061            * 
062            * spread the expenditures for this key evenly over 12 months, with any reaminder mod 12 added to the first month 
063            * @param documentNumber  the budget construction document number
064            * @param fiscalYear      the fiscal year for which the budget is being built
065            * @param chartCode
066            * @param accountNumber
067            * @param subAccountNumber
068            * @return true benefits need to be recomputed, false otherwise
069            */
070           public boolean spreadBudgetConstructionMonthlyBudgetsExpenditure(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber);
071           
072    }