/*
* 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.fp.document.dataaccess;
import java.util.List;
import org.kuali.kfs.fp.businessobject.CashieringItemInProcess;
import org.kuali.kfs.fp.businessobject.Check;
import org.kuali.kfs.fp.businessobject.CoinDetail;
import org.kuali.kfs.fp.businessobject.CurrencyDetail;
public interface CashManagementDao {
/**
* This method returns a list of open items in process for a given campus code
*
* @param campusCode the campus code to use to search open items in process for
* @return a list of open items in process
*/
public List<CashieringItemInProcess> findOpenItemsInProcessByCampusCode(String campusCode);
/**
* This finds items in process associated with the given campus code closed within the past 30 days.
*
* @param campusCode the campus code that the found items in process should be associated with
* @return a list of CashieringItemInProcess records
*/
public List<CashieringItemInProcess> findRecentlyClosedItemsInProcess(String campusCode);
/**
* Retrieves all currency detail records with the given document number, document type code, and cashiering record source
*
* @param documentNumber the document number this currency detail was associated with
* @param documentTypeCode the type code of that document
* @param cashieringStatus the cashiering status
* @return a list of currency details matching that criteria
*/
public CurrencyDetail findCurrencyDetailByCashieringStatus(String documentNumber, String documentTypeCode, String cashieringStatus);
/**
* Retrieves all coin detail records with the given document number, document type code, and cashiering record source
*
* @param documentNumber the document the coin details were associated with
* @param documentTypeCode the type of that document
* @param cashieringStatus the cashiering status
* @return a list of coin details meeting those criteria
*/
public CoinDetail findCoinDetailByCashieringStatus(String documentNumber, String documentTypeCode, String cashieringStatus);
/**
* Retrieves from the database any undeposited cashiering transaction checks associated with the given cash management document
*
* @param documentNumber the document number of a cash management document that cashiering transaction checks may be associated
* with
* @return a list of checks associated with the document
*/
public List<Check> selectUndepositedCashieringChecks(String documentNumber);
/**
* Retrieves from the database all cashiering transaction checks deposited for a given deposit
*
* @param documentNumber the document number of a cash management document that cashiering transaction checks have been
* deposited for
* @param depositLineNumber the line number of the deposit to find checks deposited for
* @return a list of checks associated with the given deposit
*/
public List<Check> selectCashieringChecksForDeposit(String documentNumber, Integer depositLineNumber);
/**
* Retrieves all deposited cashiering checks from the database
*
* @param documentNumber the document to get checks associated with
* @return a list of deposited checks
*/
public List<Check> selectDepositedCashieringChecks(String documentNumber);
/**
* This method retrieves all currency details associated with a cash management document
*
* @param documentNumber the document number of the cash management document to get currency details for
* @return a list of currency details
*/
public List<CurrencyDetail> getAllCurrencyDetails(String documentNumber);
/**
* This method gets all coin details for a particular document number, irregardless of cashiering record source
*
* @param documentNumber the document number to find cash details for
* @return hopefully, a bunch of coin details
*/
public List<CoinDetail> getAllCoinDetails(String documentNumber);
/**
* Select the next available check line number for the given cash management document
*
* @param documentNumber the document number of a cash management document
* @return the next available check line number for cashiering checks
*/
public Integer selectNextAvailableCheckLineNumber(String documentNumber);
}