View Javadoc
1   /*
2    * Copyright 2008 The Kuali Foundation
3    * 
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.opensource.org/licenses/ecl2.php
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.ole.pdp.service;
17  
18  import java.util.Date;
19  import java.util.List;
20  import java.util.Map;
21  
22  import org.kuali.ole.fp.document.DisbursementVoucherDocument;
23  import org.kuali.ole.pdp.businessobject.Batch;
24  import org.kuali.ole.pdp.businessobject.CustomerProfile;
25  import org.kuali.ole.pdp.businessobject.PaymentDetail;
26  import org.kuali.ole.pdp.businessobject.PaymentFileLoad;
27  import org.kuali.ole.pdp.businessobject.PaymentGroup;
28  import org.kuali.rice.core.api.util.type.KualiDecimal;
29  import org.kuali.rice.kim.api.identity.Person;
30  import org.kuali.rice.krad.util.MessageMap;
31  
32  /**
33   * Defines methods for sending PDP emails.
34   */
35  public interface PdpEmailService {
36  
37      /**
38       * Sends email for a payment load has failed. Errors encountered will be printed out in message
39       * 
40       * @param paymentFile parsed payment file object (might not be populated completely due to errors)
41       * @param errors <code>MessageMap</code> containing <code>ErrorMessage</code> entries
42       */
43      public void sendErrorEmail(PaymentFileLoad paymentFile, MessageMap errors);
44  
45      /**
46       * Sends email for a successful payment load. Warnings encountered will be printed out in message
47       * 
48       * @param paymentFile parsed payment file object
49       * @param warnings <code>List</code> of <code>String</code> messages
50       */
51      public void sendLoadEmail(PaymentFileLoad paymentFile, List<String> warnings);
52  
53      /**
54       * Sends email for a payment load that was held due to tax reasons
55       * 
56       * @param paymentFile parsed payment file object
57       */
58      public void sendTaxEmail(PaymentFileLoad paymentFile);
59  
60      /**
61       * Sends email for a load done internally
62       * 
63       * @param batch <code>Batch</code> created by load
64       */
65      public void sendLoadEmail(Batch batch);
66  
67      /**
68       * Sends email for a purap bundle that exceeds the maximum number of notes allowed
69       * 
70       * @param creditMemos list of credit memo documents in bundle
71       * @param paymentRequests list of payment request documents in bundle
72       * @param lineTotal total number of lines for bundle
73       * @param maxNoteLines maximum number of lines allowed
74       */
75      public void sendExceedsMaxNotesWarningEmail(List<String> creditMemos, List<String> paymentRequests, int lineTotal, int maxNoteLines);
76  
77      /**
78       * Sends summary email for an ACH extract
79       * 
80       * @param unitCounts Map containing payment counts for each unit
81       * @param unitTotals Map containing total payment amount for each unit
82       * @param extractDate date of ACH extraction
83       */
84      public void sendAchSummaryEmail(Map<String, Integer> unitCounts, Map<String, KualiDecimal> unitTotals, Date extractDate);
85  
86      /**
87       * Sends advice notification email to the payee receiving an ACH payment
88       * 
89       * @param paymentGroup ACH payment group to send notification for
90       * @param paymentDetail Payment Detail containing payment amounts
91       * @param customer Pdp Customer profile for payment
92       */
93      public void sendAchAdviceEmail(PaymentGroup paymentGroup, PaymentDetail paymentDetail, CustomerProfile customer);
94      
95      /**
96       * Sends Payment Cancellation Email
97       * 
98       * @param paymentGroup
99       * @param note
100      * @param user
101      */
102     public void sendCancelEmail(PaymentGroup paymentGroup, String note, Person user);
103     
104     /**
105      * Reads system parameter indicating whether to status emails should be sent
106      * 
107      * @return true if email should be sent, false otherwise
108      */
109     public boolean isPaymentEmailEnabled() ;
110     
111     /**
112      * Sends notification e-mail that an immediate extract Disbursement Voucher has been extracted
113      * @param disbursementVoucher the disbursement voucher which was immediately extracted
114      * @param user the current extracting user
115      */
116     public void sendDisbursementVoucherImmediateExtractEmail(DisbursementVoucherDocument disbursementVoucher, Person user);
117 }