1: PACKAGE BODY hxc_timecard_utilities AS
2: /* $Header: hxctcutil.pkb 120.30.12020000.4 2013/05/16 09:35:43 pravesk ship $ */
3:
4: g_debug boolean := hr_utility.debug_enabled;
5: g_assignment_periods periods;
6: g_past_date_limit DATE;
7: g_future_date_limit DATE;
8: g_rec_period_start_date hxc_recurring_periods.start_date%TYPE;
289: BEGIN
290:
291:
292: IF g_debug THEN
293: hr_utility.trace('add_period start=' || to_char(p_start_date, 'YYYY/MM/DD'));
294: hr_utility.trace('add_period end=' || to_char(p_end_date, 'YYYY/MM/DD'));
295: END IF;
296:
297: IF g_debug THEN
290:
291:
292: IF g_debug THEN
293: hr_utility.trace('add_period start=' || to_char(p_start_date, 'YYYY/MM/DD'));
294: hr_utility.trace('add_period end=' || to_char(p_end_date, 'YYYY/MM/DD'));
295: END IF;
296:
297: IF g_debug THEN
298: hr_utility.trace('> TRUNC(p_future_date_limit)=' || TRUNC(p_future_date_limit));
294: hr_utility.trace('add_period end=' || to_char(p_end_date, 'YYYY/MM/DD'));
295: END IF;
296:
297: IF g_debug THEN
298: hr_utility.trace('> TRUNC(p_future_date_limit)=' || TRUNC(p_future_date_limit));
299: hr_utility.trace('> TRUNC(p_assignment_end)=' || TRUNC(p_assignment_end));
300: hr_utility.trace('> p_position=' || p_position);
301: hr_utility.trace('> IF TRUNC(p_start_date) > TRUNC(p_future_date_limit) '
302: || ' OR TRUNC(p_start_date) > TRUNC(p_assignment_end)');
295: END IF;
296:
297: IF g_debug THEN
298: hr_utility.trace('> TRUNC(p_future_date_limit)=' || TRUNC(p_future_date_limit));
299: hr_utility.trace('> TRUNC(p_assignment_end)=' || TRUNC(p_assignment_end));
300: hr_utility.trace('> p_position=' || p_position);
301: hr_utility.trace('> IF TRUNC(p_start_date) > TRUNC(p_future_date_limit) '
302: || ' OR TRUNC(p_start_date) > TRUNC(p_assignment_end)');
303: END IF;
296:
297: IF g_debug THEN
298: hr_utility.trace('> TRUNC(p_future_date_limit)=' || TRUNC(p_future_date_limit));
299: hr_utility.trace('> TRUNC(p_assignment_end)=' || TRUNC(p_assignment_end));
300: hr_utility.trace('> p_position=' || p_position);
301: hr_utility.trace('> IF TRUNC(p_start_date) > TRUNC(p_future_date_limit) '
302: || ' OR TRUNC(p_start_date) > TRUNC(p_assignment_end)');
303: END IF;
304:
297: IF g_debug THEN
298: hr_utility.trace('> TRUNC(p_future_date_limit)=' || TRUNC(p_future_date_limit));
299: hr_utility.trace('> TRUNC(p_assignment_end)=' || TRUNC(p_assignment_end));
300: hr_utility.trace('> p_position=' || p_position);
301: hr_utility.trace('> IF TRUNC(p_start_date) > TRUNC(p_future_date_limit) '
302: || ' OR TRUNC(p_start_date) > TRUNC(p_assignment_end)');
303: END IF;
304:
305: IF p_position = 'AFTER'
307: IF TRUNC(p_start_date) > TRUNC(p_future_date_limit)
308: OR TRUNC(p_start_date) > TRUNC(p_assignment_end)
309: THEN
310: IF g_debug THEN
311: hr_utility.trace('not added');
312: END IF;
313: RETURN FALSE;
314: END IF;
315:
322: p_periods(l_index).end_date := p_end_date;
323: p_periods(l_index).p_set_more_period := p_set_more_period;
324:
325: IF g_debug THEN
326: hr_utility.trace('added ok');
327: END IF;
328: RETURN TRUE;
329: END add_period;
330:
383: LOOP
384: EXIT WHEN NOT p_periods.exists(l_index);
385:
386: IF g_debug THEN
387: hr_utility.trace('start=' || p_periods(l_index).start_date
388: || ' end=' || p_periods(l_index).end_date
389: || 'exists=' || NVL(p_periods(l_index).exist_flag, 'N'));
390: END IF;
391:
524:
525:
526: BEGIN
527:
528: g_debug := hr_utility.debug_enabled;
529: g_num_future_entries := 10;
530: g_num_past_entries := 10;
531:
532: IF g_debug THEN
530: g_num_past_entries := 10;
531:
532: IF g_debug THEN
533: l_proc := 'get_periods';
534: hr_utility.set_location (g_package||l_proc, 10);
535: END IF;
536:
537: IF g_debug THEN
538: hr_utility.trace('> In hxc_timecard_utilities.get_periods.');
534: hr_utility.set_location (g_package||l_proc, 10);
535: END IF;
536:
537: IF g_debug THEN
538: hr_utility.trace('> In hxc_timecard_utilities.get_periods.');
539: hr_utility.trace('> p_resource_id ::'||p_resource_id);
540: hr_utility.trace('> p_resource_type ::'||p_resource_type);
541: hr_utility.trace('> p_current_date ::'||p_current_date);
542: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
535: END IF;
536:
537: IF g_debug THEN
538: hr_utility.trace('> In hxc_timecard_utilities.get_periods.');
539: hr_utility.trace('> p_resource_id ::'||p_resource_id);
540: hr_utility.trace('> p_resource_type ::'||p_resource_type);
541: hr_utility.trace('> p_current_date ::'||p_current_date);
542: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
543: END IF;
536:
537: IF g_debug THEN
538: hr_utility.trace('> In hxc_timecard_utilities.get_periods.');
539: hr_utility.trace('> p_resource_id ::'||p_resource_id);
540: hr_utility.trace('> p_resource_type ::'||p_resource_type);
541: hr_utility.trace('> p_current_date ::'||p_current_date);
542: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
543: END IF;
544:
537: IF g_debug THEN
538: hr_utility.trace('> In hxc_timecard_utilities.get_periods.');
539: hr_utility.trace('> p_resource_id ::'||p_resource_id);
540: hr_utility.trace('> p_resource_type ::'||p_resource_type);
541: hr_utility.trace('> p_current_date ::'||p_current_date);
542: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
543: END IF;
544:
545: IF g_debug THEN
538: hr_utility.trace('> In hxc_timecard_utilities.get_periods.');
539: hr_utility.trace('> p_resource_id ::'||p_resource_id);
540: hr_utility.trace('> p_resource_type ::'||p_resource_type);
541: hr_utility.trace('> p_current_date ::'||p_current_date);
542: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
543: END IF;
544:
545: IF g_debug THEN
546: hr_utility.trace('> calling find_current_period');
542: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
543: END IF;
544:
545: IF g_debug THEN
546: hr_utility.trace('> calling find_current_period');
547: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
548: hr_utility.trace('> g_period_type ::'||g_period_type);
549: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
550: hr_utility.trace('> p_current_date ::'||p_current_date);
543: END IF;
544:
545: IF g_debug THEN
546: hr_utility.trace('> calling find_current_period');
547: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
548: hr_utility.trace('> g_period_type ::'||g_period_type);
549: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
550: hr_utility.trace('> p_current_date ::'||p_current_date);
551: END IF;
544:
545: IF g_debug THEN
546: hr_utility.trace('> calling find_current_period');
547: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
548: hr_utility.trace('> g_period_type ::'||g_period_type);
549: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
550: hr_utility.trace('> p_current_date ::'||p_current_date);
551: END IF;
552:
545: IF g_debug THEN
546: hr_utility.trace('> calling find_current_period');
547: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
548: hr_utility.trace('> g_period_type ::'||g_period_type);
549: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
550: hr_utility.trace('> p_current_date ::'||p_current_date);
551: END IF;
552:
553:
546: hr_utility.trace('> calling find_current_period');
547: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
548: hr_utility.trace('> g_period_type ::'||g_period_type);
549: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
550: hr_utility.trace('> p_current_date ::'||p_current_date);
551: END IF;
552:
553:
554: --get current period
561: ,p_period_end => l_end_date
562: );
563:
564: IF g_debug THEN
565: hr_utility.trace('> returned from find_current_period');
566: hr_utility.trace('> l_start_date ::'||l_start_date);
567: hr_utility.trace('> l_end_date ::'||l_end_date);
568: END IF;
569:
562: );
563:
564: IF g_debug THEN
565: hr_utility.trace('> returned from find_current_period');
566: hr_utility.trace('> l_start_date ::'||l_start_date);
567: hr_utility.trace('> l_end_date ::'||l_end_date);
568: END IF;
569:
570: IF g_debug THEN
563:
564: IF g_debug THEN
565: hr_utility.trace('> returned from find_current_period');
566: hr_utility.trace('> l_start_date ::'||l_start_date);
567: hr_utility.trace('> l_end_date ::'||l_end_date);
568: END IF;
569:
570: IF g_debug THEN
571: hr_utility.set_location (g_package||l_proc, 20);
567: hr_utility.trace('> l_end_date ::'||l_end_date);
568: END IF;
569:
570: IF g_debug THEN
571: hr_utility.set_location (g_package||l_proc, 20);
572: END IF;
573:
574:
575: /* Aug 23 always add current period
581: ,p_assignment_end => g_assignment_periods(g_assignment_periods.last).end_date
582: );
583:
584: IF g_debug THEN
585: hr_utility.set_location (g_package||l_proc, 30);
586: END IF;
587:
588: -- this case only happens when we are looking for an empty period
589: -- in the future. Since we already know the period before the current
597: END IF;
598: */
599:
600: IF g_debug THEN
601: hr_utility.trace('> l_start_date = '||l_start_date);
602: hr_utility.trace('> g_past_date_limit = '||g_past_date_limit);
603: hr_utility.trace('> l_end_date = '||l_end_date);
604: hr_utility.trace('> g_future_date_limit = '||g_future_date_limit);
605: hr_utility.trace('> IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) THEN');
598: */
599:
600: IF g_debug THEN
601: hr_utility.trace('> l_start_date = '||l_start_date);
602: hr_utility.trace('> g_past_date_limit = '||g_past_date_limit);
603: hr_utility.trace('> l_end_date = '||l_end_date);
604: hr_utility.trace('> g_future_date_limit = '||g_future_date_limit);
605: hr_utility.trace('> IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) THEN');
606: END IF;
599:
600: IF g_debug THEN
601: hr_utility.trace('> l_start_date = '||l_start_date);
602: hr_utility.trace('> g_past_date_limit = '||g_past_date_limit);
603: hr_utility.trace('> l_end_date = '||l_end_date);
604: hr_utility.trace('> g_future_date_limit = '||g_future_date_limit);
605: hr_utility.trace('> IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) THEN');
606: END IF;
607:
600: IF g_debug THEN
601: hr_utility.trace('> l_start_date = '||l_start_date);
602: hr_utility.trace('> g_past_date_limit = '||g_past_date_limit);
603: hr_utility.trace('> l_end_date = '||l_end_date);
604: hr_utility.trace('> g_future_date_limit = '||g_future_date_limit);
605: hr_utility.trace('> IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) THEN');
606: END IF;
607:
608: IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) -- ADDED FOR BUG 8996217
601: hr_utility.trace('> l_start_date = '||l_start_date);
602: hr_utility.trace('> g_past_date_limit = '||g_past_date_limit);
603: hr_utility.trace('> l_end_date = '||l_end_date);
604: hr_utility.trace('> g_future_date_limit = '||g_future_date_limit);
605: hr_utility.trace('> IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) THEN');
606: END IF;
607:
608: IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) -- ADDED FOR BUG 8996217
609: THEN
608: IF TRUNC(l_start_date) < TRUNC(g_past_date_limit) -- ADDED FOR BUG 8996217
609: THEN
610:
611: IF g_debug THEN
612: hr_utility.trace('> IF CONDITION SUCCESS RETURN l_periods');
613: END IF;
614:
615: RETURN l_periods;
616:
616:
617: ELSE
618:
619: IF g_debug THEN
620: hr_utility.trace('> ELSE CONDITION SUCCESS ');
621: hr_utility.trace('> check the condition >> IF TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN');
622: END IF;
623:
624: IF TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN
617: ELSE
618:
619: IF g_debug THEN
620: hr_utility.trace('> ELSE CONDITION SUCCESS ');
621: hr_utility.trace('> check the condition >> IF TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN');
622: END IF;
623:
624: IF TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN
625:
623:
624: IF TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN
625:
626: IF g_debug THEN
627: hr_utility.trace('> IF condition is true add l_start_date and l_end_date to l_periods');
628: END IF;
629:
630: l_periods(1).start_date := l_start_date;
631: l_periods(1).end_date := l_end_date;
631: l_periods(1).end_date := l_end_date;
632: ELSE
633:
634: IF g_debug THEN
635: hr_utility.trace('> IF condition is false RETURN l_periods');
636: END IF;
637:
638: RETURN l_periods;
639:
641:
642: END IF;
643:
644: IF g_debug THEN
645: hr_utility.set_location (g_package||l_proc, 40);
646: END IF;
647:
648:
649: IF p_show_existing_timecard = 'N'
675: END IF;
676:
677: IF g_debug
678: THEN
679: hr_utility.trace('Future '||g_num_future_entries);
680: END IF;
681:
682:
683: OPEN get_lagging_timecards(p_resource_id,
692: END IF;
693:
694: IF g_debug
695: THEN
696: hr_utility.trace('Past '||g_num_past_entries);
697: END IF;
698:
699:
700: END IF;
708: l_current_date := l_start_date - 1;
709: l_assignment_index := g_assignment_periods.last;
710:
711: IF g_debug THEN
712: hr_utility.trace('l_period_count=' || l_period_count);
713: hr_utility.trace('g_num_past_entries=' || g_num_past_entries);
714: END IF;
715:
716: IF g_debug THEN
709: l_assignment_index := g_assignment_periods.last;
710:
711: IF g_debug THEN
712: hr_utility.trace('l_period_count=' || l_period_count);
713: hr_utility.trace('g_num_past_entries=' || g_num_past_entries);
714: END IF;
715:
716: IF g_debug THEN
717: hr_utility.trace('> l_period_count=' || l_period_count);
713: hr_utility.trace('g_num_past_entries=' || g_num_past_entries);
714: END IF;
715:
716: IF g_debug THEN
717: hr_utility.trace('> l_period_count=' || l_period_count);
718: hr_utility.trace('> l_current_date=' || l_current_date);
719: hr_utility.trace('> l_assignment_index=' || l_assignment_index);
720: hr_utility.trace('> In WHILE l_period_count <= g_num_past_entries LOOP');
721: END IF;
714: END IF;
715:
716: IF g_debug THEN
717: hr_utility.trace('> l_period_count=' || l_period_count);
718: hr_utility.trace('> l_current_date=' || l_current_date);
719: hr_utility.trace('> l_assignment_index=' || l_assignment_index);
720: hr_utility.trace('> In WHILE l_period_count <= g_num_past_entries LOOP');
721: END IF;
722:
715:
716: IF g_debug THEN
717: hr_utility.trace('> l_period_count=' || l_period_count);
718: hr_utility.trace('> l_current_date=' || l_current_date);
719: hr_utility.trace('> l_assignment_index=' || l_assignment_index);
720: hr_utility.trace('> In WHILE l_period_count <= g_num_past_entries LOOP');
721: END IF;
722:
723:
716: IF g_debug THEN
717: hr_utility.trace('> l_period_count=' || l_period_count);
718: hr_utility.trace('> l_current_date=' || l_current_date);
719: hr_utility.trace('> l_assignment_index=' || l_assignment_index);
720: hr_utility.trace('> In WHILE l_period_count <= g_num_past_entries LOOP');
721: END IF;
722:
723:
724: WHILE l_period_count <= g_num_past_entries
723:
724: WHILE l_period_count <= g_num_past_entries
725: LOOP
726: IF g_debug THEN
727: hr_utility.set_location (g_package||l_proc, 50);
728: END IF;
729:
730: IF g_debug THEN
731: hr_utility.trace('> ****************************************************');
727: hr_utility.set_location (g_package||l_proc, 50);
728: END IF;
729:
730: IF g_debug THEN
731: hr_utility.trace('> ****************************************************');
732: hr_utility.trace('> calling find_current_period');
733: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
734: hr_utility.trace('> g_period_type ::'||g_period_type);
735: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
728: END IF;
729:
730: IF g_debug THEN
731: hr_utility.trace('> ****************************************************');
732: hr_utility.trace('> calling find_current_period');
733: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
734: hr_utility.trace('> g_period_type ::'||g_period_type);
735: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
736: hr_utility.trace('> l_current_date ::'||l_current_date);
729:
730: IF g_debug THEN
731: hr_utility.trace('> ****************************************************');
732: hr_utility.trace('> calling find_current_period');
733: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
734: hr_utility.trace('> g_period_type ::'||g_period_type);
735: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
736: hr_utility.trace('> l_current_date ::'||l_current_date);
737: END IF;
730: IF g_debug THEN
731: hr_utility.trace('> ****************************************************');
732: hr_utility.trace('> calling find_current_period');
733: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
734: hr_utility.trace('> g_period_type ::'||g_period_type);
735: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
736: hr_utility.trace('> l_current_date ::'||l_current_date);
737: END IF;
738:
731: hr_utility.trace('> ****************************************************');
732: hr_utility.trace('> calling find_current_period');
733: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
734: hr_utility.trace('> g_period_type ::'||g_period_type);
735: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
736: hr_utility.trace('> l_current_date ::'||l_current_date);
737: END IF;
738:
739: find_current_period(
732: hr_utility.trace('> calling find_current_period');
733: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
734: hr_utility.trace('> g_period_type ::'||g_period_type);
735: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
736: hr_utility.trace('> l_current_date ::'||l_current_date);
737: END IF;
738:
739: find_current_period(
740: p_rec_period_start_date => g_rec_period_start_date
745: ,p_period_end => l_end_date
746: );
747:
748: IF g_debug THEN
749: hr_utility.trace('> returned from find_current_period');
750: hr_utility.trace('> l_start_date ::'||l_start_date);
751: hr_utility.trace('> l_end_date ::'||l_end_date);
752: END IF;
753:
746: );
747:
748: IF g_debug THEN
749: hr_utility.trace('> returned from find_current_period');
750: hr_utility.trace('> l_start_date ::'||l_start_date);
751: hr_utility.trace('> l_end_date ::'||l_end_date);
752: END IF;
753:
754: IF g_debug THEN
747:
748: IF g_debug THEN
749: hr_utility.trace('> returned from find_current_period');
750: hr_utility.trace('> l_start_date ::'||l_start_date);
751: hr_utility.trace('> l_end_date ::'||l_end_date);
752: END IF;
753:
754: IF g_debug THEN
755: hr_utility.set_location (g_package||l_proc, 60);
751: hr_utility.trace('> l_end_date ::'||l_end_date);
752: END IF;
753:
754: IF g_debug THEN
755: hr_utility.set_location (g_package||l_proc, 60);
756: END IF;
757:
758: IF g_debug THEN
759: hr_utility.trace('> g_past_date_limit ::'||g_past_date_limit);
755: hr_utility.set_location (g_package||l_proc, 60);
756: END IF;
757:
758: IF g_debug THEN
759: hr_utility.trace('> g_past_date_limit ::'||g_past_date_limit);
760: hr_utility.trace('> IF l_end_date < g_past_date_limit');
761: END IF;
762:
763: IF l_end_date < g_past_date_limit
756: END IF;
757:
758: IF g_debug THEN
759: hr_utility.trace('> g_past_date_limit ::'||g_past_date_limit);
760: hr_utility.trace('> IF l_end_date < g_past_date_limit');
761: END IF;
762:
763: IF l_end_date < g_past_date_limit
764: THEN
765: EXIT;
766: END IF;
767:
768: IF g_debug THEN
769: hr_utility.set_location (g_package||l_proc, 61);
770: END IF;
771:
772: IF g_debug THEN
773: hr_utility.trace('> TRUNC(l_end_date) ::'||TRUNC(l_end_date));
769: hr_utility.set_location (g_package||l_proc, 61);
770: END IF;
771:
772: IF g_debug THEN
773: hr_utility.trace('> TRUNC(l_end_date) ::'||TRUNC(l_end_date));
774: hr_utility.trace('> TRUNC(g_assignment_periods(l_assignment_index).start_date ::'
775: ||TRUNC(g_assignment_periods(l_assignment_index).start_date));
776: hr_utility.trace('> trunc(l_start_date) ::'||trunc(l_start_date));
777: hr_utility.trace('> trunc(g_past_date_limit) ::'||trunc(g_past_date_limit));
770: END IF;
771:
772: IF g_debug THEN
773: hr_utility.trace('> TRUNC(l_end_date) ::'||TRUNC(l_end_date));
774: hr_utility.trace('> TRUNC(g_assignment_periods(l_assignment_index).start_date ::'
775: ||TRUNC(g_assignment_periods(l_assignment_index).start_date));
776: hr_utility.trace('> trunc(l_start_date) ::'||trunc(l_start_date));
777: hr_utility.trace('> trunc(g_past_date_limit) ::'||trunc(g_past_date_limit));
778: hr_utility.trace('> IF TRUNC(l_end_date) >= '||
772: IF g_debug THEN
773: hr_utility.trace('> TRUNC(l_end_date) ::'||TRUNC(l_end_date));
774: hr_utility.trace('> TRUNC(g_assignment_periods(l_assignment_index).start_date ::'
775: ||TRUNC(g_assignment_periods(l_assignment_index).start_date));
776: hr_utility.trace('> trunc(l_start_date) ::'||trunc(l_start_date));
777: hr_utility.trace('> trunc(g_past_date_limit) ::'||trunc(g_past_date_limit));
778: hr_utility.trace('> IF TRUNC(l_end_date) >= '||
779: 'TRUNC(g_assignment_periods(l_assignment_index).start_date');
780:
773: hr_utility.trace('> TRUNC(l_end_date) ::'||TRUNC(l_end_date));
774: hr_utility.trace('> TRUNC(g_assignment_periods(l_assignment_index).start_date ::'
775: ||TRUNC(g_assignment_periods(l_assignment_index).start_date));
776: hr_utility.trace('> trunc(l_start_date) ::'||trunc(l_start_date));
777: hr_utility.trace('> trunc(g_past_date_limit) ::'||trunc(g_past_date_limit));
778: hr_utility.trace('> IF TRUNC(l_end_date) >= '||
779: 'TRUNC(g_assignment_periods(l_assignment_index).start_date');
780:
781: END IF;
774: hr_utility.trace('> TRUNC(g_assignment_periods(l_assignment_index).start_date ::'
775: ||TRUNC(g_assignment_periods(l_assignment_index).start_date));
776: hr_utility.trace('> trunc(l_start_date) ::'||trunc(l_start_date));
777: hr_utility.trace('> trunc(g_past_date_limit) ::'||trunc(g_past_date_limit));
778: hr_utility.trace('> IF TRUNC(l_end_date) >= '||
779: 'TRUNC(g_assignment_periods(l_assignment_index).start_date');
780:
781: END IF;
782:
808: l_period_count := l_period_count + 1;
809: l_current_date := l_start_date - 1;
810:
811: IF g_debug THEN
812: hr_utility.set_location (g_package||l_proc, 70);
813: END IF;
814: ELSE
815: -- earlier than current assignment period, look at the assignment
816: -- following this one
823: -- period start_date
824: IF g_assignment_periods(l_assignment_index).end_date <= l_end_date
825: THEN
826: IF g_debug THEN
827: hr_utility.set_location (g_package||l_proc, 80);
828: END IF;
829:
830: l_current_date := g_assignment_periods(l_assignment_index).end_date;
831: ELSE
829:
830: l_current_date := g_assignment_periods(l_assignment_index).end_date;
831: ELSE
832: IF g_debug THEN
833: hr_utility.set_location (g_package||l_proc, 90);
834: END IF;
835:
836: l_current_date := l_end_date;
837: END IF;
836: l_current_date := l_end_date;
837: END IF;
838: ELSE
839: IF g_debug THEN
840: hr_utility.set_location (g_package||l_proc, 100);
841: END IF;
842:
843: EXIT;
844: END IF;
847:
848:
849:
850: IF g_debug THEN
851: hr_utility.set_location (g_package||l_proc, 120);
852: END IF;
853:
854: --get future periods
855:
853:
854: --get future periods
855:
856: IF g_debug THEN
857: hr_utility.trace('> get future periods');
858: hr_utility.trace('> l_assignment_index ::'||l_assignment_index);
859: hr_utility.trace('> l_period_count ::'||l_period_count);
860: hr_utility.trace('> l_current_date ::'||l_current_date);
861: hr_utility.trace('> While l_period_count <= g_num_future_entries ');
854: --get future periods
855:
856: IF g_debug THEN
857: hr_utility.trace('> get future periods');
858: hr_utility.trace('> l_assignment_index ::'||l_assignment_index);
859: hr_utility.trace('> l_period_count ::'||l_period_count);
860: hr_utility.trace('> l_current_date ::'||l_current_date);
861: hr_utility.trace('> While l_period_count <= g_num_future_entries ');
862: END IF;
855:
856: IF g_debug THEN
857: hr_utility.trace('> get future periods');
858: hr_utility.trace('> l_assignment_index ::'||l_assignment_index);
859: hr_utility.trace('> l_period_count ::'||l_period_count);
860: hr_utility.trace('> l_current_date ::'||l_current_date);
861: hr_utility.trace('> While l_period_count <= g_num_future_entries ');
862: END IF;
863:
856: IF g_debug THEN
857: hr_utility.trace('> get future periods');
858: hr_utility.trace('> l_assignment_index ::'||l_assignment_index);
859: hr_utility.trace('> l_period_count ::'||l_period_count);
860: hr_utility.trace('> l_current_date ::'||l_current_date);
861: hr_utility.trace('> While l_period_count <= g_num_future_entries ');
862: END IF;
863:
864: l_assignment_index := g_assignment_periods.last;
857: hr_utility.trace('> get future periods');
858: hr_utility.trace('> l_assignment_index ::'||l_assignment_index);
859: hr_utility.trace('> l_period_count ::'||l_period_count);
860: hr_utility.trace('> l_current_date ::'||l_current_date);
861: hr_utility.trace('> While l_period_count <= g_num_future_entries ');
862: END IF;
863:
864: l_assignment_index := g_assignment_periods.last;
865:
868: WHILE l_period_count <= g_num_future_entries
869: LOOP
870:
871: IF g_debug THEN
872: hr_utility.trace('> calling find_current_period');
873: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
874: hr_utility.trace('> g_period_type ::'||g_period_type);
875: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
876: hr_utility.trace('> l_current_date ::'||l_current_date);
869: LOOP
870:
871: IF g_debug THEN
872: hr_utility.trace('> calling find_current_period');
873: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
874: hr_utility.trace('> g_period_type ::'||g_period_type);
875: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
876: hr_utility.trace('> l_current_date ::'||l_current_date);
877: END IF;
870:
871: IF g_debug THEN
872: hr_utility.trace('> calling find_current_period');
873: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
874: hr_utility.trace('> g_period_type ::'||g_period_type);
875: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
876: hr_utility.trace('> l_current_date ::'||l_current_date);
877: END IF;
878:
871: IF g_debug THEN
872: hr_utility.trace('> calling find_current_period');
873: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
874: hr_utility.trace('> g_period_type ::'||g_period_type);
875: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
876: hr_utility.trace('> l_current_date ::'||l_current_date);
877: END IF;
878:
879: find_current_period(
872: hr_utility.trace('> calling find_current_period');
873: hr_utility.trace('> g_rec_period_start_date ::'||g_rec_period_start_date);
874: hr_utility.trace('> g_period_type ::'||g_period_type);
875: hr_utility.trace('> g_duration_in_days ::'||g_duration_in_days);
876: hr_utility.trace('> l_current_date ::'||l_current_date);
877: END IF;
878:
879: find_current_period(
880: p_rec_period_start_date => g_rec_period_start_date
885: ,p_period_end => l_end_date
886: );
887:
888: IF g_debug THEN
889: hr_utility.trace('> returned from find_current_period');
890: hr_utility.trace('> l_start_date ::'||l_start_date);
891: hr_utility.trace('> l_end_date ::'||l_end_date);
892: hr_utility.trace('> l_period_count ::'||l_period_count);
893: hr_utility.trace('> g_num_future_entries ::'||g_num_future_entries);
886: );
887:
888: IF g_debug THEN
889: hr_utility.trace('> returned from find_current_period');
890: hr_utility.trace('> l_start_date ::'||l_start_date);
891: hr_utility.trace('> l_end_date ::'||l_end_date);
892: hr_utility.trace('> l_period_count ::'||l_period_count);
893: hr_utility.trace('> g_num_future_entries ::'||g_num_future_entries);
894: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
887:
888: IF g_debug THEN
889: hr_utility.trace('> returned from find_current_period');
890: hr_utility.trace('> l_start_date ::'||l_start_date);
891: hr_utility.trace('> l_end_date ::'||l_end_date);
892: hr_utility.trace('> l_period_count ::'||l_period_count);
893: hr_utility.trace('> g_num_future_entries ::'||g_num_future_entries);
894: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
895: hr_utility.trace('> IF TRUNC(l_start_date) >= TRUNC(g_past_date_limit) AND '
888: IF g_debug THEN
889: hr_utility.trace('> returned from find_current_period');
890: hr_utility.trace('> l_start_date ::'||l_start_date);
891: hr_utility.trace('> l_end_date ::'||l_end_date);
892: hr_utility.trace('> l_period_count ::'||l_period_count);
893: hr_utility.trace('> g_num_future_entries ::'||g_num_future_entries);
894: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
895: hr_utility.trace('> IF TRUNC(l_start_date) >= TRUNC(g_past_date_limit) AND '
896: || 'TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN');
889: hr_utility.trace('> returned from find_current_period');
890: hr_utility.trace('> l_start_date ::'||l_start_date);
891: hr_utility.trace('> l_end_date ::'||l_end_date);
892: hr_utility.trace('> l_period_count ::'||l_period_count);
893: hr_utility.trace('> g_num_future_entries ::'||g_num_future_entries);
894: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
895: hr_utility.trace('> IF TRUNC(l_start_date) >= TRUNC(g_past_date_limit) AND '
896: || 'TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN');
897: END IF;
890: hr_utility.trace('> l_start_date ::'||l_start_date);
891: hr_utility.trace('> l_end_date ::'||l_end_date);
892: hr_utility.trace('> l_period_count ::'||l_period_count);
893: hr_utility.trace('> g_num_future_entries ::'||g_num_future_entries);
894: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
895: hr_utility.trace('> IF TRUNC(l_start_date) >= TRUNC(g_past_date_limit) AND '
896: || 'TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN');
897: END IF;
898:
891: hr_utility.trace('> l_end_date ::'||l_end_date);
892: hr_utility.trace('> l_period_count ::'||l_period_count);
893: hr_utility.trace('> g_num_future_entries ::'||g_num_future_entries);
894: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
895: hr_utility.trace('> IF TRUNC(l_start_date) >= TRUNC(g_past_date_limit) AND '
896: || 'TRUNC(l_end_date) <= TRUNC(g_future_date_limit) THEN');
897: END IF;
898:
899: IF TRUNC(l_start_date) >= TRUNC(g_past_date_limit) -- ADDED FOR BUG 8996217
902:
903: IF ((l_period_count = g_num_future_entries) AND (p_show_existing_timecard = 'Y')) then
904:
905: IF g_debug THEN
906: hr_utility.trace('> IF for future periods');
907: END IF;
908:
909: l_added := add_period(
910: p_periods => l_periods
916: );
917: ELSE
918:
919: IF g_debug THEN
920: hr_utility.trace('> ELSE for future periods');
921: END IF;
922:
923: l_added := add_period(
924: p_periods => l_periods
998: l_period_index := l_periods.next(l_period_index);
999: END LOOP;
1000:
1001: IF g_debug THEN
1002: hr_utility.set_location (g_package||l_proc, 70);
1003: END IF;
1004: -- For this period we need not check whether its archived or not, as this is an existing period.
1005: -- Existing periods are found from hxc_time_building_blocks table, which means the data is
1006: -- present in the online tables.
1022:
1023: l_last_period_end := l_end_date;
1024:
1025: IF g_debug THEN
1026: hr_utility.set_location ( g_package||l_proc, 80);
1027: END IF;
1028:
1029: -- ignore overlapping periods
1030: WHILE l_periods.exists(l_period_index)
1033: l_period_index := l_periods.next(l_period_index);
1034: END LOOP;
1035:
1036: IF g_debug THEN
1037: hr_utility.set_location ( g_package||l_proc, 90);
1038: END IF;
1039:
1040: END LOOP;
1041:
1078:
1079: END LOOP;
1080:
1081: IF g_debug THEN
1082: hr_utility.set_location ( g_package||l_proc, 100);
1083: END IF;
1084:
1085: --RETURN l_new_periods;
1086:
1172: -- look for empty period in the past
1173: l_current_date := p_current_date;
1174:
1175: IF g_debug THEN
1176: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1177: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1178: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1179: hr_utility.trace('> l_current_date ::'||l_current_date);
1180: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1173: l_current_date := p_current_date;
1174:
1175: IF g_debug THEN
1176: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1177: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1178: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1179: hr_utility.trace('> l_current_date ::'||l_current_date);
1180: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1181: END IF;
1174:
1175: IF g_debug THEN
1176: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1177: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1178: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1179: hr_utility.trace('> l_current_date ::'||l_current_date);
1180: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1181: END IF;
1182:
1175: IF g_debug THEN
1176: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1177: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1178: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1179: hr_utility.trace('> l_current_date ::'||l_current_date);
1180: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1181: END IF;
1182:
1183: WHILE TRUE LOOP
1176: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1177: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1178: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1179: hr_utility.trace('> l_current_date ::'||l_current_date);
1180: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1181: END IF;
1182:
1183: WHILE TRUE LOOP
1184:
1191: );
1192:
1193: IF g_debug THEN
1194:
1195: hr_utility.trace('> AFTER CALL TO GET_PERIODS');
1196: l_index_temp := l_periods.first;
1197: LOOP
1198: EXIT WHEN NOT l_periods.exists(l_index_temp);
1199:
1196: l_index_temp := l_periods.first;
1197: LOOP
1198: EXIT WHEN NOT l_periods.exists(l_index_temp);
1199:
1200: hr_utility.trace(
1201: '> start_date ::'||l_periods(l_index_temp).start_date
1202: ||' - end_date ::'||l_periods(l_index_temp).end_date
1203: ||' - exist_flag ::'||l_periods(l_index_temp).exist_flag
1204: ||' - p_set_more_period ::'||l_periods(l_index_temp).p_set_more_period
1267:
1268: l_current_date := p_current_date;
1269:
1270: IF g_debug THEN
1271: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1272: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1273: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1274: hr_utility.trace('> l_current_date ::'||l_current_date);
1275: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1268: l_current_date := p_current_date;
1269:
1270: IF g_debug THEN
1271: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1272: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1273: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1274: hr_utility.trace('> l_current_date ::'||l_current_date);
1275: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1276: END IF;
1269:
1270: IF g_debug THEN
1271: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1272: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1273: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1274: hr_utility.trace('> l_current_date ::'||l_current_date);
1275: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1276: END IF;
1277:
1270: IF g_debug THEN
1271: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1272: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1273: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1274: hr_utility.trace('> l_current_date ::'||l_current_date);
1275: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1276: END IF;
1277:
1278: WHILE TRUE LOOP
1271: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1272: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1273: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1274: hr_utility.trace('> l_current_date ::'||l_current_date);
1275: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1276: END IF;
1277:
1278: WHILE TRUE LOOP
1279:
1286: );
1287:
1288: IF g_debug THEN
1289:
1290: hr_utility.trace('> AFTER CALL TO GET_PERIODS');
1291: l_index_temp := l_periods.first;
1292: LOOP
1293: EXIT WHEN NOT l_periods.exists(l_index_temp);
1294:
1291: l_index_temp := l_periods.first;
1292: LOOP
1293: EXIT WHEN NOT l_periods.exists(l_index_temp);
1294:
1295: hr_utility.trace(
1296: '> start_date ::'||l_periods(l_index_temp).start_date
1297: ||' - end_date ::'||l_periods(l_index_temp).end_date
1298: ||' - exist_flag ::'||l_periods(l_index_temp).exist_flag
1299: ||' - p_set_more_period ::'||l_periods(l_index_temp).p_set_more_period
1347: -- look for empty period in the past
1348: l_current_date := SYSDATE;
1349:
1350: IF g_debug THEN
1351: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1352: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1353: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1354: hr_utility.trace('> l_current_date ::'||l_current_date);
1355: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1348: l_current_date := SYSDATE;
1349:
1350: IF g_debug THEN
1351: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1352: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1353: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1354: hr_utility.trace('> l_current_date ::'||l_current_date);
1355: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1356: END IF;
1349:
1350: IF g_debug THEN
1351: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1352: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1353: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1354: hr_utility.trace('> l_current_date ::'||l_current_date);
1355: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1356: END IF;
1357:
1350: IF g_debug THEN
1351: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1352: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1353: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1354: hr_utility.trace('> l_current_date ::'||l_current_date);
1355: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1356: END IF;
1357:
1358: WHILE TRUE LOOP
1351: hr_utility.trace('> In hxc_timecard_utilities.get_first_empty_period.');
1352: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1353: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1354: hr_utility.trace('> l_current_date ::'||l_current_date);
1355: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1356: END IF;
1357:
1358: WHILE TRUE LOOP
1359:
1366: );
1367:
1368: IF g_debug THEN
1369:
1370: hr_utility.trace('> AFTER CALL TO GET_PERIODS');
1371: l_index_temp := l_periods.first;
1372: LOOP
1373: EXIT WHEN NOT l_periods.exists(l_index_temp);
1374:
1371: l_index_temp := l_periods.first;
1372: LOOP
1373: EXIT WHEN NOT l_periods.exists(l_index_temp);
1374:
1375: hr_utility.trace(
1376: '> start_date ::'||l_periods(l_index_temp).start_date
1377: ||' - end_date ::'||l_periods(l_index_temp).end_date
1378: ||' - exist_flag ::'||l_periods(l_index_temp).exist_flag
1379: ||' - p_set_more_period ::'||l_periods(l_index_temp).p_set_more_period
1488: l_proc VARCHAR2(500);
1489: l_index_temp NUMBER;
1490:
1491: BEGIN
1492: g_debug := hr_utility.debug_enabled;
1493:
1494: IF g_debug THEN
1495: l_proc := 'get_period_list';
1496: hr_utility.set_location(g_package||l_proc, 10);
1492: g_debug := hr_utility.debug_enabled;
1493:
1494: IF g_debug THEN
1495: l_proc := 'get_period_list';
1496: hr_utility.set_location(g_package||l_proc, 10);
1497: END IF;
1498:
1499: l_current_date := p_current_date;
1500:
1499: l_current_date := p_current_date;
1500:
1501:
1502: IF g_debug THEN
1503: hr_utility.trace('> In hxc_timecard_utilities.get_period_list.');
1504: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1505: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1506: hr_utility.trace('> l_current_date ::'||l_current_date);
1507: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1500:
1501:
1502: IF g_debug THEN
1503: hr_utility.trace('> In hxc_timecard_utilities.get_period_list.');
1504: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1505: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1506: hr_utility.trace('> l_current_date ::'||l_current_date);
1507: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1508: END IF;
1501:
1502: IF g_debug THEN
1503: hr_utility.trace('> In hxc_timecard_utilities.get_period_list.');
1504: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1505: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1506: hr_utility.trace('> l_current_date ::'||l_current_date);
1507: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1508: END IF;
1509:
1502: IF g_debug THEN
1503: hr_utility.trace('> In hxc_timecard_utilities.get_period_list.');
1504: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1505: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1506: hr_utility.trace('> l_current_date ::'||l_current_date);
1507: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1508: END IF;
1509:
1510: WHILE TRUE LOOP
1503: hr_utility.trace('> In hxc_timecard_utilities.get_period_list.');
1504: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1505: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1506: hr_utility.trace('> l_current_date ::'||l_current_date);
1507: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1508: END IF;
1509:
1510: WHILE TRUE LOOP
1511: l_temp_periods :=
1517: );
1518:
1519: IF g_debug THEN
1520:
1521: hr_utility.trace('> AFTER CALL TO GET_PERIODS');
1522: l_index_temp := l_temp_periods.first;
1523: LOOP
1524: EXIT WHEN NOT l_temp_periods.exists(l_index_temp);
1525:
1522: l_index_temp := l_temp_periods.first;
1523: LOOP
1524: EXIT WHEN NOT l_temp_periods.exists(l_index_temp);
1525:
1526: hr_utility.trace(
1527: '> start_date ::'||l_temp_periods(l_index_temp).start_date
1528: ||' - end_date ::'||l_temp_periods(l_index_temp).end_date
1529: ||' - exist_flag ::'||l_temp_periods(l_index_temp).exist_flag
1530: ||' - p_set_more_period ::'||l_temp_periods(l_index_temp).p_set_more_period
1532:
1533: l_index_temp := l_temp_periods.next(l_index_temp);
1534: END LOOP;
1535:
1536: hr_utility.trace('> l_temp_periods.count ::'||l_temp_periods.count);
1537: hr_utility.trace('> l_periods.count ::'||l_periods.count);
1538:
1539: END IF;
1540:
1533: l_index_temp := l_temp_periods.next(l_index_temp);
1534: END LOOP;
1535:
1536: hr_utility.trace('> l_temp_periods.count ::'||l_temp_periods.count);
1537: hr_utility.trace('> l_periods.count ::'||l_periods.count);
1538:
1539: END IF;
1540:
1541: IF g_debug THEN
1538:
1539: END IF;
1540:
1541: IF g_debug THEN
1542: hr_utility.set_location(g_package||l_proc, 20);
1543: END IF;
1544:
1545: IF l_temp_periods.count = 0
1546: OR l_periods.count > 0
1545: IF l_temp_periods.count = 0
1546: OR l_periods.count > 0
1547: THEN
1548: IF g_debug THEN
1549: hr_utility.set_location(g_package||l_proc, 30);
1550: END IF;
1551:
1552: --if this list is empty, or this is the second list,
1553: --combine this list with the first list and return
1556: ,p_second_periods => l_temp_periods
1557: ,p_periods => p_periods
1558: );
1559: IF g_debug THEN
1560: hr_utility.set_location(g_package||l_proc, 40);
1561: END IF;
1562: RETURN;
1563: ELSE
1564: --this is the first list and it is not empty
1566: --go forward one more day after current period. This is to avoid
1567: --the senario:
1568:
1569: IF g_debug THEN
1570: hr_utility.set_location(g_package||l_proc, 50);
1571: END IF;
1572:
1573: IF g_debug THEN
1574:
1571: END IF;
1572:
1573: IF g_debug THEN
1574:
1575: hr_utility.trace('> l_temp_periods(l_temp_periods.last).start_date ::'||
1576: l_temp_periods(l_temp_periods.last).start_date );
1577: hr_utility.trace('> p_current_date::'||p_current_date);
1578:
1579: END IF;
1573: IF g_debug THEN
1574:
1575: hr_utility.trace('> l_temp_periods(l_temp_periods.last).start_date ::'||
1576: l_temp_periods(l_temp_periods.last).start_date );
1577: hr_utility.trace('> p_current_date::'||p_current_date);
1578:
1579: END IF;
1580:
1581: IF l_temp_periods(l_temp_periods.last).start_date = p_current_date
1580:
1581: IF l_temp_periods(l_temp_periods.last).start_date = p_current_date
1582: THEN
1583: IF g_debug THEN
1584: hr_utility.set_location(g_package||l_proc, 60);
1585: END IF;
1586:
1587: l_current_date := l_temp_periods(l_temp_periods.last).end_date + 1;
1588: l_periods := l_temp_periods;
1594: ,p_periods => p_periods
1595: );
1596:
1597: IF g_debug THEN
1598: hr_utility.trace('start=' || to_char(l_temp_periods(l_temp_periods.last).start_date, 'YYYY/MM/DD'));
1599:
1600: hr_utility.set_location(g_package||l_proc, 70);
1601: END IF;
1602:
1596:
1597: IF g_debug THEN
1598: hr_utility.trace('start=' || to_char(l_temp_periods(l_temp_periods.last).start_date, 'YYYY/MM/DD'));
1599:
1600: hr_utility.set_location(g_package||l_proc, 70);
1601: END IF;
1602:
1603: RETURN;
1604: END IF;
1837: where hrp.recurring_period_id = p_recurring_period_id;
1838:
1839: BEGIN
1840:
1841: g_debug := hr_utility.debug_enabled;
1842:
1843: g_assignment_periods.delete;
1844:
1845: g_assignment_periods := get_assignment_periods(p_resource_id);
1903: CLOSE c_period_info;
1904:
1905:
1906: IF g_debug THEN
1907: hr_utility.trace('l_period_type=' || g_period_type);
1908: hr_utility.trace('l_duration_in_days=' || g_duration_in_days);
1909: hr_utility.trace('l_rec_period_start_date=' || g_rec_period_start_date);
1910: END IF;
1911:
1904:
1905:
1906: IF g_debug THEN
1907: hr_utility.trace('l_period_type=' || g_period_type);
1908: hr_utility.trace('l_duration_in_days=' || g_duration_in_days);
1909: hr_utility.trace('l_rec_period_start_date=' || g_rec_period_start_date);
1910: END IF;
1911:
1912: -- l_num_past_days :=
1905:
1906: IF g_debug THEN
1907: hr_utility.trace('l_period_type=' || g_period_type);
1908: hr_utility.trace('l_duration_in_days=' || g_duration_in_days);
1909: hr_utility.trace('l_rec_period_start_date=' || g_rec_period_start_date);
1910: END IF;
1911:
1912: -- l_num_past_days :=
1913: -- hxc_preference_evaluation.resource_preferences(
1921: -- 'TC_W_TCRD_ST_ALW_EDITS',
1922: -- 11);
1923:
1924: IF g_debug THEN
1925: hr_utility.trace('l_num_past_days=' || l_num_past_days);
1926: hr_utility.trace('l_num_future_days=' || l_num_future_days);
1927: END IF;
1928:
1929: IF l_num_past_days IS NOT NULL
1922: -- 11);
1923:
1924: IF g_debug THEN
1925: hr_utility.trace('l_num_past_days=' || l_num_past_days);
1926: hr_utility.trace('l_num_future_days=' || l_num_future_days);
1927: END IF;
1928:
1929: IF l_num_past_days IS NOT NULL
1930: THEN
1941: END IF;
1942: g_initialized := 'Y';
1943:
1944: IF g_debug THEN
1945: hr_utility.trace(' l_past_date_limit =' || to_char(g_past_date_limit, 'YYYY/MM/DD'));
1946: hr_utility.trace(' l_future_date_limit=' ||to_char(g_future_date_limit, 'YYYY/MM/DD') );
1947: END IF;
1948:
1949: END init_globals;
1942: g_initialized := 'Y';
1943:
1944: IF g_debug THEN
1945: hr_utility.trace(' l_past_date_limit =' || to_char(g_past_date_limit, 'YYYY/MM/DD'));
1946: hr_utility.trace(' l_future_date_limit=' ||to_char(g_future_date_limit, 'YYYY/MM/DD') );
1947: END IF;
1948:
1949: END init_globals;
1950:
1970: l_end_date DATE;
1971: l_resource_id NUMBER := TO_NUMBER(p_resource_id);
1972:
1973: BEGIN
1974: g_debug := hr_utility.debug_enabled;
1975:
1976: IF g_debug THEN
1977: hr_utility.trace('> In hxc_timecard_utilities.get_time_periods');
1978: END IF;
1973: BEGIN
1974: g_debug := hr_utility.debug_enabled;
1975:
1976: IF g_debug THEN
1977: hr_utility.trace('> In hxc_timecard_utilities.get_time_periods');
1978: END IF;
1979:
1980: IF g_debug THEN
1981: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1977: hr_utility.trace('> In hxc_timecard_utilities.get_time_periods');
1978: END IF;
1979:
1980: IF g_debug THEN
1981: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1982: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1983: hr_utility.trace('> p_current_date ::'||p_current_date);
1984: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1985: hr_utility.trace('> p_first_empty_period ::'||p_first_empty_period);
1978: END IF;
1979:
1980: IF g_debug THEN
1981: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1982: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1983: hr_utility.trace('> p_current_date ::'||p_current_date);
1984: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1985: hr_utility.trace('> p_first_empty_period ::'||p_first_empty_period);
1986: END IF;
1979:
1980: IF g_debug THEN
1981: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1982: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1983: hr_utility.trace('> p_current_date ::'||p_current_date);
1984: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1985: hr_utility.trace('> p_first_empty_period ::'||p_first_empty_period);
1986: END IF;
1987:
1980: IF g_debug THEN
1981: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1982: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1983: hr_utility.trace('> p_current_date ::'||p_current_date);
1984: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1985: hr_utility.trace('> p_first_empty_period ::'||p_first_empty_period);
1986: END IF;
1987:
1988: /*
1981: hr_utility.trace('> p_resource_id ::'||p_resource_id);
1982: hr_utility.trace('> p_resource_type ::'||p_resource_type);
1983: hr_utility.trace('> p_current_date ::'||p_current_date);
1984: hr_utility.trace('> p_show_existing_timecard ::'||p_show_existing_timecard);
1985: hr_utility.trace('> p_first_empty_period ::'||p_first_empty_period);
1986: END IF;
1987:
1988: /*
1989: IF l_resource_id = 10251
1987:
1988: /*
1989: IF l_resource_id = 10251
1990: THEN
1991: --hr_utility.trace_on(NULL, 'test');
1992: END IF;
1993: */
1994: -- mstewart 5/20/2002
1995: -- temporary fix to resolve pl/sql caching issues. For now force
2012: IF p_first_empty_period = 'Y'
2013: THEN
2014:
2015: IF g_debug THEN
2016: hr_utility.trace('start empty');
2017: END IF;
2018:
2019: get_first_empty_period(
2020: p_resource_id => l_resource_id
2023: ,p_show_existing_timecard => 'Y'
2024: ,p_periods => p_periods
2025: );
2026: IF g_debug THEN
2027: hr_utility.trace('returned empty period=' || p_periods);
2028: END IF;
2029: ELSE
2030: IF g_debug THEN
2031: hr_utility.trace('start getting list');
2027: hr_utility.trace('returned empty period=' || p_periods);
2028: END IF;
2029: ELSE
2030: IF g_debug THEN
2031: hr_utility.trace('start getting list');
2032: END IF;
2033:
2034: get_period_list(
2035: p_resource_id => l_resource_id
2039: ,p_periods => p_periods
2040: );
2041:
2042: IF g_debug THEN
2043: hr_utility.trace('> In hxc_timecard_utilities.get_time_periods AFTER CALL TO get_period_list');
2044: hr_utility.trace('> p_periods'||p_periods);
2045: END IF;
2046:
2047: IF g_debug THEN
2040: );
2041:
2042: IF g_debug THEN
2043: hr_utility.trace('> In hxc_timecard_utilities.get_time_periods AFTER CALL TO get_period_list');
2044: hr_utility.trace('> p_periods'||p_periods);
2045: END IF;
2046:
2047: IF g_debug THEN
2048: hr_utility.trace('finished getting list');
2044: hr_utility.trace('> p_periods'||p_periods);
2045: END IF;
2046:
2047: IF g_debug THEN
2048: hr_utility.trace('finished getting list');
2049: END IF;
2050: END IF;
2051:
2052:
2097: l_end_date DATE;
2098: l_proc VARCHAR2(50);
2099: BEGIN
2100:
2101: g_debug := hr_utility.debug_enabled;
2102:
2103: IF g_debug THEN
2104: l_proc := 'get_current_period';
2105: hr_utility.set_location(g_package||l_proc, 10);
2101: g_debug := hr_utility.debug_enabled;
2102:
2103: IF g_debug THEN
2104: l_proc := 'get_current_period';
2105: hr_utility.set_location(g_package||l_proc, 10);
2106: END IF;
2107:
2108: find_current_period(
2109: p_rec_period_start_date => fnd_date.canonical_to_date
2115: ,p_period_end => l_end_date
2116: );
2117:
2118: IF g_debug THEN
2119: hr_utility.set_location(g_package||l_proc, 20);
2120: END IF;
2121:
2122: p_period := TO_CHAR(l_start_date, g_date_format)
2123: || g_separator
2123: || g_separator
2124: || TO_CHAR(l_end_date, g_date_format);
2125:
2126: IF g_debug THEN
2127: hr_utility.set_location(g_package||l_proc, 30);
2128: END IF;
2129:
2130: END get_current_period;
2131:
2958: BEGIN
2959:
2960: IF g_debug
2961: THEN
2962: hr_utility.trace('In hxc_timecard_utilities.copy_attachments_to_ap');
2963: hr_utility.trace('Timecard Attachments Enabled ::'||
2964: NVL(fnd_profile.value('HXC_TIMECARD_ATTACHMENT_ENABLED'), 'N'));
2965: END IF;
2966:
2959:
2960: IF g_debug
2961: THEN
2962: hr_utility.trace('In hxc_timecard_utilities.copy_attachments_to_ap');
2963: hr_utility.trace('Timecard Attachments Enabled ::'||
2964: NVL(fnd_profile.value('HXC_TIMECARD_ATTACHMENT_ENABLED'), 'N'));
2965: END IF;
2966:
2967: IF (NVL(fnd_profile.value('HXC_TIMECARD_ATTACHMENT_ENABLED'), 'N') = 'N') THEN
2990: CLOSE c_get_tc_attahcments_for_ap;
2991:
2992: IF g_debug
2993: THEN
2994: hr_utility.trace('l_app_resource_id_tab.COUNT ::'||l_app_resource_id_tab.COUNT);
2995: END IF;
2996:
2997: IF l_app_resource_id_tab.COUNT >0
2998: THEN
2998: THEN
2999:
3000: IF g_debug
3001: THEN
3002: hr_utility.trace('Approval Resource Id ::'||l_app_resource_id_tab(l_app_resource_id_tab.FIRST));
3003: hr_utility.trace('Approval Start Date ::'||l_app_start_date_tab(l_app_resource_id_tab.FIRST));
3004: hr_utility.trace('Approval End Date ::'||l_app_end_date_tab(l_app_resource_id_tab.FIRST));
3005: hr_utility.trace('call to delete approval period attachments...fnd_attached_documents2_pkg.delete_attachments');
3006: END IF;
2999:
3000: IF g_debug
3001: THEN
3002: hr_utility.trace('Approval Resource Id ::'||l_app_resource_id_tab(l_app_resource_id_tab.FIRST));
3003: hr_utility.trace('Approval Start Date ::'||l_app_start_date_tab(l_app_resource_id_tab.FIRST));
3004: hr_utility.trace('Approval End Date ::'||l_app_end_date_tab(l_app_resource_id_tab.FIRST));
3005: hr_utility.trace('call to delete approval period attachments...fnd_attached_documents2_pkg.delete_attachments');
3006: END IF;
3007:
3000: IF g_debug
3001: THEN
3002: hr_utility.trace('Approval Resource Id ::'||l_app_resource_id_tab(l_app_resource_id_tab.FIRST));
3003: hr_utility.trace('Approval Start Date ::'||l_app_start_date_tab(l_app_resource_id_tab.FIRST));
3004: hr_utility.trace('Approval End Date ::'||l_app_end_date_tab(l_app_resource_id_tab.FIRST));
3005: hr_utility.trace('call to delete approval period attachments...fnd_attached_documents2_pkg.delete_attachments');
3006: END IF;
3007:
3008: fnd_attached_documents2_pkg.delete_attachments
3001: THEN
3002: hr_utility.trace('Approval Resource Id ::'||l_app_resource_id_tab(l_app_resource_id_tab.FIRST));
3003: hr_utility.trace('Approval Start Date ::'||l_app_start_date_tab(l_app_resource_id_tab.FIRST));
3004: hr_utility.trace('Approval End Date ::'||l_app_end_date_tab(l_app_resource_id_tab.FIRST));
3005: hr_utility.trace('call to delete approval period attachments...fnd_attached_documents2_pkg.delete_attachments');
3006: END IF;
3007:
3008: fnd_attached_documents2_pkg.delete_attachments
3009: ( X_entity_name => 'HXC_TIMECARD_SUMMARY'
3014: );
3015:
3016: IF g_debug
3017: THEN
3018: hr_utility.trace('call to copy timecard attachments to approval period');
3019: END IF;
3020:
3021: l_to_entity_name_tab := l_from_entity_name_tab;
3022: FOR i IN l_app_resource_id_tab.FIRST..l_app_resource_id_tab.LAST