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.core.api.job;
17
18 import java.math.BigDecimal;
19
20 import org.kuali.kpme.core.api.bo.HrBusinessObjectContract;
21 import org.kuali.kpme.core.api.department.DepartmentContract;
22 import org.kuali.kpme.core.api.location.LocationContract;
23 import org.kuali.kpme.core.api.paygrade.PayGradeContract;
24 import org.kuali.kpme.core.api.paytype.PayTypeContract;
25 import org.kuali.kpme.core.api.position.PositionBaseContract;
26 import org.kuali.kpme.core.api.salarygroup.SalaryGroupContract;
27 import org.kuali.rice.core.api.util.type.KualiDecimal;
28 import org.kuali.rice.kim.api.identity.Person;
29
30 /**
31 * <p>JobContract interface.</p>
32 *
33 */
34 public interface JobContract extends HrBusinessObjectContract {
35
36 /**
37 * Indicates if Job is FLSA exempt or non-exempt.
38 *
39 * <p>
40 * flsaStatus of Job
41 * </p>
42 *
43 * @return flsaStatus for Job
44 */
45 public String getFlsaStatus();
46
47 /**
48 * Rate used by the accrual service for calculating leave accrued by on FTE.
49 *
50 * <p>
51 * fte of Job
52 * </p>
53 *
54 * @return fte for Job
55 */
56 public BigDecimal getFte();
57
58 /**
59 * The pay grade field of the PayGrad object associated with the Job
60 *
61 * <p>
62 * payGrade of Job
63 * </p>
64 *
65 * @return payGrade for Job
66 */
67 public String getPayGrade();
68
69 /**
70 * The standard hours for this job. This drives holiday proration and “ready to approve criteria” for the timesheet
71 * (only timesheets meeting standard hours can be approved). Hourly jobs can have 0 standard hours
72 *
73 * <p>
74 * standardHours of Job
75 * </p>
76 *
77 * @return standardHours for Job
78 */
79 public BigDecimal getStandardHours();
80
81 /**
82 * Identifier of the employee that holds the Job
83 *
84 * <p>
85 * principalId of Job
86 * </p>
87 *
88 * @return principalId for Job
89 */
90 public String getPrincipalId();
91
92 /**
93 * First name of the employee that holds the Job
94 *
95 * <p>
96 * firstName of Job
97 * </p>
98 *
99 * @return firstName for Job
100 */
101 public String getFirstName();
102
103 /**
104 * Last name of the employee that holds the Job
105 *
106 * <p>
107 * lastName of Job
108 * </p>
109 *
110 * @return lastName for Job
111 */
112 public String getLastName();
113
114 /**
115 * Name of the employee that holds the Job
116 *
117 * <p>
118 * name of Job
119 * </p>
120 *
121 * @return name for Job
122 */
123 public String getName();
124
125 /**
126 * CompositeName the employee that holds the Job
127 *
128 * <p>
129 * principalName of Job
130 * </p>
131 *
132 * @return principalName for Job
133 */
134 public String getPrincipalName();
135
136 /**
137 * Sequential number which uniquely identify the job occurrence for the employee.
138 *
139 * <p>
140 * jobNumber of Job
141 * </p>
142 *
143 * @return jobNumber for Job
144 */
145 public Long getJobNumber();
146
147 /**
148 * History flag for Job lookups
149 *
150 * <p>
151 * history of Job
152 * </p>
153 *
154 * @return true if want to show history, false if not
155 */
156 public Boolean getHistory();
157
158 /**
159 * The location the job is associated with.
160 *
161 * <p>
162 * location of Job
163 * </p>
164 *
165 * @return location for Job
166 */
167 public String getLocation();
168
169 /**
170 * The pay type value of the PayType object associated with the Job
171 *
172 * <p>
173 * payType of Job
174 * </p>
175 *
176 * @return payType for Job
177 */
178 public String getHrPayType() ;
179
180 /**
181 * The Primary Key of a Job entry saved in a database
182 *
183 * <p>
184 * hrJobId of a Job
185 * <p>
186 *
187 * @return hrJobId for Job
188 */
189 public String getHrJobId() ;
190
191 /**
192 * The name of the Department associated with the Job
193 *
194 * <p>
195 * dept of a Job
196 * <p>
197 *
198 * @return dept for Job
199 */
200 public String getDept();
201
202 /**
203 * The name of the SalaryGroup associated with the Job
204 *
205 * <p>
206 * hrSalGroup of a Job
207 * <p>
208 *
209 * @return hrSalGroup for Job
210 */
211 public String getHrSalGroup();
212
213 /**
214 * The hourly rate for this job
215 *
216 * <p>
217 * compRate of a Job
218 * <p>
219 *
220 * @return compRate for Job
221 */
222 public KualiDecimal getCompRate();
223
224 /**
225 * The Department object associated with the Job
226 *
227 * <p>
228 * deptObj of a Job
229 * <p>
230 *
231 * @return deptObj for Job
232 */
233 public DepartmentContract getDeptObj();
234
235 /**
236 * The PayType object associated with the Job
237 *
238 * <p>
239 * payTypeObj of a Job
240 * <p>
241 *
242 * @return payTypeObj for Job
243 */
244 public PayTypeContract getPayTypeObj();
245
246 /**
247 * The employee that holds this job
248 *
249 * <p>
250 * principal of a Job
251 * <p>
252 *
253 * @return principal for Job
254 */
255 public Person getPrincipal();
256
257 /**
258 * Indicates if the Job is the primary job for the employee
259 *
260 * <p>
261 * primaryIndicator of a Job
262 * <p>
263 *
264 * @return true if is primary, false if not
265 */
266 public Boolean getPrimaryIndicator();
267
268 /**
269 * The Location object associated with the Job
270 *
271 * <p>
272 * locationObj of a Job
273 * <p>
274 *
275 * @return locationObj for Job
276 */
277 public LocationContract getLocationObj();
278
279 /**
280 * The PayGrade object associated with the Job
281 *
282 * <p>
283 * payGradeObj of a Job
284 * <p>
285 *
286 * @return payGradeObj for Job
287 */
288 public PayGradeContract getPayGradeObj();
289
290 /**
291 * The SalaryGroup object associated with the Job
292 *
293 * <p>
294 * salaryGroupObj of a Job
295 * <p>
296 *
297 * @return salaryGroupObj for Job
298 */
299 public SalaryGroupContract getSalaryGroupObj();
300
301 /**
302 * Position associated with the job.
303 *
304 * <p>
305 * positionNumber of a Job
306 * <p>
307 *
308 * @return positionNumber for Job
309 */
310 public String getPositionNumber();
311
312 /**
313 * PositionBase Object associated with the job.
314 *
315 * <p>
316 * positionObj of a Job
317 * <p>
318 *
319 * @return positionObj for Job
320 */
321 public PositionBaseContract getPositionObj() ;
322
323 /**
324 * Combination of multiple string fields to identify the job.
325 *
326 * <p>
327 * uniqueKey of a Job
328 * <p>
329 *
330 * @return uniqueKey for Job
331 */
332 public String getUniqueKey();
333
334 /**
335 * Id of the job.
336 *
337 * <p>
338 * id of a Job
339 * <p>
340 *
341 * @return id for Job
342 */
343 public String getId();
344
345 /**
346 * Indicates if the Job is eligible for leave benefits
347 *
348 * <p>
349 * eligibleForLeave of a Job
350 * <p>
351 *
352 * @return true if yes, false if not
353 */
354 public boolean isEligibleForLeave();
355
356 }