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.pdp.service;
017
018 import java.sql.Date;
019 import java.util.Iterator;
020 import java.util.List;
021
022 import org.kuali.kfs.pdp.businessobject.PaymentGroup;
023 import org.kuali.kfs.pdp.businessobject.PaymentProcess;
024 import org.kuali.rice.kns.service.DataDictionaryService;
025 import org.kuali.rice.kns.service.ParameterService;
026
027 public interface PaymentGroupService {
028 /**
029 * Get all payment groups by a disbursement type code and status code
030 *
031 * @param disbursementType
032 * @param paymentStatusCode
033 * @return
034 */
035 public Iterator getByDisbursementTypeStatusCode(String disbursementType, String paymentStatusCode);
036
037 /**
038 * Get all payment groups by Payment Process object
039 *
040 * @param p
041 * @return
042 */
043 public Iterator getByProcess(PaymentProcess p);
044
045 /**
046 * Get all payment groups by Payment Process Id/Disbursement Type
047 *
048 * @param pid
049 * @param disbursementType
050 * @return
051 */
052 public List<Integer> getDisbursementNumbersByDisbursementType(Integer pid,String disbursementType);
053
054 /**
055 * Get all payment groups by Payment Process Id/Disbursement Type for a given bank code
056 *
057 * @param pid
058 * @param disbursementType
059 * @param bankCode
060 * @return
061 */
062 public abstract List<Integer> getDisbursementNumbersByDisbursementTypeAndBankCode(Integer pid,String disbursementType, String bankCode);
063
064 /**
065 * Given a process id and a disbursement type, finds a distinct list of bank codes used by payment groups within that payment process
066 * @param pid payment process to query payment groups of
067 * @param disbursementType the type of disbursements to query
068 * @return a sorted List of bank codes
069 */
070 public abstract List<String> getDistinctBankCodesForProcessAndType(Integer pid, String disbursementType);
071
072 public PaymentGroup get(Integer id);
073
074 public List getByBatchId(Integer batchId);
075
076 public List getByDisbursementNumber(Integer disbursementNbr);
077
078 /**
079 * Mark a paid group as processed
080 *
081 * @param group
082 * @param processDate
083 */
084 public void processPaidGroup(PaymentGroup group, Date processDate);
085
086 /**
087 * Mark a cancelled group as processed
088 *
089 * @param group
090 * @param processDate
091 */
092 public void processCancelledGroup(PaymentGroup group, Date processDate);
093
094 /**
095 * Gets the sort group id
096 *
097 * @param paymentGroup
098 * @return
099 */
100 public int getSortGroupId(PaymentGroup paymentGroup);
101
102 /**
103 * Gets the sort group name
104 *
105 * @param sortGroupId
106 * @return
107 */
108 public String getSortGroupName(int sortGroupId);
109
110 /**
111 * Sets the parameter service
112 *
113 * @param parameterService
114 */
115 public void setParameterService(ParameterService parameterService);
116
117 /**
118 * Sets DataDictionaryService
119 *
120 * @param dataDictionaryService
121 */
122 public void setDataDictionaryService(DataDictionaryService dataDictionaryService);
123
124 /**
125 * Gets list of ach payments in which an advice notification has not been sent
126 *
127 * @return List<PaymentGroup>
128 */
129 public List<PaymentGroup> getAchPaymentsNeedingAdviceNotification();
130 }