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.service; 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.EmployeeFunding; 025 import org.kuali.kfs.module.ld.businessobject.LaborBalanceSummary; 026 import org.kuali.kfs.module.ld.businessobject.LaborTransaction; 027 import org.kuali.kfs.module.ld.businessobject.LedgerBalance; 028 import org.kuali.kfs.module.ld.businessobject.LedgerBalanceForYearEndBalanceForward; 029 030 public interface LaborLedgerBalanceService { 031 032 /** 033 * @param fiscalYear the given fiscal year 034 * @return an Iterator over all balances for a given year 035 */ 036 public Iterator<LedgerBalance> findBalancesForFiscalYear(Integer fiscalYear); 037 038 /** 039 * @param fiscalYear the given fiscal year 040 * @param fieldValues the input fields and values 041 * @return an Iterator over all balances for a given year and search criteria 042 */ 043 public Iterator<LedgerBalance> findBalancesForFiscalYear(Integer fiscalYear, Map<String, String> fieldValues); 044 045 /** 046 * @param fiscalYear the given fiscal year 047 * @param fieldValues the input fields and values 048 * @param subFundGroupCodes the given list of qualified sub fund group codes 049 * @param fundGroupCodes the given list of qualified group codes 050 * @return an Iterator over all balances for a given year and search criteria that include the accounts of balances must belong 051 * to the given sub fund group or fund group 052 */ 053 public Iterator<LedgerBalanceForYearEndBalanceForward> findBalancesForFiscalYear(Integer fiscalYear, Map<String, String> fieldValues, List<String> subFundGroupCodes, List<String> fundGroupCodes); 054 055 /** 056 * This method gets the size of balance entries according to input fields and values 057 * 058 * @param fieldValues the input fields and values 059 * @param isConsolidated consolidation option is applied or not 060 * @return the size of balance entries 061 */ 062 public Iterator findBalance(Map fieldValues, boolean isConsolidated); 063 064 /** 065 * This method finds the summary records of balance entries according to input fields and values 066 * 067 * @param fieldValues the input fields and values 068 * @param isConsolidated consolidation option is applied or not 069 * @return the summary records of balance entries 070 */ 071 public Integer getBalanceRecordCount(Map fieldValues, boolean isConsolidated); 072 073 /** 074 * find a ledger balance from the given ledger balance collection with the given transaction information 075 * 076 * @param ledgerBalanceCollection the given ledger balance collection 077 * @param transaction the given transaction information 078 * @param keyList the given list of keys that need to be compared 079 * @return a matching ledger balance from the given ledger balance 080 */ 081 public <T extends LedgerBalance> T findLedgerBalance(Collection<T> ledgerBalanceCollection, LaborTransaction transaction, List<String> keyList); 082 083 /** 084 * find a ledger balance from the given ledger balance collection with the given transaction information 085 * 086 * @param ledgerBalanceCollection the given ledger balance collection 087 * @param transaction the given transaction information 088 * @return a matching ledger balance from the given ledger balance 089 */ 090 public <T extends LedgerBalance> T findLedgerBalance(Collection<T> ledgerBalanceCollection, LaborTransaction transaction); 091 092 /** 093 * convert the given transaction information into a ledger balance and add it into the given ledger balance collection with 094 * 095 * @param ledgerBalanceCollection the given ledger balance collection 096 * @param transaction the given transaction information 097 * @return the ledger balance that has been added; otherwise, null; 098 */ 099 public LedgerBalance addLedgerBalance(Collection<LedgerBalance> ledgerBalanceCollection, LaborTransaction transaction); 100 101 /** 102 * update the given ledger balance with the given transaction information 103 * 104 * @param ledgerBalance the given ledger balance 105 * @param transaction the given transaction information 106 */ 107 public <T extends LedgerBalance> void updateLedgerBalance(T ledgerBalance, LaborTransaction transaction); 108 109 /** 110 * find the funding by employee 111 * 112 * @param fieldValues the given field values 113 * @return the funding by employee 114 */ 115 public List<EmployeeFunding> findEmployeeFunding(Map fieldValues, boolean isConsolidated); 116 117 /** 118 * find the employee funding with the corresponding CSF trakers 119 * 120 * @param fieldValues the given field values 121 * @return the employee funding with the corresponding CSF trakers 122 */ 123 public List<EmployeeFunding> findEmployeeFundingWithCSFTracker(Map fieldValues, boolean isConsolidated); 124 125 /** 126 * find the summary of the ledger balances for the given fiscal year and balance types 127 * 128 * @param fiscalYear the given fiscal year 129 * @param balanceTypes the given balance type codes 130 * @return the ledger balances for the given fiscal year and balance types 131 */ 132 public List<LaborBalanceSummary> findBalanceSummary(Integer fiscalYear, Collection<String> balanceTypes); 133 134 /** 135 * save the given ledger balance into the underlying data store 136 * 137 * @param ledgerBalance the given ledger balance 138 */ 139 public void save(LedgerBalance ledgerBalance); 140 141 /** 142 * find the accounts (chart of accounts code + account number) in the given fund groups 143 * 144 * @param fiscalYear the given fiscal year 145 * @param fieldValues the input fields and values 146 * @param subFundGroupCodes the given list of qualified sub fund group codes 147 * @param fundGroupCodes the given list of qualified group codes 148 * @return the accounts (chart of accounts code + account number) in the given fund groups 149 */ 150 public List<List<String>> findAccountsInFundGroups(Integer fiscalYear, Map<String, String> fieldValues, List<String> subFundGroupCodes, List<String> fundGroupCodes); 151 152 /** 153 * find all ledger balances matching the given criteria within the given fiscal years 154 * 155 * @param fieldValues the given field values 156 * @param excludedFieldValues the given field values that must not be matched 157 * @param fiscalYears the given fiscal years 158 * @param balanceTypeList the given balance type code list 159 * @param positionObjectGroupCodes the specified position obejct group codes 160 * @return all ledger balances matching the given criteria within the given fiscal years 161 */ 162 public Collection<LedgerBalance> findLedgerBalances(Map<String, List<String>> fieldValues, Map<String, List<String>> excludedFieldValues, Set<Integer> fiscalYears, List<String> balanceTypeList, List<String> positionObjectGroupCodes); 163 164 /** 165 * delete the ledger balance records that were posted prior to the given fiscal year 166 * 167 * @param fiscalYear the given fiscal year 168 * @param chartOfAccountsCode the given chart of account code 169 */ 170 public void deleteLedgerBalancesPriorToYear(Integer fiscalYear, String chartOfAccountsCode); 171 }