001/*
002 * Copyright 2006 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 */
016package org.kuali.ole.gl.batch.dataaccess;
017
018import java.util.List;
019
020import org.kuali.rice.core.api.util.type.KualiDecimal;
021
022/**
023 * A DAO interface.  This one seems to refer to an old FIS issue, M113, which was: "On account sufficient funds checking, what needs to be done between beginning of fiscal year and loading of beginning balances?"
024 * Therefore, this DAO is to find year end balance totals, as far as I can tell
025 */
026public interface SufficientFundsDao {
027    /**
028     * Calculate the Prior Fiscal Year Budget total
029     * 
030     * @param universityFiscalYear the university fiscal year of sufficient funds balances that will be summarized
031     * @param chartOfAccountCode the chart of accounts code of sufficient fund balance records that will be summarized
032     * @param accountNumber the account number of sufficient fund balances that will be summarized
033     * @return the sum of the prior fiscal year budget
034     */
035    public KualiDecimal calculateM113PfyrBudget(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber);
036
037    /**
038     * Calculate the prior fiscal year encumbrnace total
039     * 
040     * 
041     * @param universityFiscalYear the university fiscal year of sufficient funds balances to summarize
042     * @param chartOfAccountsCode the chart of accounts code of sufficient funds balances to summarize
043     * @param accountNumber the account number of sufficient fund balances to summarize
044     * @return the prior fiscal year encumbrance total
045     */
046    public KualiDecimal calculateM113PfyrEncum(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber);
047
048    /**
049     * Calculate the prior fiscal year pending actual amount
050     * 
051     * @param universityFiscalYear the university fiscal year of sufficient funds balances to summarize
052     * @param chartOfAccountsCode the chart of accounts code of sufficient funds balances to summarize
053     * @param accountNumber the account number of sufficient fund balances to summarize
054     * @param specialFinancialObjectCodes include only these financial object codes
055     * @param financialObjectCodeForCashInBank the object code for cash in the bank
056     * @return the prior fiscal year pending actual amount
057     */
058    public KualiDecimal calculateM113PendActual(boolean financialBeginBalanceLoadInd, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, List specialFinancialObjectCodes, String financialObjectCodeForCashInBank);
059
060    /**
061     * Calculates the current pending actual
062     * 
063     * @param isYearEndDocument should year end documents be included?
064     * @param actualFinancialBalanceTypeCd the actual balance type code
065     * @param universityFiscalYear the university fiscal year of sufficient funds balances to summarize
066     * @param chartOfAccountsCode the chart of accounts code of sufficient funds balances to summarize
067     * @param accountNumber the account number of sufficient fund balances to summarize
068     * @param acctSufficientFundsFinObjCd the object code for sufficient funds
069     * @param expenditureCodes object codes that represent expenditures
070     * @return the current pending actual total
071     */
072    public KualiDecimal calculatePendActual(boolean isYearEndDocument, String actualFinancialBalanceTypeCd, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String acctSufficientFundsFinObjCd, List expenditureCodes);
073
074    /**
075     * calculates the current year pending budget total
076     * 
077     * @param isYearEndDocument should year end documents be included?
078     * @param budgetCheckingBalanceTypeCd the budget balance type code
079     * @param universityFiscalYear the university fiscal year of sufficient funds balances to summarize
080     * @param chartOfAccountsCode the chart of accounts code of sufficient funds balances to summarize
081     * @param accountNumber the account number of sufficient fund balances to summarize
082     * @param acctSufficientFundsFinObjCd the object code for sufficient funds
083     * @param expenditureCodes object codes that represent expenditures
084     * @return calculates the current year pending budget total
085     */
086    public KualiDecimal calculatePendBudget(boolean isYearEndDocument, String budgetCheckingBalanceTypeCd, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String acctSufficientFundsFinObjCd, List expenditureCodes);
087
088    /**
089     * Calculates the current year pending encumbrance total
090     * 
091     * @param isYearEndDocument should year end documents be included?
092     * @param extrnlEncumFinBalanceTypCd the external encumbrance balance type
093     * @param intrnlEncumFinBalanceTypCd the internal encumbrance balance type
094     * @param preencumbranceFinBalTypeCd the pre-encumbrance balance type
095     * @param universityFiscalYear the university fiscal year of sufficient funds balances to summarize
096     * @param chartOfAccountsCode the chart of accounts code of sufficient funds balances to summarize
097     * @param accountNumber the account number of sufficient fund balances to summarize
098     * @param acctSufficientFundsFinObjCd the object code for sufficient funds
099     * @param expenditureCodes object codes that represent expenditures
100     * @return the current year pending encumbrance total
101     */
102    public KualiDecimal calculatePendEncum(boolean isYearEndDocument, String extrnlEncumFinBalanceTypCd, String intrnlEncumFinBalanceTypCd, String preencumbranceFinBalTypeCd, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String acctSufficientFundsFinObjCd, List expenditureCodes);
103
104    /**
105     * Purge table by year/chart
106     * 
107     * @param chart the chart of sufficient fund records to purge
108     * @param year the year of sufficient fund records to purge
109     */
110    public void purgeYearByChart(String chart, int year);
111}