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.fp.document.dataaccess;
017
018 import java.util.List;
019
020 import org.kuali.kfs.fp.businessobject.CashieringItemInProcess;
021 import org.kuali.kfs.fp.businessobject.Check;
022 import org.kuali.kfs.fp.businessobject.CoinDetail;
023 import org.kuali.kfs.fp.businessobject.CurrencyDetail;
024
025 public interface CashManagementDao {
026
027 /**
028 * This method returns a list of open items in process for a given campus code
029 *
030 * @param campusCode the campus code to use to search open items in process for
031 * @return a list of open items in process
032 */
033 public List<CashieringItemInProcess> findOpenItemsInProcessByCampusCode(String campusCode);
034
035 /**
036 * This finds items in process associated with the given campus code closed within the past 30 days.
037 *
038 * @param campusCode the campus code that the found items in process should be associated with
039 * @return a list of CashieringItemInProcess records
040 */
041 public List<CashieringItemInProcess> findRecentlyClosedItemsInProcess(String campusCode);
042
043 /**
044 * Retrieves all currency detail records with the given document number, document type code, and cashiering record source
045 *
046 * @param documentNumber the document number this currency detail was associated with
047 * @param documentTypeCode the type code of that document
048 * @param cashieringRecordSource the cashiering record source
049 * @return a list of currency details matching that criteria
050 */
051 public CurrencyDetail findCurrencyDetailByCashieringRecordSource(String documentNumber, String documentTypeCode, String cashieringRecordSource);
052
053 /**
054 * Retrieves all coin detail records with the given document number, document type code, and cashiering record source
055 *
056 * @param documentNumber the document the coin details were associated with
057 * @param documentTypeCode the type of that document
058 * @param cashieringRecordSource the cashiering record source
059 * @return a list of coin details meeting those criteria
060 */
061 public CoinDetail findCoinDetailByCashieringRecordSource(String documentNumber, String documentTypeCode, String cashieringRecordSource);
062
063 /**
064 * Retrieves from the database any undeposited cashiering transaction checks associated with the given cash management document
065 *
066 * @param documentNumber the document number of a cash management document that cashiering transaction checks may be associated
067 * with
068 * @return a list of checks associated with the document
069 */
070 public List<Check> selectUndepositedCashieringChecks(String documentNumber);
071
072 /**
073 * Retrieves from the database all cashiering transaction checks deposited for a given deposit
074 *
075 * @param documentNumber the document number of a cash management document that cashiering transaction checks have been
076 * deposited for
077 * @param depositLineNumber the line number of the deposit to find checks deposited for
078 * @return a list of checks associated with the given deposit
079 */
080 public List<Check> selectCashieringChecksForDeposit(String documentNumber, Integer depositLineNumber);
081
082 /**
083 * Retrieves all deposited cashiering checks from the database
084 *
085 * @param documentNumber the document to get checks associated with
086 * @return a list of deposited checks
087 */
088 public List<Check> selectDepositedCashieringChecks(String documentNumber);
089
090 /**
091 * This method retrieves all currency details associated with a cash management document
092 *
093 * @param documentNumber the document number of the cash management document to get currency details for
094 * @return a list of currency details
095 */
096 public List<CurrencyDetail> getAllCurrencyDetails(String documentNumber);
097
098 /**
099 * This method gets all coin details for a particular document number, irregardless of cashiering record source
100 *
101 * @param documentNumber the document number to find cash details for
102 * @return hopefully, a bunch of coin details
103 */
104 public List<CoinDetail> getAllCoinDetails(String documentNumber);
105
106 /**
107 * Select the next available check line number for the given cash management document
108 *
109 * @param documentNumber the document number of a cash management document
110 * @return the next available check line number for cashiering checks
111 */
112 public Integer selectNextAvailableCheckLineNumber(String documentNumber);
113 }