001/**
002 * Copyright 2004-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.kpme.tklm.api.leave.transfer;
017
018import java.math.BigDecimal;
019import java.util.List;
020
021import org.kuali.kpme.core.api.accrualcategory.AccrualCategoryContract;
022import org.kuali.kpme.core.api.bo.HrBusinessObjectContract;
023import org.kuali.kpme.tklm.api.leave.block.LeaveBlockContract;
024import org.kuali.rice.kim.api.identity.Person;
025
026/**
027 * <p>BalanceTransferContract interface.</p>
028 *
029 */
030public interface BalanceTransferContract extends HrBusinessObjectContract {
031
032        /**
033         * The principalId of the user associated with the BalanceTransfer
034         * 
035         * <p>
036         * principalId of a BalanceTransfer
037         * <p>
038         * 
039         * @return principalId for BalanceTransfer
040         */
041        public String getPrincipalId();
042
043        /**
044         * The AccrualCategory name that the leave is transfered to
045         * 
046         * <p>
047         * toAccrualCategory of a BalanceTransfer
048         * <p>
049         * 
050         * @return toAccrualCategory for BalanceTransfer
051         */
052        public String getToAccrualCategory();
053        
054        /**
055         * The AccrualCategory name that the leave is transfered from
056         * 
057         * <p>
058         * fromAccrualCategory of a BalanceTransfer
059         * <p>
060         * 
061         * @return fromAccrualCategory for BalanceTransfer
062         */
063        public String getFromAccrualCategory();
064        
065        /**
066         * The amount of accrued leave to transfer 
067         * 
068         * <p>
069         * transferAmount of a BalanceTransfer
070         * <p>
071         * 
072         * @return transferAmount for BalanceTransfer
073         */
074        public BigDecimal getTransferAmount();
075
076        /**
077         * The computed amount of accrued leave that will be forfeited 
078         * 
079         * <p>
080         * forfeitedAmount of a BalanceTransfer
081         * <p>
082         * 
083         * @return forfeitedAmount for BalanceTransfer
084         */
085        public BigDecimal getForfeitedAmount();
086        
087        /**
088         * The primary key of a BalanceTransfer entry saved in a database
089         * 
090         * <p>
091         * balanceTransferId of a BalanceTransfer
092         * <p>
093         * 
094         * @return balanceTransferId for BalanceTransfer
095         */
096        public String getBalanceTransferId();
097
098        /**
099         * The AccrualCategoryRule name associated with the BalanceTransfer
100         * 
101         * <p>
102         * accrualCategoryRule of a BalanceTransfer
103         * <p>
104         * 
105         * @return accrualCategoryRule for BalanceTransfer
106         */
107        public String getAccrualCategoryRule();
108
109        /**
110         * The Person object of the user associated with the BalanceTransfer
111         * 
112         * <p>
113         * principal of a BalanceTransfer
114         * <p>
115         * 
116         * @return principal for BalanceTransfer
117         */
118        public Person getPrincipal();
119        
120        /**
121         * The AccrualCategory object that the leave is transfered to
122         * 
123         * <p>
124         * AccrualCategory object based on toAccrualCategory
125         * <p>
126         * 
127         * @return AccrualCategory object based on toAccrualCategory
128         */
129        public AccrualCategoryContract getCreditedAccrualCategory();
130
131        /**
132         * The AccrualCategory object that the leave is transfered from
133         * 
134         * <p>
135         * AccrualCategory object based on fromAccrualCategory
136         * <p>
137         * 
138         * @return AccrualCategory object based on fromAccrualCategory
139         */
140        public AccrualCategoryContract getDebitedAccrualCategory();
141
142        /**
143         * The leave calendar document id associated with the BalanceTransfer
144         * 
145         * <p>
146         * leaveCalendarDocumentId of a BalanceTransfer
147         * <p>
148         * 
149         * @return leaveCalendarDocumentId for BalanceTransfer
150         */
151        public String getLeaveCalendarDocumentId();
152
153        /**
154         * The list of LeaveBlock objects associated with the BalanceTransfer
155         * 
156         * <p>
157         * The list contains LeaveBlock objects based on forfeitedLeaveBlockId, accruedLeaveBlockId, and debitedLeaveBlockId
158         * <p>
159         * 
160         * @return  a list of LeaveBlock objects for BalanceTransfer
161         */
162        public List<? extends LeaveBlockContract> getLeaveBlocks();
163
164        /**
165         * The status associated with the BalanceTransfer
166         * 
167         * <p>
168         * status of a BalanceTransfer
169         * <p>
170         * 
171         * @return status for BalanceTransfer
172         */
173        public String getStatus();
174
175        /**
176         * The accrued leave block id associated with the BalanceTransfer
177         * 
178         * <p>
179         * accruedLeaveBlockId of a BalanceTransfer
180         * <p>
181         * 
182         * @return accruedLeaveBlockId for BalanceTransfer
183         */
184        public String getAccruedLeaveBlockId();
185        
186        /**
187         * The forfeited leave block id associated with the BalanceTransfer
188         * 
189         * <p>
190         * forfeitedLeaveBlockId of a BalanceTransfer
191         * <p>
192         * 
193         * @return forfeitedLeaveBlockId for BalanceTransfer
194         */
195        public String getForfeitedLeaveBlockId();
196
197        /**
198         * The debited leave block id associated with the BalanceTransfer
199         * 
200         * <p>
201         * debitedLeaveBlockId of a BalanceTransfer
202         * <p>
203         * 
204         * @return debitedLeaveBlockId for BalanceTransfer
205         */
206        public String getDebitedLeaveBlockId();
207
208        /**
209         * The amount transfered
210         * 
211         * <p>
212         * amountTransferred of a BalanceTransfer
213         * <p>
214         * 
215         * @return amountTransferred for BalanceTransfer
216         */
217        public BigDecimal getAmountTransferred();
218
219        /**
220         * TODO: Put a better comment
221         * 
222         * <p>
223         * sstoId of a BalanceTransfer
224         * <p>
225         * 
226         * @return sstoId for BalanceTransfer
227         */
228        public String getSstoId();
229
230        /**
231         * The document header id associated with the BalanceTransfer
232         * 
233         * <p>
234         * documentHeaderId of a BalanceTransfer
235         * <p>
236         * 
237         * @return documentHeaderId for BalanceTransfer
238         */
239        public String getDocumentHeaderId();
240
241}