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