[Home] [Help]
PACKAGE BODY: APPS.PAY_ADVANCE_PAY_PKG
Source
1 package body pay_advance_pay_pkg as
2 /* $Header: paywsahp.pkb 120.2 2012/01/19 08:27:56 rpahune ship $ */
3 --
4 --------------------------------------------------------------------------------
5 /*
9 | All rights reserved. |
6 +==============================================================================+
7 | Copyright (c) 1994 Oracle Corporation |
8 | Redwood Shores, California, USA |
10 +==============================================================================+
11 --
12 Name
13 PAY_ADVANCE_PAY_PKG
14
15 Purpose
16 Server agent for PAYWSAHP form.
17
18 History
19
20 Date Ver WW Bug By Comment
21 -----------------------------------------------------------------------------
22 18 Feb 97 40.00 M.Lisiecki Created
23 40.1-40.3 M.Lisiecki Pre release changes.
24 17 Jun 97 40.4 M.Lisiecki Changed advanced_periods.
25 25 Jun 97 40.5 M.Lisiecki Changed get_balance and advance_amount
26 to return char values, without any
27 formating.
28 25 Jun 97 40.6 M.Lisiecki Changed get_balance return statement
29 back to number value.
30 10 Feb 98 110.2 620296 T.Battoo Added parameter to advance amount and
31 get processed flag function
32
33 25 Mar 98 110.3 634019 M.Lisiecki Changed advance_amount and get_processed_flag
34 adding effective date conditions.
35 24 Mar 99 115.1 S.Doshi Flexible Dates Conversion - to_date
36 06 Apr 99 115.2 S.Doshi Flexible Dates Conversion - to_char
37 24 Nov 99 115.4 SuSivasu Passed Extrernal Date value to the element
38 entry api rather than canonical format.
39 20 Nov 04 115.5 SuSivasu Fixed the get_balance procedure restrict
40 the user entity to the given legislation.
41 21 Jul 04 115.6 SuSivasu Fixes for GSCC errors.
42 17 Aug 04 115.7 SuSivasu Added get_advance_period_start_date
43 and get_advance_period_end_date.
44 10 Mar 11 120.0.12000000.2 bkeshary Modified for International calender support
45 Bug no 11830805
46
47
48 -----------------------------------------------------------------------------
49 */
50 function advance_amount
51 --
52 -- Returns calculated advance amount for the assignment based on
53 -- Advance element entry's Pay Value.
54 --
55 (
56 p_advance_pay_start_date date,
57 p_target_entry_id number,
58 p_assignment_id number
59 ) return varchar2
60 is
61 --
62 l_advance_amount varchar2(60);
63
64 cursor advance_amount is
65 select peevf.screen_entry_value
66 from pay_element_entries_f peef,
67 pay_element_entry_values_f peevf
68 where peef.assignment_id = p_assignment_id and
69 peef.target_entry_id = p_target_entry_id and
70 peef.effective_start_date < p_advance_pay_start_date and
71 peef.element_entry_id = peevf.element_entry_id and
72 peef.effective_start_date = peevf.effective_start_date and
73 peef.effective_end_date = peevf.effective_end_date;
74
75 --
76 begin
77 --
78 open advance_amount;
79 fetch advance_amount into l_advance_amount;
80 close advance_amount;
81
82 return l_advance_amount;
83
84 end advance_amount;
85 -------------------------------------------------------------------------------
86 function get_balance
87 (
88 p_legislation_code varchar2,
89 p_balance_lookup_name varchar2,
90 p_assignment_id number,
91 p_session_date date
92 ) return number
93 is
94 --
95 -- Returns up to date balance amount for the assignment.
96 --
97 l_balance_value number;
98 l_creator_id number;
99
100 cursor creator_id is
101 select fue.creator_id
102 from ff_user_entities fue,
103 ff_database_items fdi,
104 pay_legislation_rules plr
105 where
106 plr.rule_type = p_balance_lookup_name and
107 plr.legislation_code = p_legislation_code and
108 plr.rule_mode = fdi.user_name and
109 fdi.user_entity_id = fue.user_entity_id and
110 fue.creator_type = 'B' and
111 ((fue.business_group_id is null and
112 fue.legislation_code = plr.legislation_code) or
113 (fue.business_group_id is not null and
114 exists (select null
115 from per_all_assignments_f asg
116 where asg.assignment_id = p_assignment_id
117 and fue.business_group_id = asg.business_group_id)));
118 --
119 begin
120 --
121 hr_utility.set_location('pay_advance_pay_pkg.get_balance', 5);
122
123 open creator_id;
124 fetch creator_id into l_creator_id;
125 --
126 if creator_id%found then
127 l_balance_value := pay_balance_pkg.get_value(l_creator_id,
128 p_assignment_id,
129 p_session_date);
130 --
131 end if;
132 --
133 close creator_id;
134
135 return l_balance_value;
136
137 hr_utility.set_location('pay_advance_pay_pkg.get_balance', 80);
138
139 end get_balance;
140 -------------------------------------------------------------------------------
141 function get_processed_flag
142 (
143 p_advance_pay_start_date date,
144 p_target_entry_id number,
145 p_assignment_id number
146 ) return varchar2
147 is
148 --
149 -- Returns the processed flag for advance payment.
150 -- This flag is 'Y' after the advance pay process
154
151 -- has been run.
152 --
153 l_processed_flag varchar2(30);
155 cursor processed_flag is
156 select 'Y'
157 from pay_element_entries_f peef,
158 pay_element_entry_values_f peevf
159 where peef.assignment_id = p_assignment_id and
160 peef.target_entry_id = p_target_entry_id and
161 peef.effective_start_date < p_advance_pay_start_date and
162 peef.element_entry_id = peevf.element_entry_id and
163 peef.effective_start_date = peevf.effective_start_date and
164 peef.effective_end_date = peevf.effective_end_date;
165 --
166 begin
167 --
168 l_processed_flag := 'N';
169 --
170 open processed_flag;
171 fetch processed_flag into l_processed_flag;
172 close processed_flag;
173
174 return l_processed_flag;
175
176 end get_processed_flag;
177 -------------------------------------------------------------------------------
178 function advanced_periods
179 (
180 p_assignment_id number,
181 p_advance_pay_start_date date,
182 p_advance_pay_end_date date
183 )
184 return number
185 is
186 --
187 -- Returns number of periods within advanced payment dates.
188 --
189 l_advanced_periods number;
190
191 cursor advanced_periods is
192 select count(ptp.time_period_id)
193 from per_time_periods ptp,
194 per_assignments_f paf
195 where paf.assignment_id = p_assignment_id and
196 p_advance_pay_start_date between paf.effective_start_date
197 and paf.effective_end_date and
198 ptp.payroll_id = paf.payroll_id and
199 ptp.start_date >= p_advance_pay_start_date and
200 ptp.end_date <= p_advance_pay_end_date;
201 --
202 begin
203 --
204 open advanced_periods;
205 fetch advanced_periods into l_advanced_periods;
206 if advanced_periods%notfound then
207 l_advanced_periods := 0;
208 end if;
209 close advanced_periods;
210 --
211 return l_advanced_periods;
212 --
213 end advanced_periods;
214 ------------------------------------------------------------------------
215 function get_period_end_date
216 (
217 p_assignment_id number,
218 p_session_date date
219 )
220 return date
221 is
222 --
223 -- Returns payroll period end date based on the session date.
224 --
225 l_period_end_date date;
226
227 cursor period_end_date is
228 select ptp.end_date
229 from
230 per_time_periods ptp,
231 pay_payrolls_f ppf,
232 per_assignments_f paf
233 where
234 paf.assignment_id = p_assignment_id and
235 p_session_date between paf.effective_start_date
236 and paf.effective_end_date and
237 ppf.payroll_id = paf.payroll_id and
238 p_session_date between ppf.effective_start_date
239 and ppf.effective_end_date and
240 ptp.payroll_id = ppf.payroll_id and
241 ptp.start_date <= p_session_date and
242 ptp.end_date >= p_session_date;
243 --
244 begin
245 --
246 hr_utility.set_location('pay_advance_pay_pkg.get_period_end_date' , 5);
247
248 open period_end_date;
249 fetch period_end_date into l_period_end_date;
250
251 if period_end_date%notfound then
252 hr_utility.trace('session_date'|| fnd_date.date_to_canonical(p_session_date));
253 hr_utility.set_message (801,'PAY_52103_PERIOD_NOT_EXIST');
254 hr_utility.raise_error;
255 end if;
256 --
257 close period_end_date;
258 --
259 return l_period_end_date;
260 --
261 hr_utility.set_location('pay_advance_pay_pkg.get_period_end_date' , 80);
262 --
263 end get_period_end_date;
264 ------------------------------------------------------------------------
265 function get_period_start_date
266 (
267 p_assignment_id number,
268 p_session_date date
269 )
270 return date
271 is
272 --
273 -- Returns payroll period start date based on the session date.
274 --
275 l_period_start_date date;
276
277 cursor period_start_date is
278 select ptp.start_date
279 from
280 per_time_periods ptp,
281 pay_payrolls_f ppf,
282 per_assignments_f paf
283 where
284 paf.assignment_id = p_assignment_id and
285 p_session_date between paf.effective_start_date
286 and paf.effective_end_date and
287 ppf.payroll_id = paf.payroll_id and
288 p_session_date between ppf.effective_start_date
289 and ppf.effective_end_date and
290 ptp.payroll_id = ppf.payroll_id and
291 ptp.start_date <= p_session_date and
292 ptp.end_date >= p_session_date;
293
294 begin
295
296 hr_utility.set_location('pay_advance_pay_pkg.get_period_start_date' , 5);
297
298 open period_start_date;
299 fetch period_start_date into l_period_start_date;
300
301 if period_start_date%notfound then
302 hr_utility.set_message (801, 'PAY_52103_PERIOD_NOT_EXIST');
303 hr_utility.raise_error;
304 end if;
305 --
306 close period_start_date;
307 --
308 return l_period_start_date;
309 --
310 hr_utility.set_location('pay_advance_pay_pkg.get_period_start_date' , 80);
311 --
312 end get_period_start_date;
313 ------------------------------------------------------------------------
314 function get_advance_period_start_date
315 (
316 p_assignment_id number,
317 p_session_date date,
318 p_flag varchar2
319 )
320 return date
321 is
322 --
326
323 -- Returns payroll period start date based on the session date.
324 --
325 l_period_start_date date;
327 cursor period_start_date is
328 select aptp.start_date
329 from
330 per_time_periods ptp,
331 pay_payrolls_f ppf,
332 per_assignments_f paf,
333 per_time_periods aptp
334 where
335 paf.assignment_id = p_assignment_id and
336 p_session_date between paf.effective_start_date
337 and paf.effective_end_date and
338 ppf.payroll_id = paf.payroll_id and
339 p_session_date between ppf.effective_start_date
340 and ppf.effective_end_date and
341 ptp.payroll_id = ppf.payroll_id and
342 ptp.start_date <= p_session_date and
343 ptp.end_date >= p_session_date and
344 aptp.payroll_id = ppf.payroll_id and
345 ptp.start_date <= aptp.regular_payment_date and
346 ptp.end_date >= aptp.regular_payment_date;
347 --
348 cursor r_period_start_date is
349 select aptp.start_date
350 from
351 per_time_periods ptp,
352 pay_payrolls_f ppf,
353 per_assignments_f paf,
354 per_time_periods aptp
355 where
356 paf.assignment_id = p_assignment_id and
357 p_session_date between paf.effective_start_date
358 and paf.effective_end_date and
359 ppf.payroll_id = paf.payroll_id and
360 p_session_date between ppf.effective_start_date
361 and ppf.effective_end_date and
362 ptp.payroll_id = ppf.payroll_id and
363 ptp.start_date <= p_session_date and
364 ptp.end_date >= p_session_date and
365 aptp.payroll_id = ppf.payroll_id and
366 aptp.start_date <= ptp.regular_payment_date and
367 aptp.end_date >= ptp.regular_payment_date;
368
369 begin
370
371 hr_utility.set_location('pay_advance_pay_pkg.get_advance_period_start_date' , 5);
372 if p_flag = 'N' then
373 open period_start_date;
374 fetch period_start_date into l_period_start_date;
375
376 if period_start_date%notfound then
377 hr_utility.set_message (801, 'PAY_52103_PERIOD_NOT_EXIST');
378 hr_utility.raise_error;
379 end if;
380 --
381 close period_start_date;
382 --
383 else
384 open r_period_start_date;
385 fetch r_period_start_date into l_period_start_date;
386
387 if r_period_start_date%notfound then
388 hr_utility.set_message (801, 'PAY_52103_PERIOD_NOT_EXIST');
389 hr_utility.raise_error;
390 end if;
391 --
392 close r_period_start_date;
393 --
394 end if;
395 --
396 return l_period_start_date;
397 --
398 hr_utility.set_location('pay_advance_pay_pkg.get_advance_period_start_date' , 80);
399 --
400 end get_advance_period_start_date;
401 ------------------------------------------------------------------------
402 function get_advance_period_end_date
403 (
404 p_assignment_id number,
405 p_session_date date,
406 p_flag varchar2
407 )
408 return date
409 is
410 --
411 -- Returns payroll period end date based on the session date.
412 --
413 l_period_start_date date;
414
415 cursor period_start_date is
416 select aptp.end_date
417 from
418 per_time_periods ptp,
419 pay_payrolls_f ppf,
420 per_assignments_f paf,
421 per_time_periods aptp
422 where
423 paf.assignment_id = p_assignment_id and
424 p_session_date between paf.effective_start_date
425 and paf.effective_end_date and
426 ppf.payroll_id = paf.payroll_id and
427 p_session_date between ppf.effective_start_date
428 and ppf.effective_end_date and
429 ptp.payroll_id = ppf.payroll_id and
430 ptp.start_date <= p_session_date and
431 ptp.end_date >= p_session_date and
432 aptp.payroll_id = ppf.payroll_id and
433 ptp.start_date <= aptp.regular_payment_date and
434 ptp.end_date >= aptp.regular_payment_date;
435 --
436 cursor r_period_start_date is
437 select aptp.end_date
438 from
439 per_time_periods ptp,
440 pay_payrolls_f ppf,
441 per_assignments_f paf,
442 per_time_periods aptp
443 where
444 paf.assignment_id = p_assignment_id and
445 p_session_date between paf.effective_start_date
446 and paf.effective_end_date and
447 ppf.payroll_id = paf.payroll_id and
448 p_session_date between ppf.effective_start_date
449 and ppf.effective_end_date and
450 ptp.payroll_id = ppf.payroll_id and
451 ptp.start_date <= p_session_date and
452 ptp.end_date >= p_session_date and
453 aptp.payroll_id = ppf.payroll_id and
454 aptp.start_date <= ptp.regular_payment_date and
455 aptp.end_date >= ptp.regular_payment_date;
456
457 begin
458
459 hr_utility.set_location('pay_advance_pay_pkg.get_advance_period_end_date' , 5);
460
461 if p_flag = 'N' then
462 --
463 open period_start_date;
464 fetch period_start_date into l_period_start_date;
465
466 if period_start_date%notfound then
467 hr_utility.set_message (801, 'PAY_52103_PERIOD_NOT_EXIST');
468 hr_utility.raise_error;
469 end if;
470 --
471 close period_start_date;
472 --
473 else
474 --
475 open r_period_start_date;
476 fetch r_period_start_date into l_period_start_date;
477
478 if r_period_start_date%notfound then
479 hr_utility.set_message (801, 'PAY_52103_PERIOD_NOT_EXIST');
480 hr_utility.raise_error;
481 end if;
482 --
483 close r_period_start_date;
484 --
485 end if;
486 --
487 return l_period_start_date;
488 --
492 ------------------------------------------------------------------------
489 hr_utility.set_location('pay_advance_pay_pkg.get_advance_period_end_date' , 80);
490 --
491 end get_advance_period_end_date;
493 procedure insert_indicator_entries
494 (
495 p_defer_flag in varchar2,
496 p_assignment_id in number,
497 p_session_date in out nocopy date,
498 p_pai_element_entry_id in out nocopy number,
499 p_pai_element_type_id in number,
500 p_pai_sd_input_value_id in number,
501 p_pai_ed_input_value_id in number,
502 p_pai_start_date in date,
503 p_pai_end_date in date,
504 p_advance_pay_start_date in date,
505 p_advance_pay_end_date in date,
506 p_arrears_flag in varchar2,
507 p_periods_advanced in number,
508 p_ai_element_type_id in number,
509 p_ai_af_input_value_id in number,
510 p_ai_dpf_input_value_id in number
511 )
512 is
513 --
514 -- Inserts entry for Pay Advance Indicator and corresponding entries
515 -- for Advance Indicator.
516 --
517 l_element_entry_start_date date;
518 l_element_entry_end_date date; --to be worked out by entry API
519 l_ai_element_entry_id number;
520 l_pay_periods number;
521 l_arrears_offset number;
522 l_advance_pay varchar2(30);
523 l_defer_pay varchar2(30);
524 --
525 l_session_date date;
526 l_pai_element_entry_id number;
527 --
528 begin
529 --
530 hr_utility.set_location('pay_advance_pay_pkg.insert_indicator_entries', 5);
531 --
532 l_arrears_offset := 0;
533 l_advance_pay := 'Y';
534 l_defer_pay := p_defer_flag;
535 --
536 l_session_date := p_session_date;
537 l_pai_element_entry_id := p_pai_element_entry_id;
538 --
539 -- Pay Advance Indicator Entry.
540 --
541 -- entry start and end dates are both end of the period. If assignment starts
542 -- or finishes in the middle of the period, entry will still be created.
543 l_element_entry_start_date := pay_advance_pay_pkg.get_period_end_date
544 (
545 p_assignment_id,
546 l_session_date
547 );
548 --
549 l_element_entry_end_date := l_element_entry_start_date;
550
551 hr_utility.set_location('pay_advance_pay_pkg.insert_indicator_entries', 60);
552 --
553 hr_entry_api.insert_element_entry
554 (
555 p_effective_start_date => l_element_entry_start_date,
556 p_effective_end_date => l_element_entry_end_date,
557 p_element_entry_id => l_pai_element_entry_id,
558 p_assignment_id => p_assignment_id,
559 p_element_link_id => hr_entry_api.get_link
560 (
561 p_assignment_id,
562 p_pai_element_type_id,
563 l_session_date
564 ),
565 p_creator_type => 'DF',
566 p_entry_type => 'E',
567 p_input_value_id1 => p_pai_sd_input_value_id,
568 p_input_value_id2 => p_pai_ed_input_value_id,
569 p_entry_value1 => fnd_date.date_to_displaydate(p_pai_start_date,calendar_aware=>fnd_date.calendar_aware_alt), --modified as per bug 11830805
570 p_entry_value2 => fnd_date.date_to_displaydate(p_pai_end_date,calendar_aware=>fnd_date.calendar_aware_alt) --modified as per bug 11830805
571 );
572
573 -- set out value
574 l_session_date := l_element_entry_start_date;
575
576 --
577 -- Advance Indicator entries.
578 --
579
580 -- In case of arrears payroll there will be one additional entry.
581
582 if p_arrears_flag = 'Y' then
583 l_arrears_offset := 1;
584 end if;
585 --
586 -- dates changed in the loop to fall within each pay period
587
588 l_element_entry_start_date := p_advance_pay_start_date;
589
590 hr_utility.trace('l_element_entry_start_date (1): ' ||
591 fnd_date.date_to_canonical(l_element_entry_start_date));
592
593 l_element_entry_end_date := pay_advance_pay_pkg.get_period_end_date
594 (
595 p_assignment_id,
596 l_element_entry_start_date
597 );
598 --
599 for l_pay_periods in 1..(p_periods_advanced + l_arrears_offset) loop
600 --
601 -- set advance pay flag to 'N' for 1st period in arrears
602
603 if p_arrears_flag = 'Y' and l_pay_periods = 1 then
604 l_advance_pay := 'N';
605 else
606 l_advance_pay := 'Y';
607 end if;
608
609 -- set defer pay flag to 'N' for last period in arrears
610 if p_arrears_flag = 'Y' and
611 l_pay_periods = (p_periods_advanced + l_arrears_offset) then
612 l_defer_pay := 'N';
613 end if;
614 --
615 hr_utility.set_location('pay_advance_pay_pkg.insert_indicator_entries', 70);
616 --
617 hr_entry_api.insert_element_entry
618 (
619 p_effective_start_date => l_element_entry_start_date,
620 p_effective_end_date => l_element_entry_end_date,
621 p_element_entry_id => l_ai_element_entry_id,
622 p_assignment_id => p_assignment_id,
623 p_element_link_id => hr_entry_api.get_link
624 (
625 p_assignment_id,
626 p_ai_element_type_id,
627 l_element_entry_start_date
628 ),
629 p_creator_type => 'DF',
630 p_entry_type => 'E',
631 p_input_value_id1 => p_ai_af_input_value_id,
632 p_input_value_id2 => p_ai_dpf_input_value_id,
633 p_entry_value1 => hr_general.decode_lookup
634 ('YES_NO',l_advance_pay),
635 p_entry_value2 => hr_general.decode_lookup
636 ('YES_NO',l_defer_pay)
637 );
638 --
639 -- move to the next pay period
640 --
641 hr_utility.trace('l_element_entry_start_date (2): ' ||
642 fnd_date.date_to_canonical(l_element_entry_start_date));
643 l_element_entry_start_date := pay_advance_pay_pkg.get_period_end_date
644 (
645 p_assignment_id,
646 l_element_entry_start_date
647 ) + 1;
648 --
649 hr_utility.trace('l_element_entry_start_date (3): ' ||
650 fnd_date.date_to_canonical(l_element_entry_start_date));
651 --
652 l_element_entry_end_date := pay_advance_pay_pkg.get_period_end_date
653 (
654 p_assignment_id,
655 l_element_entry_start_date
656 );
657 --
658 end loop;
659 --
660 p_session_date := l_session_date;
661 p_pai_element_entry_id := l_pai_element_entry_id;
662 --
663 hr_utility.set_location('pay_advance_pay_pkg.insert_indicator_entries', 80);
664 --
665 end insert_indicator_entries;
666 ------------------------------------------------------------------------
667 procedure delete_indicator_entries
668 (
669 p_assignment_id in number,
670 p_legislation_code in varchar2,
671 p_session_date in date,
672 p_pai_element_entry_id in number,
673 p_arrears_flag in varchar2
674 )
675 is
676 --
677 -- Deletes entry for Pay Advance Indicator and corresponding
678 -- entries for Advance Indicator.
679
680 l_ai_element_entry_id number;
681 l_effective_start_date date;
682 l_indicators_start_date date;
683 l_indicators_end_date date;
684 --
685 cursor advance_dates is
686 select
687 -- min of two input values - advance pay period start date
688 min(fnd_date.canonical_to_date(peevf.screen_entry_value)),
689 -- max of two input values - advance pay period end date
690 max(fnd_date.canonical_to_date(peevf.screen_entry_value))
691 from pay_element_entry_values_f peevf
692 where peevf.element_entry_id = p_pai_element_entry_id;
693 --
694 cursor corresponding_ai_entries is
695 --returns element_entry_ids of all Advance Indicator entries that
696 --correspond to the Pay Advance Indicator in question.
697 --
698 select peef.element_entry_id, peef.effective_start_date
699 from
700 pay_legislation_rules plr,
701 pay_element_types_f petf,
702 pay_element_links_f pelf,
703 pay_element_entries_f peef
704 where
705 -- entry belongs to this assignment
706 peef.assignment_id = p_assignment_id and
707 -- entry is of Advance Indicator type
708 peef.element_link_id = pelf.element_link_id and
709 pelf.element_type_id = petf.element_type_id and
710 petf.element_type_id = plr.rule_mode and
711 plr.legislation_code = p_legislation_code and
712 plr.rule_type = 'ADVANCE_INDICATOR' and
713 -- entry exists within advance period for the assignment
714 peef.effective_start_date between l_indicators_start_date
715 and l_indicators_end_date;
716
717 begin
718 --
719 hr_utility.set_location('pay_advance_pay_pkg.delete_indicator_entries' , 5);
720 --
721 -- fetch advance dates
722 open advance_dates;
723 fetch advance_dates into l_indicators_start_date,
724 l_indicators_end_date;
725 close advance_dates;
726
727 -- delete Pay Advance Indicator.
728
729 hr_entry_api.delete_element_entry
730 (
731 p_dt_delete_mode => 'ZAP',
732 p_session_date => p_session_date,
733 p_element_entry_id => p_pai_element_entry_id
734 );
735 --
736 -- for arrears payroll, there will be an aditional Advance Indicator entry
737 if p_arrears_flag = 'Y' then
738 l_indicators_start_date := pay_advance_pay_pkg.get_period_start_date
739 (
740 p_assignment_id,
741 l_indicators_start_date - 1
742 );
743 end if;
744
745 -- trace dates used to remove Advance Indicators
746 hr_utility.trace('p_pai_element_entry_id: ' || to_char(p_pai_element_entry_id));
747 hr_utility.trace('l_indicators_start_date: ' || fnd_date.date_to_canonical(l_indicators_start_date));
748 hr_utility.trace('l_indicators_end_date: ' || fnd_date.date_to_canonical(l_indicators_end_date));
749
750 -- Advance Indicator(s)
751
752 -- first Advance Indicator element_entry_id
753
754 open corresponding_ai_entries;
755 fetch corresponding_ai_entries into l_ai_element_entry_id,
756 l_effective_start_date;
757
758 while corresponding_ai_entries%found loop
759
760 hr_utility.set_location('pay_advance_pay_pkg.delete_indicator_entries' , 10);
761
762 hr_entry_api.delete_element_entry
763 (
764 p_dt_delete_mode =>'ZAP',
765 p_session_date =>l_effective_start_date,
766 p_element_entry_id =>l_ai_element_entry_id
767 );
768
769 -- fetch next Advance Indicator
770 fetch corresponding_ai_entries into l_ai_element_entry_id,
771 l_effective_start_date;
772
773 end loop;
774
775 close corresponding_ai_entries;
776
777 hr_utility.set_location('pay_advance_pay_pkg.delete_indicator_entries' , 80);
778
779 end delete_indicator_entries;
780 ------------------------------------------------------------------------
781 end pay_advance_pay_pkg;