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.sys.dataaccess;
017
018 import java.util.Collection;
019 import java.util.Iterator;
020 import java.util.Map;
021
022 import org.kuali.kfs.coa.businessobject.Account;
023 import org.kuali.kfs.gl.businessobject.Balance;
024 import org.kuali.kfs.gl.businessobject.Encumbrance;
025 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
026 import org.kuali.rice.kns.util.KualiDecimal;
027
028 /**
029 * This interface defines basic methods that GeneralLedgerPendingEntry Dao's must provide
030 */
031 public interface GeneralLedgerPendingEntryDao {
032
033 /**
034 * Get summary of amounts in the pending entry table
035 *
036 * @param universityFiscalYear
037 * @param chartOfAccountsCode
038 * @param accountNumber
039 * @param objectCodes
040 * @param balanceTypeCodes
041 * @param isDebit
042 * @return
043 */
044 public KualiDecimal getTransactionSummary(Collection universityFiscalYears, String chartOfAccountsCode, String accountNumber, Collection objectCodes, Collection balanceTypeCodes, boolean isDebit);
045
046 /**
047 * Get summary of amounts in the pending entry table
048 *
049 * @param universityFiscalYear
050 * @param chartOfAccountsCode
051 * @param accountNumber
052 * @param objectTypeCodes
053 * @param balanceTypeCodes
054 * @param acctSufficientFundsFinObjCd
055 * @param isDebit
056 * @param isYearEnd
057 * @return
058 */
059 public KualiDecimal getTransactionSummary(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, Collection objectTypeCodes, Collection balanceTypeCodes, String acctSufficientFundsFinObjCd, boolean isDebit, boolean isYearEnd);
060
061 /**
062 * Get summary of amounts in the pending entry table
063 *
064 * @param universityFiscalYear
065 * @param chartOfAccountsCode
066 * @param accountNumber
067 * @param objectTypeCodes
068 * @param balanceTypeCodes
069 * @param acctSufficientFundsFinObjCd
070 * @param isYearEnd
071 * @return
072 */
073 public KualiDecimal getTransactionSummary(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, Collection objectTypeCodes, Collection balanceTypeCodes, String acctSufficientFundsFinObjCd, boolean isYearEnd);
074
075 /**
076 * Find Pending Entries
077 *
078 * @param fieldValues
079 * @param isApproved
080 * @return
081 */
082 public Collection findPendingEntries(Map fieldValues, boolean isApproved);
083
084 /**
085 * @param documentHeaderId
086 * @param transactionLedgerEntrySequenceNumber
087 * @return a pending ledger entry
088 */
089 public GeneralLedgerPendingEntry getByPrimaryId(String documentHeaderId, Integer transactionLedgerEntrySequenceNumber);
090
091 /**
092 * @param generalLedgerPendingEntry
093 */
094 public void save(GeneralLedgerPendingEntry generalLedgerPendingEntry);
095
096 /**
097 * Delete all pending entries for a given document
098 *
099 * @param documentHeaderId
100 */
101 public void delete(String documentHeaderId);
102
103 /**
104 * Delete all pending entries based on the document approved code
105 *
106 * @param financialDocumentApprovedCode
107 */
108 public void deleteByFinancialDocumentApprovedCode(String financialDocumentApprovedCode);
109
110 /**
111 * This method retrieves all approved pending ledger entries
112 *
113 * @return all approved pending ledger entries
114 */
115 public Iterator findApprovedPendingLedgerEntries();
116
117 /**
118 * This method counts all approved pending ledger entries by account
119 *
120 * @param account the given account
121 * @return count of entries
122 */
123 public int countPendingLedgerEntries(Account account);
124
125 /**
126 * This method retrieves all pending ledger entries for the given encumbrance
127 *
128 * @param encumbrance the encumbrance entry in the GL_Encumbrance_T table
129 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
130 * @return all pending ledger entries of the given encumbrance
131 */
132 public Iterator findPendingLedgerEntries(Encumbrance encumbrance, boolean isApproved);
133
134 /**
135 * This method retrieves all pending ledger entries for the given encumbrance
136 *
137 * @param balance the balance entry
138 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
139 * @param isConsolidated consolidation option is applied or not
140 * @return all pending ledger entries of the given balance
141 */
142 public Iterator findPendingLedgerEntries(Balance balance, boolean isApproved, boolean isConsolidated);
143
144 /**
145 * This method retrieves all pending ledger entries matching the given entry criteria
146 *
147 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
148 * @param fieldValues the input fields and values
149 * @return all pending ledger entries matching the given balance criteria
150 */
151 public Iterator findPendingLedgerEntriesForEntry(Map fieldValues, boolean isApproved);
152
153 /**
154 * This method retrieves all pending ledger entries matching the given balance criteria
155 *
156 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
157 * @param fieldValues the input fields and values
158 * @return all pending ledger entries matching the given balance criteria
159 */
160 public Iterator findPendingLedgerEntriesForBalance(Map fieldValues, boolean isApproved);
161
162 /**
163 * This method retrieves all pending ledger entries matching the given cash balance criteria
164 *
165 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
166 * @param fieldValues the input fields and values
167 * @return all pending ledger entries matching the given cash balance criteria
168 */
169 public Iterator findPendingLedgerEntriesForCashBalance(Map fieldValues, boolean isApproved);
170
171 /**
172 * This method retrieves all pending ledger entries that may belong to encumbrance table in the future
173 *
174 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
175 * @param fieldValues the input fields and values
176 * @return all pending ledger entries that may belong to encumbrance table
177 */
178 public Iterator findPendingLedgerEntriesForEncumbrance(Map fieldValues, boolean isApproved);
179
180 /**
181 * This method retrieves all pending ledger entries that may belong to the given account balance record in the future
182 *
183 * @param fieldValues the input fields and values
184 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
185 * @return all pending ledger entries that may belong to encumbrance table
186 */
187 public Iterator findPendingLedgerEntrySummaryForAccountBalance(Map fieldValues, boolean isApproved);
188
189 /**
190 * This method retrieves all pending ledger entries that may belong to the given account balance record in the future
191 *
192 * @param fieldValues the input fields and values
193 * @param isApproved the flag that indicates whether the pending entries are approved or don't care
194 * @return all pending ledger entries that may belong to encumbrance table
195 */
196 public Iterator findPendingLedgerEntriesForAccountBalance(Map fieldValues, boolean isApproved);
197
198 }