1 /**
2 * Copyright 2004-2014 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.kpme.tklm.api.leave.accrual;
17
18 import java.math.BigDecimal;
19 import java.util.List;
20
21 import org.joda.time.Interval;
22 import org.kuali.kpme.core.api.accrualcategory.AccrualCategoryContract;
23 import org.kuali.kpme.core.api.accrualcategory.rule.AccrualCategoryRuleContract;
24 import org.kuali.kpme.core.api.job.JobContract;
25 import org.kuali.kpme.core.api.leaveplan.LeavePlanContract;
26 import org.kuali.kpme.core.api.principal.PrincipalHRAttributesContract;
27 import org.kuali.kpme.tklm.api.leave.timeoff.SystemScheduledTimeOffContract;
28
29 /**
30 * <p>RateRangeContract interface</p>
31 *
32 */
33 public interface RateRangeContract {
34
35 /**
36 * The date range of the RateRane
37 *
38 * <p>
39 * range of a RateRange
40 * <p>
41 *
42 * @return range for RateRange
43 */
44 public Interval getRange();
45
46 /**
47 * The list of active jobs associated with the RateRange
48 *
49 * <p>
50 * jobs of a RateRange
51 * <p>
52 *
53 * @return jobs for RateRange
54 */
55 public List<? extends JobContract> getJobs();
56
57 /**
58 * The fte sum of jobs that are associated with the RateRange
59 *
60 * <p>
61 * accrualRatePercentageModifier of a RateRange
62 * <p>
63 *
64 * @return accrualRatePercentageModifier for RateRange
65 */
66 public BigDecimal getAccrualRatePercentageModifier();
67
68 /**
69 * The statusChanged flag of the RateRange
70 *
71 * <p>
72 * statusChanged flag of a RateRange
73 * <p>
74 *
75 * @return Y if the status has changed, N if not
76 */
77 public boolean isStatusChanged();
78
79 /**
80 * The standard hours sum of jobs that are associated with the RateRange
81 *
82 * <p>
83 * standardHours of a RateRange
84 * <p>
85 *
86 * @return standardHours for RateRange
87 */
88 public BigDecimal getStandardHours();
89
90 /**
91 * The active PrincipalHRAttributes associated with the RateRange
92 *
93 * <p>
94 * The active principalHRAttributes of jobs that are associated with the RateRange that has max effective date
95 * <p>
96 *
97 * @return principalHRAttributes for RateRange
98 */
99 public PrincipalHRAttributesContract getPrincipalHRAttributes();
100
101 /**
102 * The inactive PrincipalHRAttributes associated with the RateRange
103 *
104 * <p>
105 * The inactive principalHRAttributes of jobs that are associated with the RateRange that has max effective date
106 * <p>
107 *
108 * @return endPrincipalHRAttributes for RateRange
109 */
110 public PrincipalHRAttributesContract getEndPrincipalHRAttributes();
111
112 /**
113 * The LeavePlan object associated with the RateRange
114 *
115 * <p>
116 * leavePlan of a RateRange
117 * <p>
118 *
119 * @return leavePlan for RateRange
120 */
121 public LeavePlanContract getLeavePlan();
122
123 /**
124 * The list of AccrualCaegory objects associated with the RateRange
125 *
126 * <p>
127 * accrualCategories of a RateRange
128 * <p>
129 *
130 * @return accrualCategories for RateRange
131 */
132 public List<? extends AccrualCategoryContract> getAcList();
133
134 /**
135 * The list of AccrualCaegoryRule objects associated with the RateRange
136 *
137 * <p>
138 * accrualCategoryRules of a RateRange
139 * <p>
140 *
141 * @return accrualCategoryRules for RateRange
142 */
143 public List<? extends AccrualCategoryRuleContract> getAcRuleList();
144
145 /**
146 * The SystemScheduledTimeOff object associated with the RateRange
147 *
148 * <p>
149 * sysScheTimeOff of a RateRange
150 * <p>
151 *
152 * @return sysScheTimeOff for RateRange
153 */
154 public SystemScheduledTimeOffContract getSysScheTimeOff();
155
156 /**
157 * The leaveCalendarDocumentId associated with the RateRange
158 *
159 * <p>
160 * leaveCalendarDocumentId of a RateRange, which will be assigned to leave blocks created at this rate range
161 * <p>
162 *
163 * @return leaveCalendarDocumentId for RateRange
164 */
165 public String getLeaveCalendarDocumentId();
166
167 }