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 }