1 /*
2 * Copyright 2007 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 /*
17 * Created on Aug 12, 2004
18 */
19 package org.kuali.ole.pdp.service;
20
21 import org.kuali.rice.kim.api.identity.Person;
22
23 /**
24 * This class has methods for payment maintenance.
25 */
26 public interface PaymentMaintenanceService {
27
28 /**
29 * This method cancels the pending payment of the given payment id if the following rules apply. -
30 * Payment status must be: "open", "held", or "pending/ACH".
31 * @param paymentGroupId Primary key of the PaymentGroup that the Payment Detail to be canceled belongs to.
32 * @param paymentDetailId Primary key of the PaymentDetail that was actually canceled.
33 * @param note Change note text entered by user.
34 * @param user The user that cancels the payment
35 * @return true if cancel payment succesful, false otherwise
36 */
37 public boolean cancelPendingPayment(Integer paymentGroupId, Integer paymentDetailId, String note, Person user);
38
39 /**
40 * This method holds pending payment of the given payment id if the following rules apply. - Payment status
41 * must be: "open".
42 * @param paymentGroupId Primary key of the PaymentGroup that the Payment Detail to be held belongs to.
43 * @param note Change note text entered by user.
44 * @param user The user that holds the payment
45 */
46 public boolean holdPendingPayment(Integer paymentGroupId, String note, Person user);
47
48 /**
49 * This method removes holds on pending payments of the given payment id if the following rules
50 * apply. - Payment status must be: "held".
51 *
52 * @param paymentGroupId Primary key of the PaymentGroup that the Payment Detail to be un-held belongs to
53 * @param note Change note text entered by user.
54 * @param user the user that removes hold on payment
55 */
56 public boolean removeHoldPendingPayment(Integer paymentGroupId, String note, Person user);
57
58 /**
59 * This method cancels all disbursements with the same disbursment number as that of the given payment id
60 * if the following rules apply. - Payment status must be: "extr".
61 * @param paymentGroupId Primary key of the PaymentGroup that the Payment Detail to be cancelled belongs to.
62 * @param paymentDetailId Primary key of the PaymentDetail that was actually cancelled.
63 * @param note Change note text entered by user.
64 * @param user The user that cancels the disbursement
65 */
66 public boolean cancelDisbursement(Integer paymentGroupId, Integer paymentDetailId, String note, Person user);
67
68 /**
69 * This method re-opens all disbursements with the same disbursment number as that of
70 * the given payment id if the following rules apply. - Payment status must be: "cdis".
71 * @param paymentGroupId Primary key of the PaymentGroup that the Payment Detail to be canceled/reissued belongs to.
72 * @param changeText Change note text entered by user.
73 * @param user The user that cancels/reissues disbursement
74 */
75 public boolean reissueDisbursement(Integer paymentGroupId, String changeText, Person user);
76
77 /**
78 * This method cancels and re-opens all disbursements with the same disbursment number as that of
79 * the given payment id if the following rules apply. - Payment status must be: "extr".
80 * @param paymentGroupId Primary key of the PaymentGroup that the Payment Detail to be canceled/reissued belongs to.
81 * @param changeText Change note text entered by user.
82 * @param user The user that cancels/reissues disbursement
83 */
84 public boolean cancelReissueDisbursement(Integer paymentGroupId, String changeText, Person user);
85
86 /**
87 * This method changes the immediate flag
88 * @param paymentGroupId the payment group id
89 * @param changeText the change text
90 * @param user the user that changes the immediate flag
91 */
92 public void changeImmediateFlag(Integer paymentGroupId, String changeText, Person user);
93 }
94