39: FROM per_periods_of_service
40: WHERE person_id = p_person_id;
41: --
42: BEGIN
43: hr_utility.set_location('Entering ' || l_proc, 10);
44: OPEN cur_get_max_date (p_person_id => p_person_id);
45: FETCH cur_get_max_date INTO l_date;
46: IF cur_get_max_date%NOTFOUND THEN
47: CLOSE cur_get_max_date;
148: WHERE ppf.person_id = p_person_id
149: AND p_session_date between effective_start_date and effective_end_date;
150: --
151: BEGIN
152: hr_utility.set_location('Entering ' || l_proc, 10);
153: --
154: IF p_dob IS NULL THEN
155: -- get data
156: hr_utility.set_location(l_proc, 20);
152: hr_utility.set_location('Entering ' || l_proc, 10);
153: --
154: IF p_dob IS NULL THEN
155: -- get data
156: hr_utility.set_location(l_proc, 20);
157: OPEN csr_dob
158: ( p_person_id => p_person_id
159: , p_session_date => p_session_date);
160: FETCH csr_dob INTO l_dob, l_business_group_id;
159: , p_session_date => p_session_date);
160: FETCH csr_dob INTO l_dob, l_business_group_id;
161: CLOSE csr_dob;
162: ELSE
163: hr_utility.set_location(l_proc, 30);
164: -- use parameters; dob may be supplied even if person_id is null
165: l_dob := p_dob;
166: l_business_group_id := p_business_group_id;
167: END IF;
165: l_dob := p_dob;
166: l_business_group_id := p_business_group_id;
167: END IF;
168: --
169: hr_utility.set_location(l_proc, 40);
170: hr_utility.set_location(' using dob ' || to_char(l_dob, 'DD-MON-RRRR'), 41);
171: hr_utility.set_location(' using bgid ' || to_char(l_business_group_id), 42);
172: --
173: per_people3_pkg.get_legislative_ages
166: l_business_group_id := p_business_group_id;
167: END IF;
168: --
169: hr_utility.set_location(l_proc, 40);
170: hr_utility.set_location(' using dob ' || to_char(l_dob, 'DD-MON-RRRR'), 41);
171: hr_utility.set_location(' using bgid ' || to_char(l_business_group_id), 42);
172: --
173: per_people3_pkg.get_legislative_ages
174: ( p_business_group_id => l_business_group_id
167: END IF;
168: --
169: hr_utility.set_location(l_proc, 40);
170: hr_utility.set_location(' using dob ' || to_char(l_dob, 'DD-MON-RRRR'), 41);
171: hr_utility.set_location(' using bgid ' || to_char(l_business_group_id), 42);
172: --
173: per_people3_pkg.get_legislative_ages
174: ( p_business_group_id => l_business_group_id
175: , p_minimum_age => l_min
201: FROM per_periods_of_service
202: WHERE person_id = p_person_id
203: AND final_process_date = p_final_process_date;
204: BEGIN
205: hr_utility.set_location('Entering ' || l_proc, 10);
206:
207: OPEN csr_atd
208: ( p_person_id => p_person_id
209: , p_final_process_date => p_final_process_date);
238: FROM per_periods_of_service
239: WHERE person_id = p_person_id;
240:
241: BEGIN
242: hr_utility.set_location('Entering ' || l_proc, 10);
243:
244: IF p_type IS NULL THEN
245: hr_utility.set_location(l_proc, 20);
246: -- look for a current employment only
241: BEGIN
242: hr_utility.set_location('Entering ' || l_proc, 10);
243:
244: IF p_type IS NULL THEN
245: hr_utility.set_location(l_proc, 20);
246: -- look for a current employment only
247:
248: OPEN csr_pds_start_date
249: ( p_person_id => p_person_id);
249: ( p_person_id => p_person_id);
250: FETCH csr_pds_start_date INTO l_date;
251: CLOSE csr_pds_start_date;
252: ELSE
253: hr_utility.set_location(l_proc, 30);
254: -- look for the most recent hire date current or not
255: OPEN csr_pds_start_date_nn
256: ( p_person_id => p_person_id);
257: FETCH csr_pds_start_date_nn INTO l_date;
279: FROM per_all_assignments_f
280: WHERE person_id = p_person_id
281: AND effective_start_date > p_check_date;
282: BEGIN
283: hr_utility.set_location('Entering ' || l_proc, 10);
284: OPEN Get_Max_Asg_Hire_Date
285: ( p_person_id => p_person_id
286: , p_check_date =>p_check_date);
287: FETCH Get_Max_Asg_Hire_Date INTO l_date;
308: FROM per_all_assignments_f
309: WHERE person_id = p_person_id
310: AND effective_start_date < p_check_date;
311: BEGIN
312: hr_utility.set_location('Entering ' || l_proc, 10);
313: OPEN Get_Min_Asg_Hire_Date
314: ( p_person_id => p_person_id
315: , p_check_date => p_check_date);
316: FETCH Get_Min_Asg_Hire_Date INTO l_date;
339: FROM per_all_people_f
340: WHERE person_id = p_person_id
341: AND effective_end_date between p_date_from + 1 and p_date_to -1;
342: BEGIN
343: hr_utility.set_location('Entering ' || l_proc, 10);
344: OPEN csr_get_end_date
345: ( p_person_id => p_person_id
346: , p_date_from => p_date_from
347: , p_date_to => p_date_to);
371: FROM per_all_people_f
372: WHERE person_id = p_person_id
373: AND effective_start_date between p_date_from + 1 and p_date_to -1;
374: BEGIN
375: hr_utility.set_location('Entering ' || l_proc, 10);
376: OPEN csr_get_start_date
377: ( p_person_id => p_person_id
378: , p_date_from => p_date_from
379: , p_date_to => p_date_to);
404: WHERE ppf.person_id = p_person_id
405: AND ppf.person_type_id = ppt.person_type_id
406: AND ppf.effective_start_date > p_current_hire_date;
407: BEGIN
408: hr_utility.set_location('Entering ' || l_proc, 10);
409: IF p_pds_hd_bb = hr_general.start_of_time THEN
410: hr_utility.set_location(l_proc, 20);
411: l_boolean := FALSE;
412: ELSE
406: AND ppf.effective_start_date > p_current_hire_date;
407: BEGIN
408: hr_utility.set_location('Entering ' || l_proc, 10);
409: IF p_pds_hd_bb = hr_general.start_of_time THEN
410: hr_utility.set_location(l_proc, 20);
411: l_boolean := FALSE;
412: ELSE
413: hr_utility.set_location(l_proc, 30);
414: OPEN csr_person_type_change
409: IF p_pds_hd_bb = hr_general.start_of_time THEN
410: hr_utility.set_location(l_proc, 20);
411: l_boolean := FALSE;
412: ELSE
413: hr_utility.set_location(l_proc, 30);
414: OPEN csr_person_type_change
415: ( p_person_id => p_person_id
416: , p_current_hire_date => p_current_hire_date);
417: FETCH csr_person_type_change INTO l_effective_start_date;
452: WHERE person_id = p_person_id
453: AND effective_start_date > p_final_process_date
454: GROUP BY person_type_id;
455: BEGIN
456: hr_utility.set_location('Entering ' || l_proc, 10);
457: IF p_final_process_date IS NULL THEN
458: hr_utility.set_location(l_proc, 20);
459: l_date := NULL;
460: g_b2b_allowed := false;
454: GROUP BY person_type_id;
455: BEGIN
456: hr_utility.set_location('Entering ' || l_proc, 10);
457: IF p_final_process_date IS NULL THEN
458: hr_utility.set_location(l_proc, 20);
459: l_date := NULL;
460: g_b2b_allowed := false;
461: ELSE
462: OPEN csr_per_row_count;
462: OPEN csr_per_row_count;
463: LOOP
464: FETCH csr_per_row_count INTO l_count, l_person_type_id;
465: EXIT WHEN csr_per_row_count%NOTFOUND;
466: hr_utility.set_location(l_proc, 30);
467: IF csr_per_row_count%ROWCOUNT > 1 THEN
468: hr_utility.set_location(' person type changes exist ', 31);
469: l_pt_changes_exist := TRUE;
470: EXIT;
464: FETCH csr_per_row_count INTO l_count, l_person_type_id;
465: EXIT WHEN csr_per_row_count%NOTFOUND;
466: hr_utility.set_location(l_proc, 30);
467: IF csr_per_row_count%ROWCOUNT > 1 THEN
468: hr_utility.set_location(' person type changes exist ', 31);
469: l_pt_changes_exist := TRUE;
470: EXIT;
471: ELSE
472: NULL;
478: -- if rowcount = 1 then = emp or exemp record and b2b allowed with hd = fpd + 1
479: -- but if > 1 then person type changes exist so cannot create a b2b
480: -- employment
481: --
482: hr_utility.set_location(l_proc, 40);
483: l_actual_termination_date :=
484: get_atd
485: ( p_person_id => p_person_id
486: , p_final_process_date => p_final_process_date
485: ( p_person_id => p_person_id
486: , p_final_process_date => p_final_process_date
487: );
488: --
489: hr_utility.set_location(' l_atd ' || to_char(l_actual_termination_date, 'DD-MON-RRRR'), 41);
490: hr_utility.set_location(' p_fpd ' || to_char(p_final_process_date, 'DD-MON-RRRR'), 42);
491: --
492: -- flemonni changed
493: -- always = to fpd + 1
486: , p_final_process_date => p_final_process_date
487: );
488: --
489: hr_utility.set_location(' l_atd ' || to_char(l_actual_termination_date, 'DD-MON-RRRR'), 41);
490: hr_utility.set_location(' p_fpd ' || to_char(p_final_process_date, 'DD-MON-RRRR'), 42);
491: --
492: -- flemonni changed
493: -- always = to fpd + 1
494: --
527: WHERE person_id = p_person_id
528: AND paf.assignment_status_type_id = past.assignment_status_type_id
529: AND past.per_system_status = 'ACCEPTED';
530: BEGIN
531: hr_utility.set_location('Entering ' || l_proc, 10);
532: OPEN csr_Get_Accepted_Asg
533: ( p_person_id => p_person_id);
534: FETCH csr_Get_Accepted_Asg INTO l_date;
535: CLOSE csr_Get_Accepted_Asg;
566: l_fail_step NUMBER;
567: l_proc VARCHAR2 (100) :=
568: 'per_periods_of_service_pkg_v2.Get_valid_hire_dates';
569: BEGIN
570: hr_utility.set_location('Entering ' || l_proc, 10);
571: --
572: -- nb: hd = hire date
573: -- fpd = final process date (last payroll run)
574: -- atd = actual termination date (last physical day of contract)
590: , p_dob => p_dob
591: , p_business_group_id => p_business_group_id
592: );
593:
594: hr_utility.set_location(' min age date ' || to_char(l_age_dates.min_date, 'DD-MON-RRRR') , 11);
595: hr_utility.set_location(' max age date ' || to_char(l_age_dates.max_date, 'DD-MON-RRRR') , 12);
596:
597: IF p_person_id IS NULL THEN
598: hr_utility.set_location(l_proc, 20);
591: , p_business_group_id => p_business_group_id
592: );
593:
594: hr_utility.set_location(' min age date ' || to_char(l_age_dates.min_date, 'DD-MON-RRRR') , 11);
595: hr_utility.set_location(' max age date ' || to_char(l_age_dates.max_date, 'DD-MON-RRRR') , 12);
596:
597: IF p_person_id IS NULL THEN
598: hr_utility.set_location(l_proc, 20);
599: --
594: hr_utility.set_location(' min age date ' || to_char(l_age_dates.min_date, 'DD-MON-RRRR') , 11);
595: hr_utility.set_location(' max age date ' || to_char(l_age_dates.max_date, 'DD-MON-RRRR') , 12);
596:
597: IF p_person_id IS NULL THEN
598: hr_utility.set_location(l_proc, 20);
599: --
600: -- NO PERSON RECORD EXISTS
601: --
602: l_hd_min := l_age_dates.min_date; -- l_start_of_time;
601: --
602: l_hd_min := l_age_dates.min_date; -- l_start_of_time;
603: l_hd_max := l_age_dates.max_date; -- l_end_of_time;
604: ELSE
605: hr_utility.set_location(l_proc, 30);
606: --
607: -- period of service dates
608: --
609: hr_utility.set_location(l_proc, 50);
605: hr_utility.set_location(l_proc, 30);
606: --
607: -- period of service dates
608: --
609: hr_utility.set_location(l_proc, 50);
610: l_fail_step := 20;
611: --
612: l_pds_hd := Get_Current_PDS_Start_Date (p_person_id => p_person_id);
613: hr_utility.set_location(' pds hd ' || to_char(l_pds_hd, 'DD-MON-RRRR') , 51);
609: hr_utility.set_location(l_proc, 50);
610: l_fail_step := 20;
611: --
612: l_pds_hd := Get_Current_PDS_Start_Date (p_person_id => p_person_id);
613: hr_utility.set_location(' pds hd ' || to_char(l_pds_hd, 'DD-MON-RRRR') , 51);
614: --
615: -- final process date
616: --
617: hr_utility.set_location(l_proc, 60);
613: hr_utility.set_location(' pds hd ' || to_char(l_pds_hd, 'DD-MON-RRRR') , 51);
614: --
615: -- final process date
616: --
617: hr_utility.set_location(l_proc, 60);
618: l_fail_step := 30;
619: --
620: l_fpd := Get_Max_Last_process_Date (p_person_id);
621: l_atd := get_atd
620: l_fpd := Get_Max_Last_process_Date (p_person_id);
621: l_atd := get_atd
622: ( p_person_id => p_person_id
623: , p_final_process_date => l_fpd);
624: hr_utility.set_location(' fpd ' || to_char(l_fpd, 'DD-MON-RRRR') , 61);
625: hr_utility.set_location(' atd ' || to_char(l_atd, 'DD-MON-RRRR') , 62);
626: --
627: -- GET ASSIGNMENT DATA
628: --
621: l_atd := get_atd
622: ( p_person_id => p_person_id
623: , p_final_process_date => l_fpd);
624: hr_utility.set_location(' fpd ' || to_char(l_fpd, 'DD-MON-RRRR') , 61);
625: hr_utility.set_location(' atd ' || to_char(l_atd, 'DD-MON-RRRR') , 62);
626: --
627: -- GET ASSIGNMENT DATA
628: --
629: hr_utility.set_location(l_proc, 70);
625: hr_utility.set_location(' atd ' || to_char(l_atd, 'DD-MON-RRRR') , 62);
626: --
627: -- GET ASSIGNMENT DATA
628: --
629: hr_utility.set_location(l_proc, 70);
630: l_fail_step := 40;
631: --
632: -- modified fpd : i.e. whether date of new emp record is date +1 or date +2
633: --
634: l_mod_fpd := Set_Date_Using_FPD
635: ( p_person_id => p_person_id
636: , p_final_process_date => l_fpd);
637: --
638: hr_utility.set_location(' mod fpd ' || to_char(l_mod_fpd, 'DD-MON-RRRR') , 71);
639: --
640: -- asg : if mod_fpd null, pds hd [open emp] null and current hd null then
641: -- does not matter that asg check retrieves null
642: --
642: --
643: l_most_recent_pds := Get_Current_PDS_Start_Date
644: ( p_person_id => p_person_id
645: , p_type => 'recent');
646: hr_utility.set_location(' most recent pds ' || to_char(l_most_recent_pds, 'DD-MON-RRRR') , 72);
647:
648: l_min_asg_date := nvl(Get_Min_Asg_Hire_Date
649: ( p_person_id => p_person_id
650: , p_check_date => GREATEST
672: ELSE
673: NULL;
674: END IF;
675:
676: hr_utility.set_location(' gmaa ' || to_char(Get_Min_Asg_Accepted (p_person_id => p_person_id), 'DD-MON-RRRR') , 721);
677: --
678: l_max_asg_date := nvl(Get_Max_Asg_Hire_Date
679: ( p_person_id => p_person_id
680: , p_check_date => GREATEST
680: , p_check_date => GREATEST
681: (nvl
682: (l_mod_fpd, l_most_recent_pds)
683: , l_most_recent_pds)), l_end_of_time);
684: hr_utility.set_location(' min asg date ' || to_char(l_min_asg_date, 'DD-MON-RRRR') , 73);
685: hr_utility.set_location(' max asg date ' || to_char(l_max_asg_date, 'DD-MON-RRRR') , 74);
686: --
687: IF l_pds_hd IS NULL AND l_fpd IS NULL THEN
688: --
681: (nvl
682: (l_mod_fpd, l_most_recent_pds)
683: , l_most_recent_pds)), l_end_of_time);
684: hr_utility.set_location(' min asg date ' || to_char(l_min_asg_date, 'DD-MON-RRRR') , 73);
685: hr_utility.set_location(' max asg date ' || to_char(l_max_asg_date, 'DD-MON-RRRR') , 74);
686: --
687: IF l_pds_hd IS NULL AND l_fpd IS NULL THEN
688: --
689: hr_utility.set_location(l_proc, 80);
685: hr_utility.set_location(' max asg date ' || to_char(l_max_asg_date, 'DD-MON-RRRR') , 74);
686: --
687: IF l_pds_hd IS NULL AND l_fpd IS NULL THEN
688: --
689: hr_utility.set_location(l_proc, 80);
690: l_fail_step := 50;
691: --
692: --
693: -- PERSON RECORD EXISTS BUT NO PERIOD OF SERVICE RECORD - APPLICANT
692: --
693: -- PERSON RECORD EXISTS BUT NO PERIOD OF SERVICE RECORD - APPLICANT
694: --
695: l_min_asg_accept := Get_Min_Asg_Accepted (p_person_id => p_person_id);
696: hr_utility.set_location(' min asg accepted date ' || to_char(l_min_asg_accept, 'DD-MON-RRRR') , 81);
697: --
698: IF l_min_asg_accept IS NULL THEN
699: --
700: hr_utility.set_location(l_proc, 90);
696: hr_utility.set_location(' min asg accepted date ' || to_char(l_min_asg_accept, 'DD-MON-RRRR') , 81);
697: --
698: IF l_min_asg_accept IS NULL THEN
699: --
700: hr_utility.set_location(l_proc, 90);
701: --
702: --
703: -- NO HIRE DATE ALLOWED
704: --
705: l_fail_step := 60;
706: l_hd_min := NULL;
707: l_hd_max := NULL;
708: --
709: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 91);
710: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 92);
711: ELSE
712: --
713: hr_utility.set_location(l_proc, 100);
706: l_hd_min := NULL;
707: l_hd_max := NULL;
708: --
709: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 91);
710: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 92);
711: ELSE
712: --
713: hr_utility.set_location(l_proc, 100);
714: --
709: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 91);
710: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 92);
711: ELSE
712: --
713: hr_utility.set_location(l_proc, 100);
714: --
715: -- HIRE DATE ALLOWED ON GMAA (i.e. Accepted + 1);
716: --
717: l_fail_step := 70;
719: --
720: l_hd_max := LEAST
721: ( l_end_of_time
722: , l_age_dates.max_date);
723: hr_utility.set_location(' l_hd_max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 101);
724:
725: --
726: -- but must be lower than maximum assignment change
727: --
727: --
728: l_hd_max := LEAST
729: ( l_hd_max
730: , l_max_asg_date);
731: hr_utility.set_location(' l_hd_max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 102);
732: --
733: -- but must be higher than any person attribute change
734: --
735: l_min := nvl(Get_Max_Person_Start_Date
736: ( p_person_id => p_person_id
737: , p_date_from => l_min_asg_accept
738: , p_date_to => l_end_of_time), l_min_asg_accept);
739:
740: hr_utility.set_location(' l_min ' || to_char(l_min, 'DD-MON-RRRR') , 103);
741: --
742: l_hd_min := GREATEST
743: ( l_hd_min
744: , l_min
743: ( l_hd_min
744: , l_min
745: );
746: --
747: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 104);
748: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 105);
749: END IF;
750: ELSE
751: --
744: , l_min
745: );
746: --
747: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 104);
748: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 105);
749: END IF;
750: ELSE
751: --
752: hr_utility.set_location(l_proc, 110);
748: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 105);
749: END IF;
750: ELSE
751: --
752: hr_utility.set_location(l_proc, 110);
753: --
754: -- AT LEAST ONE EMP RECORD AND THEREFORE PDS START DATE EXISTS
755: --
756: l_fail_step := 80;
758: ( l_start_of_time
759: , l_age_dates.min_date
760: , nvl(l_mod_fpd, l_start_of_time));
761: --
762: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 111);
763:
764: IF l_fpd IS NULL THEN
765: --
766: hr_utility.set_location(l_proc, 120);
762: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 111);
763:
764: IF l_fpd IS NULL THEN
765: --
766: hr_utility.set_location(l_proc, 120);
767: --
768: -- FIRST PDS
769: --
770: -- chg l_pds_hd to most_recent_pds
774: ( p_person_id => p_person_id
775: , p_date_from => nvl(l_most_recent_pds, l_hd_min)
776: , p_date_to => l_end_of_time), l_end_of_time);
777: --
778: hr_utility.set_location(' l_max ' || to_char(l_max, 'DD-MON-RRRR') , 121);
779: --
780: l_hd_max := LEAST
781: ( l_end_of_time
782: , l_age_dates.max_date
784:
785: l_hd_max := LEAST
786: ( l_hd_max
787: , l_max_asg_date);
788: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 122);
789: /*
790: --
791: -- CHECK FUTURE ATTRIBUTE CHANGES
792: --
797: --
798: l_hd_min := l_min;
799: */
800: --
801: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 123);
802: --
803: ELSE
804: --
805: hr_utility.set_location(l_proc, 130);
801: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 123);
802: --
803: ELSE
804: --
805: hr_utility.set_location(l_proc, 130);
806: --
807: -- NOT IN FIRST PDS
808: --
809: l_fail_step := 100;
811: ( p_person_id => p_person_id
812: , p_date_from => l_atd + 1
813: , p_date_to => nvl(l_pds_hd, l_end_of_time));
814: --
815: hr_utility.set_location(' l_min ' || to_char(l_min, 'DD-MON-RRRR') , 131);
816: --
817: IF l_min IS NULL THEN
818: --
819: hr_utility.set_location(l_proc, 140);
815: hr_utility.set_location(' l_min ' || to_char(l_min, 'DD-MON-RRRR') , 131);
816: --
817: IF l_min IS NULL THEN
818: --
819: hr_utility.set_location(l_proc, 140);
820: --
821: -- NO INTERFERING ATTRIBUTE CHANGES IN THE PERSON RECORD
822: --
823: l_fail_step := 110;
824: l_hd_max := LEAST
825: ( l_end_of_time
826: , l_age_dates.max_date);
827: --
828: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 141);
829: ELSE
830: --
831: hr_utility.set_location(l_proc, 150);
832: --
827: --
828: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 141);
829: ELSE
830: --
831: hr_utility.set_location(l_proc, 150);
832: --
833: -- ATTRIBUTES EXIST
834: --
835: l_fail_step := 120;
837: g_b2b_allowed := FALSE;
838: --
839: IF l_pds_hd IS NULL THEN
840: --
841: hr_utility.set_location(l_proc, 160);
842: --
843: l_hd_max := LEAST
844: ( l_end_of_time
845: , l_age_dates.max_date);
843: l_hd_max := LEAST
844: ( l_end_of_time
845: , l_age_dates.max_date);
846: --
847: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 161);
848: ELSE
849: --
850: hr_utility.set_location(l_proc, 170);
851: --
846: --
847: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 161);
848: ELSE
849: --
850: hr_utility.set_location(l_proc, 170);
851: --
852: l_max := nvl(Get_Min_Person_End_Date
853: ( p_person_id => p_person_id
854: , p_date_from => l_pds_hd
853: ( p_person_id => p_person_id
854: , p_date_from => l_pds_hd
855: , p_date_to => l_end_of_time), l_end_of_time);
856: --
857: hr_utility.set_location(' l_max ' || to_char(l_max, 'DD-MON-RRRR') , 171);
858: --
859: l_hd_max := LEAST
860: ( l_end_of_time
861: , l_age_dates.max_date
859: l_hd_max := LEAST
860: ( l_end_of_time
861: , l_age_dates.max_date
862: , l_max);
863: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 172);
864: END IF;
865: END IF;
866: END IF;
867: --
864: END IF;
865: END IF;
866: END IF;
867: --
868: hr_utility.set_location(l_proc, 180);
869: --
870: hr_utility.set_location(' l_hd_max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 181);
871: hr_utility.set_location(' l_max_asg_date ' || to_char(l_max_asg_date, 'DD-MON-RRRR') , 182);
872:
866: END IF;
867: --
868: hr_utility.set_location(l_proc, 180);
869: --
870: hr_utility.set_location(' l_hd_max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 181);
871: hr_utility.set_location(' l_max_asg_date ' || to_char(l_max_asg_date, 'DD-MON-RRRR') , 182);
872:
873: l_hd_max := LEAST
874: ( l_hd_max
867: --
868: hr_utility.set_location(l_proc, 180);
869: --
870: hr_utility.set_location(' l_hd_max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 181);
871: hr_utility.set_location(' l_max_asg_date ' || to_char(l_max_asg_date, 'DD-MON-RRRR') , 182);
872:
873: l_hd_max := LEAST
874: ( l_hd_max
875: , l_max_asg_date);
876: l_hd_min := GREATEST
877: ( l_hd_min
878: , l_min_asg_date);
879: --
880: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 183);
881: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 184);
882: --
883: IF l_hd_min >= l_hd_max THEN
884: --
877: ( l_hd_min
878: , l_min_asg_date);
879: --
880: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 183);
881: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 184);
882: --
883: IF l_hd_min >= l_hd_max THEN
884: --
885: -- there are no interfering records above the l_hd_max;
891: ELSE
892: NULL;
893: END IF;
894: --
895: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 185);
896: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 186);
897:
898: --
899: -- but may miss e.g. ex_emp changes; need to ensure that pers / asg changes
892: NULL;
893: END IF;
894: --
895: hr_utility.set_location(' hd min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 185);
896: hr_utility.set_location(' hd max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 186);
897:
898: --
899: -- but may miss e.g. ex_emp changes; need to ensure that pers / asg changes
900: -- also compared to pds changes
914: p_max_date := l_hd_max;
915: --
916: IF g_b2b_allowed THEN
917: --
918: hr_utility.set_location(l_proc, 190);
919: --
920: p_b2b_allowed := TRUE;
921: ELSE
922: --
919: --
920: p_b2b_allowed := TRUE;
921: ELSE
922: --
923: hr_utility.set_location(l_proc, 200);
924: --
925: p_b2b_allowed := FALSE;
926: END IF;
927: --
927: --
928: p_pds_not_terminated := Is_Max_PDS_Not_Closed
929: ( p_person_id => p_person_id);
930:
931: hr_utility.set_location(' OUT min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 201);
932: hr_utility.set_location(' OUT max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 202);
933: hr_utility.set_location('Leaving ' || l_proc, 220);
934: --
935: EXCEPTION
928: p_pds_not_terminated := Is_Max_PDS_Not_Closed
929: ( p_person_id => p_person_id);
930:
931: hr_utility.set_location(' OUT min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 201);
932: hr_utility.set_location(' OUT max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 202);
933: hr_utility.set_location('Leaving ' || l_proc, 220);
934: --
935: EXCEPTION
936: WHEN OTHERS THEN
929: ( p_person_id => p_person_id);
930:
931: hr_utility.set_location(' OUT min ' || to_char(l_hd_min, 'DD-MON-RRRR') , 201);
932: hr_utility.set_location(' OUT max ' || to_char(l_hd_max, 'DD-MON-RRRR') , 202);
933: hr_utility.set_location('Leaving ' || l_proc, 220);
934: --
935: EXCEPTION
936: WHEN OTHERS THEN
937: fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
953: l_proc VARCHAR2 (100) :=
954: 'per_periods_of_service_pkg_v2.IsBackToBackContract';
955: --
956: BEGIN
957: hr_utility.set_location('Entering ' || l_proc, 10);
958: l_fpd := Get_Max_Last_process_Date (p_person_id);
959: l_atd := get_atd
960: ( p_person_id => p_person_id
961: , p_final_process_date => l_fpd);