View Javadoc

1   /**
2    * Copyright 2004-2013 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.hr.lm.accrual.service;
17  
18  import java.sql.Date;
19  import java.util.List;
20  
21  import org.kuali.hr.lm.accrual.RateRangeAggregate;
22  
23  public interface AccrualService {
24  	public void runAccrual(String principalId);
25  	
26  	/*
27  	 * run Accrual for the given principal id and dates. 
28  	 * If recordRanData is true, record the timestamp of this run in database 
29  	 */
30  	public void runAccrual(String principalId, Date startDate, Date endDate, boolean recordRanData);
31  	public void runAccrual(String principalId, Date startDate, Date endDate, boolean recordRanData, String runAsPrincipalId);
32  	public void runAccrual(List<String> principalIds);
33  	
34  	
35  	/**
36  	 * determine if the given date is at the earn interval
37  	 * @param aDate
38  	 * @param earnInterval
39  	 * @return boolean
40  	 */
41  	public boolean isDateAtEarnInterval(java.util.Date aDate, String earnInterval);
42  	
43  	/**
44  	 * build a RateRangeAggregate with given parameters
45  	 * @param principalId
46  	 * @param startDate
47  	 * @param endDate
48  	 * @return boolean
49  	 */
50  	public RateRangeAggregate buildRateRangeAggregate(String principalId, Date startDate, Date endDate);
51  	
52  	/**
53  	 * determine if the employee's future status is changed during the range of given Calendar Entry
54  	 * @param principalId
55  	 * @param startDate
56  	 * @param endDate
57  	 * @return boolean
58  	 */
59  	public boolean isEmpoyeementFutureStatusChanged(String principalId, Date startDate, Date endDate);
60  	
61  	/**
62  	 * calculate future accrual for given principal id
63  	 * @param principalId
64  	 * @param asOfDate
65  	 * @return
66  	 */
67  	public void calculateFutureAccrualUsingPlanningMonth(String principalId, Date asOfDate);
68  
69  	/**
70  	 * get the accrual interval date of the previous accrual period with given parameters
71  	 * @param earnInterval
72  	 * @param aDate
73  	 * @return
74  	 */
75  	public java.util.Date getPreviousAccrualIntervalDate(String earnInterval, Date aDate);
76  	
77  	/**
78  	 * get the accrual interval date of the next accrual period with given parameters
79  	 * @param earnInterval
80  	 * @param aDate
81  	 * @return
82  	 */
83  	public java.util.Date getNextAccrualIntervalDate(String earnInterval, Date aDate);
84  
85  	/**
86  	 * calculate # of work days in an accrual period
87  	 * @param earnInterval
88  	 * @param aDate
89  	 * @return	int
90  	 */
91  	public int getWorkDaysInAccrualInterval(String earnInterval, Date aDate);
92  	
93  	public boolean statusChangedSinceLastRun(String principalId);
94  	
95  }