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.module.ld.dataaccess; 017 018 import java.util.Collection; 019 import java.util.Iterator; 020 import java.util.List; 021 import java.util.Map; 022 import java.util.Set; 023 024 import org.kuali.kfs.module.ld.businessobject.LedgerEntry; 025 026 /** 027 * This is the data access object for ledger entry. 028 * 029 * @see org.kuali.kfs.module.ld.businessobject.LedgerEntry 030 */ 031 public interface LaborLedgerEntryDao { 032 033 /** 034 * The sequence number is one of the primary keys of ledger entry. The entries can be grouped by other keys. This method is used 035 * to get the maximum sequence number in the group of entries. 036 * 037 * @param ledgerEntry the given ledger entry 038 * @return the maximum sequence number in a group of entries. If the group doesn't exist, return 0. 039 */ 040 Integer getMaxSquenceNumber(LedgerEntry ledgerEntry); 041 042 /** 043 * Find the ledger entries that satisfy the all entries in the given field-value pair 044 * 045 * @param fieldValues the given field-value pair 046 * @return the ledger entries that satisfy the all entries in the given field-value pair 047 */ 048 Iterator<LedgerEntry> find(Map<String, String> fieldValues); 049 050 /** 051 * save the given ledger entry into the underlying data store 052 * 053 * @param ledgerEntry the given ledger entry 054 */ 055 void save(LedgerEntry ledgerEntry); 056 057 /** 058 * find the employees who were paid based on a set of specified pay type within the given report periods. Here, a pay type can 059 * be determined by earn code and pay group. 060 * 061 * @param payPeriods the given pay periods 062 * @param balanceTypes the specified balance type codes 063 * @param earnCodePayGroupMap the combination of earn codes and pay groups, where pay group is the key and earn code set is the 064 * value 065 * @return the employees who were paid based on a set of specified pay type within the given report periods 066 */ 067 List<String> findEmployeesWithPayType(Map<Integer, Set<String>> payPeriods, List<String> balanceTypes, Map<String, Set<String>> earnCodePayGroupMap); 068 069 /** 070 * get the ledger entries for the given employee based on a set of specified pay type within the given report periods. Here, a pay type can 071 * be determined by earn code and pay group. 072 * 073 * @param emplid the given employee id 074 * @param payPeriods the given pay periods 075 * @param balanceTypes the specified balance type codes 076 * @param earnCodePayGroupMap the combination of earn codes and pay groups, where pay group is the key and earn code set is the 077 * value 078 * @return true if the given employee was paid based on a set of specified pay type within the given report periods; otherwise, false 079 */ 080 Collection<LedgerEntry> getLedgerEntriesForEmployeeWithPayType(String emplid, Map<Integer, Set<String>> payPeriods, List<String> balanceTypes, Map<String, Set<String>> earnCodePayGroupMap); 081 082 /** 083 * determine if the given employee is associated with a set of specified pay type within the given report periods. Here, a pay type can 084 * be determined by earn code and pay group. 085 * 086 * @param emplid the given employee id 087 * @param payPeriods the given pay periods 088 * @param balanceTypes the specified balance type codes 089 * @param earnCodePayGroupMap the combination of earn codes and pay groups, where pay group is the key and earn code set is the 090 * value 091 * @return true if the given employee was paid based on a set of specified pay type within the given report periods; otherwise, false 092 */ 093 boolean isEmployeeWithPayType(String emplid, Map<Integer, Set<String>> payPeriods, List<String> balanceTypes, Map<String, Set<String>> earnCodePayGroupMap); 094 095 /** 096 * delete the ledger entry records that were posted prior to the given fiscal year 097 * 098 * @param fiscalYear the given fiscal year 099 * @param chartOfAccountsCode the given chart of account code 100 */ 101 void deleteLedgerEntriesPriorToYear(Integer fiscalYear, String chartOfAccountsCode); 102 }