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 }