[Home] [Help]
PACKAGE BODY: APPS.PAY_DK_SICKPAY_PKG
Source
1 PACKAGE BODY pay_dk_sickpay_pkg AS
2 /* $Header: pydksckp.pkb 120.0 2006/03/23 04:03:16 knelli noship $ */
3
4 function get_worked_hours(
5 p_assignment_id IN number
6 ,p_period_start_date IN date
7 ,p_period_end_date IN date)RETURN NUMBER is
8
9 l_assignment_id NUMBER;
10 l_period_start_date DATE;
11 l_period_end_date DATE;
12 l_period_start_time varchar2(5);
13 l_period_end_time varchar2(5);
14
15 l_input_value varchar2(30);
16 l_screen_value varchar2(30);
17 l_rec_start_date l_type;
18 l_rec_end_date l_type;
19 l_rec_start_time l_type;
20 l_rec_end_time l_type;
21
22 l_records number;
23 l_absent_hours number;
24 l_return number;
25 l_duration number;
26 l_days_or_hours varchar2(2);
27 l_include_event varchar2(2);
28 l_hours_in_period number;
29 l_worked_hours number;
30
31 l_start_date date;
32 l_end_date date;
33 l_start_time varchar2(10);
34 l_end_time varchar2(10);
35
36
37 CURSOR csr_get_details(p_period_start_date DATE,p_period_end_date DATE,p_assignment_id NUMBER,p_input_value VARCHAR2) is
38 SELECT eev.screen_entry_value screen_entry_value
39 FROM per_all_assignments_f asg
40 ,per_all_people_f per
41 ,pay_element_links_f el
42 ,pay_element_types_f et
43 ,pay_input_values_f iv
44 ,pay_element_entries_f ee
45 ,pay_element_entry_values_f eev
46 WHERE asg.assignment_id = p_assignment_id
47 AND per.person_id = asg.person_id
48 AND et.element_name IN ('Absent Sick','Absent Holiday')
49 AND et.legislation_code = 'DK'
50 AND iv.element_type_id = et.element_type_id
51 AND iv.name = p_input_value
52 AND el.business_group_id = per.business_group_id
53 AND el.element_type_id = et.element_type_id
54 AND ee.element_link_id = el.element_link_id
55 and ee.assignment_id = asg.assignment_id
56 AND eev.element_entry_id = ee.element_entry_id
57 AND eev.input_value_id = iv.input_value_id
58 AND ((p_period_start_date BETWEEN ee.effective_start_date AND ee.effective_end_date)
59 OR
60 (p_period_end_date BETWEEN ee.effective_start_date AND ee.effective_end_date)
61 OR
62 (p_period_start_date < ee.effective_start_date AND p_period_end_date > ee.effective_end_date))
63 ORDER BY ee.element_entry_id;
64
65
66 begin
67
68 l_period_start_date := p_period_start_date;
69 l_period_end_date := p_period_end_date;
70 l_assignment_id := p_assignment_id;
71
72 l_period_start_time := '00.00';
73 l_period_end_time := '23.59';
74
75 l_hours_in_period :=0;
76 l_worked_hours :=0;
77
78 hr_utility.set_location('get worked Hours function call',10);
79
80 l_input_value := 'Start Date';
81 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
82 FETCH csr_get_details BULK COLLECT INTO l_rec_start_date;
83 CLOSE csr_get_details;
84
85 l_input_value := 'End Date';
86 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
87 FETCH csr_get_details BULK COLLECT INTO l_rec_end_date;
88 CLOSE csr_get_details;
89
90 l_input_value := 'Start Time';
91 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
92 FETCH csr_get_details BULK COLLECT INTO l_rec_start_time;
93 CLOSE csr_get_details;
94
95 l_input_value := 'End Time';
96 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
97 FETCH csr_get_details BULK COLLECT INTO l_rec_end_time;
98 CLOSE csr_get_details;
99
100 l_records := l_rec_start_date.count;
101 l_absent_hours := 0;
102 l_return := -1;
103 l_duration := -1;
104 l_days_or_hours := 'H';
105 l_include_event := 'Y';
106
107 FOR l_index IN 1 .. l_records LOOP
108 l_start_date := to_date(substr(l_rec_start_date(l_index),1,10),'YYYY/MM/DD');
109 l_end_date := to_date(substr(l_rec_end_date(l_index),1,10),'YYYY/MM/DD');
110 l_start_time := l_rec_start_time(l_index);
111 l_end_time := l_rec_end_time(l_index);
112
113 IF (l_start_date < l_period_start_date) then
114 l_start_date := l_period_start_date;
115 END IF;
116
117 IF (l_end_date > l_period_end_date) then
118 l_end_date := l_period_end_date;
119 END IF;
120
121 l_return := hr_loc_work_schedule.calc_sch_based_dur(
122 p_assignment_id => l_assignment_id,
123 p_days_or_hours => l_days_or_hours,
124 p_include_event => l_include_event,
125 p_date_start => l_start_date,
126 p_date_end => l_end_date,
127 p_time_start => l_start_time,
128 p_time_end => l_end_time,
129 p_duration => l_duration);
130
131 /* Handled availability of work schedule for Sickness Report */
132 IF l_return <> 0 then
133 l_worked_hours := -1;
134 ELSE
135 l_absent_hours := l_absent_hours + l_duration;
136 END if;
137 END LOOP;
138 IF l_worked_hours = -1 then
139 RETURN l_worked_hours;
140 END IF;
141 /* Handled availability of work schedule for Sickness Report */
142
143 l_duration := -1;
144 l_include_event := 'Y';
145
146 l_return := hr_loc_work_schedule.calc_sch_based_dur(
147 p_assignment_id => l_assignment_id,
148 p_days_or_hours => l_days_or_hours,
149 p_include_event => l_include_event,
150 p_date_start => l_period_start_date,
151 p_date_end => l_period_end_date,
152 p_time_start => l_period_start_time,
153 p_time_end => l_period_end_time,
154 p_duration => l_duration);
155
156 l_hours_in_period := l_duration;
157 l_worked_hours := l_hours_in_period - l_absent_hours;
158
159
160 RETURN l_worked_hours;
161 END get_worked_hours;
162
163
164 /*Bug 5047360 fix- Passing p_abs_start_time and p_abs_end_time*/
165 FUNCTION get_sickness_dur_details
166 (p_assignment_id IN NUMBER
167 ,p_effective_date IN DATE
168 ,p_abs_start_date IN DATE
169 ,p_abs_end_date IN DATE
170 ,p_abs_start_time IN VARCHAR2 --Bug 5047360 fix
171 ,p_abs_end_time IN VARCHAR2 --Bug 5047360 fix
172 ,p_start_date OUT NOCOPY DATE
173 ,p_end_date OUT NOCOPY DATE
174 ,p_sick_days OUT NOCOPY NUMBER
175 ,p_sick_hours OUT NOCOPY NUMBER
176 ) RETURN NUMBER IS
177 CURSOR get_details(p_assignment_id NUMBER , p_effective_date DATE ) IS
178 SELECT ee.element_entry_id element_entry_id
179 , eev1.screen_entry_value screen_entry_value
180 , iv1.name
181 FROM per_all_assignments_f asg1
182 ,per_all_assignments_f asg2
183 ,per_all_people_f per
184 ,pay_element_links_f el
185 ,pay_element_types_f et
186 ,pay_input_values_f iv1
187 ,pay_element_entries_f ee
188 ,pay_element_entry_values_f eev1
189 WHERE asg1.assignment_id = p_assignment_id
190 AND p_effective_date BETWEEN asg1.effective_start_date AND asg1.effective_end_date
191 AND p_effective_date BETWEEN asg2.effective_start_date AND asg2.effective_end_date
192 AND per.person_id = asg1.person_id
193 AND asg2.person_id = per.person_id
194 AND et.element_name = 'Override Sickness Duration'
195 AND et.legislation_code = 'DK'
196 AND iv1.element_type_id = et.element_type_id
197 /*Bug 5047360 fix */
198 /* AND iv1.name in ('Start Date', 'End Date', 'Sick Days', 'Sick Hours')*/
199 AND iv1.name in ('Start Date', 'End Date', 'Sick Days','Start Time','End Time', 'Sick Hours')
200 AND el.business_group_id = per.business_group_id
201 AND el.element_type_id = et.element_type_id
202 AND ee.assignment_id = asg2.assignment_id
203 AND ee.element_link_id = el.element_link_id
204 AND eev1.element_entry_id = ee.element_entry_id
205 AND eev1.input_value_id = iv1.input_value_id
206 AND p_effective_date BETWEEN ee.effective_start_date AND ee.effective_end_date
207 AND p_effective_date BETWEEN eev1.effective_start_date AND eev1.effective_end_date
208 ORDER BY ee.element_entry_id, DECODE(iv1.name, 'Start Date', 1,'End Date', 2, 'Sick Days', 3,'Start Time', 4,'End Time', 5,'Sick Hours', 6) ;
209 --
210 TYPE l_record is record (eeid pay_element_entries_f.element_entry_id%TYPE,
211 eevalue pay_element_entry_values_f.screen_entry_value%TYPE,
212 eename pay_input_values_f.name%TYPE );
213 l_rec l_record;
214 TYPE l_table is table of l_record index by BINARY_INTEGER;
215 l_tab l_table;
216
217 l_start_date date;
218 l_end_date date;
219 l_sick_hours number;
220 l_sick_days number;
221 l_counter number ;
222 l_bool_match boolean;
223 l_num_match number;
224 /*Bug 5047360 fix */
225 l_start_time pay_element_entry_values_f.screen_entry_value%TYPE;
226 l_end_time pay_element_entry_values_f.screen_entry_value%TYPE;
227 --
228 BEGIN
229 --
230 l_counter := 1;
231 l_bool_match := FALSE;
232
233 -- Open cursor to fetch all screen entry values of Sickness Duration element.
234 OPEN get_details(p_assignment_id , p_effective_date );
235 -- Assign the values to a table type
236 FETCH get_details BULK COLLECT INTO l_tab;
237 CLOSE get_details;
238
239 -- Loop through each values for processing.
240 FOR l_cur in 1..l_tab.count LOOP
241 -- Assign values to local variables.
242 IF l_tab(l_cur).eename = 'Start Date' THEN
243 l_start_date := to_date(l_tab(l_cur).eevalue,'yyyy/mm/dd hh24:mi:ss') ;
244 elsif l_tab(l_cur).eename = 'End Date' THEN
245 l_end_date := to_date(l_tab(l_cur).eevalue,'yyyy/mm/dd hh24:mi:ss');
246 elsif l_tab(l_cur).eename = 'Sick Days' THEN
247 l_sick_days := l_tab(l_cur).eevalue;
248 /*Bug 5047360 fix */
249 elsif l_tab(l_cur).eename = 'Start Time' THEN
250 l_start_time := NVL(l_tab(l_cur).eevalue,'0');
251 elsif l_tab(l_cur).eename = 'End Time' THEN
252 l_end_time := NVL(l_tab(l_cur).eevalue,'0');
253 elsif l_tab(l_cur).eename = 'Sick Hours' THEN
254 l_sick_hours := l_tab(l_cur).eevalue;
255 end if;
256 -- Check no. of input values of override element is 4
257 --IF l_counter < 4 then
258 /*Bug 5047360 fix */
259 -- Check no. of input values of override element is 6
260 IF l_counter < 6 then
261 l_counter := l_counter + 1;
262 else
263 -- Check override element's start and end date matches with Absent element.
264 --if l_start_date = p_abs_start_date and l_end_date = p_abs_end_date then
265 /*Bug 5047360 fix-Check override element's start date,end date,start time and end time
266 matches with Absent element */
267 IF l_start_date = p_abs_start_date AND l_end_date = p_abs_end_date
268 AND l_start_time = p_abs_start_time AND l_end_time = p_abs_end_time THEN
269 -- Multiple entry exists with same start and end date
270 IF l_bool_match THEN
271 p_start_date := null;
272 p_end_date := null;
273 p_sick_days := null;
274 p_sick_hours := null;
275 return -1;
276 -- Exact match found
277 ELSE
278 l_bool_match := True;
279 END IF;
280 -- Assign input values to output variables.
281 p_start_date := l_start_date;
282 p_end_date := l_end_date;
283 p_sick_days := l_sick_days;
284 p_sick_hours := l_sick_hours;
285 end if;
286 l_counter := 1;
287 end if;
288 END LOOP;
289
290 -- Match found successfully
291 IF p_start_date is not null then
292 RETURN 1;
293 -- Override element exists but date doesnt match.
294 /*Bug 5047360 fix- commenting the else if part*/
295 /*elsif p_start_date is null and l_tab.count > 0 then
296 RETURN 2;*/
297 -- No override element attached
298 else
299 RETURN 0;
300 end if;
301 --
302 END get_sickness_dur_details;
303
304
305 FUNCTION get_le_sickpay_details
306 (p_effective_date IN DATE,
307 p_org_id IN NUMBER,
308 p_section27 OUT NOCOPY VARCHAR2
309 ) RETURN NUMBER is
310
311 /* Modified cursor */
312 CURSOR csr_get_sickpay_defaults(p_effective_date DATE, p_org_id NUMBER) is
313 SELECT org_information1
314 FROM hr_organization_information
318 order by org_information2;
315 WHERE organization_id = p_org_id
316 and org_information_context = 'DK_SICKPAY_DEFAULTS'
317 AND p_effective_date BETWEEN fnd_date.canonical_to_date( org_information2) and fnd_date.canonical_to_date( org_information3)
319 TYPE l_record is record (sec_27 varchar2(1));
320 l_rec l_record;
321 TYPE l_table is table of l_record index by BINARY_INTEGER;
322 l_tab l_table;
323 begin
324 OPEN csr_get_sickpay_defaults(p_effective_date,p_org_id);
325 FETCH csr_get_sickpay_defaults BULK COLLECT INTO l_tab;
326 CLOSE csr_get_sickpay_defaults;
327 IF l_tab.COUNT = 1 then
328 p_section27 := l_tab(1).sec_27;
329 RETURN 1;
330 Elsif l_tab.COUNT = 0 then
331 RETURN 0;
332 else
333 RETURN -1;
334 END if;
335 END get_le_sickpay_details;
336
337 /*Bug 5020916 fix - Fucntion to get the section 28 value based on the payroll processing start date*/
338 FUNCTION get_section28_details
339 (p_assignment_id IN NUMBER
340 ,p_effective_date IN DATE --payroll processing start date
341 ) RETURN VARCHAR2 IS
342 CURSOR csr_section28 IS
343 SELECT
344 NVL(hsck.segment18,'N')
345 FROM
346 per_all_assignments_f paaf
347 ,hr_soft_coding_keyflex hsck
348 WHERE
349 paaf.assignment_id = p_assignment_id
350 AND p_effective_date BETWEEN paaf.effective_start_date AND paaf.effective_end_date
351 AND hsck.soft_coding_keyflex_id = paaf.soft_coding_keyflex_id;
352
353 l_section28_reg hr_soft_coding_keyflex.segment18%TYPE ;
354
355 BEGIN
356 OPEN csr_section28;
357 FETCH csr_section28 INTO l_section28_reg;
358 CLOSE csr_section28;
359 RETURN l_section28_reg;
360 END get_section28_details;
361
362
363 /* Bug fix 5045710, added function get_worked_days */
364 FUNCTION get_worked_days(p_assignment_id IN number
365 ,p_period_start_date IN date
366 ,p_period_end_date IN date)RETURN NUMBER is
367
368 l_assignment_id NUMBER;
369 l_period_start_date DATE;
370 l_period_end_date DATE;
371 l_period_start_time varchar2(5);
372 l_period_end_time varchar2(5);
373
374 l_input_value varchar2(30);
375 l_screen_value varchar2(30);
376 l_rec_start_date l_type;
377 l_rec_end_date l_type;
378 l_rec_start_time l_type;
379 l_rec_end_time l_type;
380
381 l_records number;
382 l_absent_days number;
383 l_return number;
384 l_duration number;
385 l_days_or_hours varchar2(2);
386 l_include_event varchar2(2);
387 l_days_in_period number;
388 l_worked_days number;
389
390 l_start_date date;
391 l_end_date date;
392 l_start_time varchar2(10);
393 l_end_time varchar2(10);
394
395
396 CURSOR csr_get_details(p_period_start_date DATE,p_period_end_date DATE,p_assignment_id NUMBER,p_input_value VARCHAR2) is
397 SELECT eev.screen_entry_value screen_entry_value
398 FROM per_all_assignments_f asg
399 ,per_all_people_f per
400 ,pay_element_links_f el
401 ,pay_element_types_f et
402 ,pay_input_values_f iv
403 ,pay_element_entries_f ee
404 ,pay_element_entry_values_f eev
405 WHERE asg.assignment_id = p_assignment_id
406 AND per.person_id = asg.person_id
407 AND et.element_name IN ('Absent Sick','Absent Holiday')
408 AND et.legislation_code = 'DK'
409 AND iv.element_type_id = et.element_type_id
410 AND iv.name = p_input_value
411 AND el.business_group_id = per.business_group_id
412 AND el.element_type_id = et.element_type_id
413 AND ee.element_link_id = el.element_link_id
414 and ee.assignment_id = asg.assignment_id
415 AND eev.element_entry_id = ee.element_entry_id
416 AND eev.input_value_id = iv.input_value_id
417 AND ((p_period_start_date BETWEEN ee.effective_start_date AND ee.effective_end_date)
418 OR
419 (p_period_end_date BETWEEN ee.effective_start_date AND ee.effective_end_date)
420 OR
421 (p_period_start_date < ee.effective_start_date AND p_period_end_date > ee.effective_end_date))
422 ORDER BY ee.element_entry_id;
423
424
425 begin
426
427 l_period_start_date := p_period_start_date;
428 l_period_end_date := p_period_end_date;
429 l_assignment_id := p_assignment_id;
430
431 l_period_start_time := '00.00';
432 l_period_end_time := '23.59';
433
434 l_days_in_period :=0;
435 l_worked_days :=0;
436
437 l_input_value := 'Start Date';
438 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
439 FETCH csr_get_details BULK COLLECT INTO l_rec_start_date;
440 CLOSE csr_get_details;
441
442 l_input_value := 'End Date';
443 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
444 FETCH csr_get_details BULK COLLECT INTO l_rec_end_date;
445 CLOSE csr_get_details;
446
447 l_input_value := 'Start Time';
448 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
449 FETCH csr_get_details BULK COLLECT INTO l_rec_start_time;
450 CLOSE csr_get_details;
451
452 l_input_value := 'End Time';
453 OPEN csr_get_details(l_period_start_date ,l_period_end_date ,l_assignment_id ,l_input_value );
454 FETCH csr_get_details BULK COLLECT INTO l_rec_end_time;
455 CLOSE csr_get_details;
456
457 l_records := l_rec_start_date.count;
458 l_absent_days := 0;
459 l_return := -1;
460 l_duration := -1;
461 l_days_or_hours := 'D';
462 l_include_event := 'N';
463
464 FOR l_index IN 1 .. l_records LOOP
465 l_start_date := to_date(substr(l_rec_start_date(l_index),1,10),'YYYY/MM/DD');
469 l_end_time := '23.59';
466 l_end_date := to_date(substr(l_rec_end_date(l_index),1,10),'YYYY/MM/DD');
467
468 l_start_time := '00.00';
470
471 IF (l_start_date < l_period_start_date) then
472 l_start_date := l_period_start_date;
473 END IF;
474
475 IF (l_end_date > l_period_end_date) then
476 l_end_date := l_period_end_date;
477 END IF;
478
479 l_duration := -1;
480 l_return := hr_loc_work_schedule.calc_sch_based_dur(
481 p_assignment_id => l_assignment_id,
482 p_days_or_hours => l_days_or_hours,
483 p_include_event => l_include_event,
484 p_date_start => l_start_date,
485 p_date_end => l_end_date,
486 p_time_start => l_start_time,
487 p_time_end => l_end_time,
488 p_duration => l_duration);
489
490 /* Handled availability of work schedule for Sickness Report */
491 IF l_return <> 0 then
492 l_worked_days := -1;
493 ELSE
494 l_absent_days := l_absent_days + l_duration;
495 END if;
496 END LOOP;
497 IF l_worked_days = -1 then
498 RETURN l_worked_days;
499 END IF;
500 /* Handled availability of work schedule for Sickness Report */
501
502 l_duration := -1;
503 l_include_event := 'Y';
504 l_days_or_hours := 'D';
505
506 l_return := hr_loc_work_schedule.calc_sch_based_dur(
507 p_assignment_id => l_assignment_id,
508 p_days_or_hours => l_days_or_hours,
509 p_include_event => l_include_event,
510 p_date_start => l_period_start_date,
511 p_date_end => l_period_end_date,
512 p_time_start => l_period_start_time,
513 p_time_end => l_period_end_time,
514 p_duration => l_duration);
515
516 l_days_in_period := l_duration;
517 l_worked_days := l_days_in_period - l_absent_days;
518
519 RETURN l_worked_days;
520
521
522 END get_worked_days;
523
524
525 FUNCTION get_worked_hours_flag(p_assignment_id IN number
526 ,p_worked_days_limit IN number
527 ,p_worked_hours_limit IN number
528 ,p_period_end_date IN date) RETURN varchar2 is
529
530 l_assignment_id NUMBER;
531 l_worked_days_limit NUMBER;
532 l_worked_hours_limit NUMBER;
533 l_period_start_date DATE;
534 l_period_end_date DATE;
535 l_worked_hours number;
536 l_worked_days number;
537 l_total_worked_hours number;
538 l_total_worked_days number;
539 l_return varchar2(2);
540
541 begin
542
543 l_assignment_id := p_assignment_id;
544 l_worked_days_limit := p_worked_days_limit;
545 l_worked_hours_limit := p_worked_hours_limit;
546 l_period_end_date := p_period_end_date - 1;
547 l_period_start_date := p_period_end_date - l_worked_days_limit;
548
549 l_total_worked_days := -1;
550 l_total_worked_hours := -1;
551 l_worked_hours := -1;
552 l_worked_days := -1;
553 l_return := 'N';
554
555 l_total_worked_hours := get_worked_hours(
556 l_assignment_id
557 ,l_period_start_date
558 ,l_period_end_date);
559
560 l_total_worked_days := get_worked_days(
561 l_assignment_id
562 ,l_period_start_date
563 ,l_period_end_date);
564 /* reopned bug fix 5045710, following statement caused problem, which is not required
565 l_total_worked_days := l_total_worked_days - 1;
566 */
567
568 /* reopned bug fix 5045710, following conditions corrected
569 IF l_worked_hours > l_worked_hours_limit THEN
570 l_return := 'Y';
571 RETURN l_return;
572 ELSIF l_total_worked_days >= l_worked_days_limit AND l_worked_hours < l_worked_hours_limit THEN
573 l_return := 'N';
574 RETURN l_return;
575 END IF;
576 */
577
578 IF l_total_worked_hours >= l_worked_hours_limit THEN
579 l_return := 'Y';
580 RETURN l_return;
581 ELSIF l_total_worked_days >= l_worked_days_limit AND l_total_worked_hours < l_worked_hours_limit THEN
582 l_return := 'N';
583 RETURN l_return;
584 END IF;
585
586 l_period_end_date := l_period_start_date - 1;
587 l_period_start_date := l_period_start_date - (l_worked_days_limit - l_total_worked_days);
588
589 WHILE (l_total_worked_hours < l_worked_hours_limit AND l_total_worked_days < l_worked_days_limit)
590 LOOP
591
592 l_worked_hours := get_worked_hours(
593 l_assignment_id
594 ,l_period_start_date
595 ,l_period_end_date);
596 l_total_worked_hours := l_total_worked_hours + l_worked_hours;
597
598 l_worked_days := get_worked_days(
599 l_assignment_id
600 ,l_period_start_date
601 ,l_period_end_date);
602 l_total_worked_days := l_total_worked_days + l_worked_days;
603
604 l_period_end_date := l_period_start_date - 1;
605 l_period_start_date := l_period_start_date - (l_worked_days_limit - l_total_worked_days);
606
607 END LOOP;
608
609 IF l_total_worked_hours > l_worked_hours_limit THEN
610 l_return := 'Y';
611 ELSE
612 l_return := 'N';
613 END IF;
614
615 RETURN l_return;
616
617 END get_worked_hours_flag;
618
619 END pay_dk_sickpay_pkg;