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 import java.io.IOException;
019
020 /**
021 * distribute the request amount for a set of budget construction general ledger rows evenly among twelve monthly periods in a
022 * budget construction monthly budget row with the same key. if the amount to be spread is not divisible by 12, the adjustment will
023 * be added or subtracted from the amount in the first monthly period.
024 */
025
026 public interface BudgetConstructionMonthlyBudgetsCreateDeleteService {
027
028 /**
029 * remove the existing revenue monthly budgets for this key
030 *
031 * @param documentNumber the budget construction document number
032 * @param fiscalYear the fiscal year for which the budget is being built. this and the fields below are the key to a budget
033 * construction document
034 * @param chartCode
035 * @param accountNumber
036 * @param subAccountNumber
037 * @return FAILED if the SQL could not be built, BENEFITS if benefits need to be recalculated, NO_BENEFITS otherwise
038 */
039 public void deleteBudgetConstructionMonthlyBudgetsRevenue(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber) throws IOException, NoSuchFieldException;
040
041 /**
042 * remove the existing expenditure monthly budgets for this key
043 *
044 * @param documentNumber the budget construction document number
045 * @param fiscalYear the fiscal year for which the budget is being built. this and the fields below are the key to a budget
046 * construction document
047 * @param chartCode
048 * @param accountNumber
049 * @param subAccountNumber
050 * @return FAILED if the SQL could not be built, BENEFITS if benefits need to be recalculated, NO_BENEFITS otherwise
051 */
052 public void deleteBudgetConstructionMonthlyBudgetsExpenditure(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber) throws IOException, NoSuchFieldException;
053
054 /**
055 * spread the revenue for this key evenly over 12 months, with any remainder mod 12 added to the first month
056 *
057 * @param documentNumber the budget construction document number
058 * @param fiscalYear the fiscal year for which the budget is being built. this and the fields below are the key to a budget
059 * construction document
060 * @param chartCode
061 * @param accountNumber
062 * @param subAccountNumber
063 * @return FAILED if the SQL could not be built, BENEFITS if benefits need to be recalculated, NO_BENEFITS otherwise
064 */
065 public void spreadBudgetConstructionMonthlyBudgetsRevenue(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber) throws IOException, NoSuchFieldException;
066
067 /**
068 * spread the expenditures for this key evenly over 12 months, with any reaminder mod 12 added to the first month
069 *
070 * @param documentNumber the budget construction document number
071 * @param fiscalYear the fiscal year for which the budget is being built. this and the fields below are the key to a budget
072 * construction document
073 * @param chartCode
074 * @param accountNumber
075 * @param subAccountNumber
076 * @return FAILED if the SQL could not be built, BENEFITS if benefits need to be recalculated, NO_BENEFITS otherwise
077 */
078 public boolean spreadBudgetConstructionMonthlyBudgetsExpenditure(String documentNumber, Integer fiscalYear, String chartCode, String accountNumber, String subAccountNumber) throws IOException, NoSuchFieldException;
079
080 }