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