/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.gl.dataaccess;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.kuali.kfs.gl.businessobject.AccountBalance;
import org.kuali.kfs.gl.businessobject.Transaction;
import org.kuali.kfs.sys.businessobject.SystemOptions;
import org.kuali.kfs.sys.businessobject.UniversityDate;
/**
* An interface that declares methods needed for AccountBalances to interact with the database
*/
public interface AccountBalanceDao {
/**
* Given a transaction, finds a matching account balance in the database
*
* @param t a transaction to find an appropriate related account balance for
* @return an appropriate account balance
*/
public AccountBalance getByTransaction(Transaction t);
/**
* This method finds the available account balances according to input fields and values
*
* @param fieldValues the input fields and values
* @return the summary records of account balance entries
*/
public Iterator findConsolidatedAvailableAccountBalance(Map fieldValues);
/**
* This method finds the available account balances according to input fields and values
*
* @param fieldValues the input fields and values
* @return account balance entries
*/
public Iterator findAvailableAccountBalance(Map fieldValues);
/**
* Get available balances by consolidation for specific object types
*
* @param objectTypes the object types that reported account balances must have
* @param universityFiscalYear the university fiscal year of account balances to find
* @param chartOfAccountsCode the chart of accounts of account balances to find
* @param accountNumber the account number of account balances to find
* @param isExcludeCostShare whether cost share entries should be excluded from this inquiry
* @param isConsolidated whether the results of this should be consolidated or not
* @param pendingEntriesCode whether to include no pending entries, approved pending entries, or all pending entries
* @param options system options
* @param today current university date
* @return a List of Maps with the appropriate query results
*/
public List findAccountBalanceByConsolidationByObjectTypes(String[] objectTypes, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, boolean isExcludeCostShare, boolean isConsolidated, int pendingEntriesCode, SystemOptions options, UniversityDate today);
/**
* Get available balances by level
*
* @param universityFiscalYear the university fiscal year of account balances to find
* @param chartOfAccountsCode the chart of accounts of account balances to find
* @param accountNumber the account number of account balances to find
* @param financialConsolidationObjectCode the consolidation code of account balances to find
* @param isCostShareExcluded whether cost share entries should be excluded from this inquiry
* @param isConsolidated whether the results of this should be consolidated or not
* @param pendingEntryCode
* @param today the current university date
* @return a List of Mapswith the appropriate query results
*/
public List findAccountBalanceByLevel(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String financialConsolidationObjectCode, boolean isCostShareExcluded, boolean isConsolidated, int pendingEntryCode, UniversityDate today, SystemOptions options);
/**
* Get available balances by object
*
* @param universityFiscalYear the university fiscal year of account balances to find
* @param chartOfAccountsCode the chart of accounts of account balances to find
* @param accountNumber the account number of account balances to find
* @param financialObjectLevelCode the object level code of account balances to find
* @param financialReportingSortCode
* @param isCostShareExcluded whether cost share entries should be excluded from this inquiry
* @param isConsolidated whether the results of this should be consolidated or not
* @param pendingEntryCode
* @param today the current university date
* @return a List of Maps with the appropriate query results
*/
public List findAccountBalanceByObject(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String financialObjectLevelCode, String financialReportingSortCode, boolean isCostShareExcluded, boolean isConsolidated, int pendingEntryCode, UniversityDate today, SystemOptions options);
/**
* Purge an entire fiscal year for a single chart.
*
* @param chartOfAccountsCode the chart of accounts code of account balances to purge
* @param year the fiscal year of account balances to purge
*/
public void purgeYearByChart(String chartOfAccountscode, int year);
/**
* @param year the given university fiscal year
* @return count of rows for the given fiscal year
*/
public Integer findCountGreaterOrEqualThan(Integer year);
}