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