View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.pdp.service;
20  
21  import java.util.Collection;
22  import java.util.Date;
23  import java.util.List;
24  import java.util.Map;
25  
26  import org.kuali.kfs.pdp.businessobject.Batch;
27  import org.kuali.kfs.pdp.businessobject.CustomerProfile;
28  import org.kuali.kfs.pdp.businessobject.PaymentDetail;
29  import org.kuali.kfs.pdp.businessobject.PaymentFileLoad;
30  import org.kuali.kfs.pdp.businessobject.PaymentGroup;
31  import org.kuali.kfs.sys.document.PaymentSource;
32  import org.kuali.rice.core.api.util.type.KualiDecimal;
33  import org.kuali.rice.kim.api.identity.Person;
34  import org.kuali.rice.krad.util.MessageMap;
35  
36  /**
37   * Defines methods for sending PDP emails.
38   */
39  public interface PdpEmailService {
40  
41      /**
42       * Sends email for a payment load has failed. Errors encountered will be printed out in message
43       *
44       * @param paymentFile parsed payment file object (might not be populated completely due to errors)
45       * @param errors <code>MessageMap</code> containing <code>ErrorMessage</code> entries
46       */
47      public void sendErrorEmail(PaymentFileLoad paymentFile, MessageMap errors);
48  
49      /**
50       * Sends email for a successful payment load. Warnings encountered will be printed out in message
51       *
52       * @param paymentFile parsed payment file object
53       * @param warnings <code>List</code> of <code>String</code> messages
54       */
55      public void sendLoadEmail(PaymentFileLoad paymentFile, List<String> warnings);
56  
57      /**
58       * Sends email for a payment load that was held due to tax reasons
59       *
60       * @param paymentFile parsed payment file object
61       */
62      public void sendTaxEmail(PaymentFileLoad paymentFile);
63  
64      /**
65       * Sends email for a load done internally
66       *
67       * @param batch <code>Batch</code> created by load
68       */
69      public void sendLoadEmail(Batch batch);
70  
71      /**
72       * Sends email for a purap bundle that exceeds the maximum number of notes allowed
73       *
74       * @param creditMemos list of credit memo documents in bundle
75       * @param paymentRequests list of payment request documents in bundle
76       * @param lineTotal total number of lines for bundle
77       * @param maxNoteLines maximum number of lines allowed
78       */
79      public void sendExceedsMaxNotesWarningEmail(List<String> creditMemos, List<String> paymentRequests, int lineTotal, int maxNoteLines);
80  
81      /**
82       * Sends summary email for an ACH extract
83       *
84       * @param unitCounts Map containing payment counts for each unit
85       * @param unitTotals Map containing total payment amount for each unit
86       * @param extractDate date of ACH extraction
87       */
88      public void sendAchSummaryEmail(Map<String, Integer> unitCounts, Map<String, KualiDecimal> unitTotals, Date extractDate);
89  
90      /**
91       * Sends advice notification email to the payee receiving an ACH payment
92       *
93       * @param paymentGroup ACH payment group to send notification for
94       * @param paymentDetail Payment Detail containing payment amounts
95       * @param customer Pdp Customer profile for payment
96       */
97      public void sendAchAdviceEmail(PaymentGroup paymentGroup, PaymentDetail paymentDetail, CustomerProfile customer);
98  
99      /**
100      * Sends Payment Cancellation Email
101      *
102      * @param paymentGroup
103      * @param note
104      * @param user
105      */
106     public void sendCancelEmail(PaymentGroup paymentGroup, String note, Person user);
107 
108     /**
109      * Reads system parameter indicating whether to status emails should be sent
110      *
111      * @return true if email should be sent, false otherwise
112      */
113     public boolean isPaymentEmailEnabled() ;
114 
115     /**
116      * Sends notification e-mail that an immediate extract Disbursement Voucher has been extracted
117      * @param paymentSource the payment source being immediately extracted
118      * @param paymentSourceToExtractService the service used to extract the payment, which reports the e-mail addresses to extract
119      * @param user the current extracting user
120      */
121     public void sendPaymentSourceImmediateExtractEmail(PaymentSource paymentSource, String fromAddress, Collection<String> toAddresses);
122 }