58: --
59: l_proc varchar2(15) := 'get_save_fields';
60: --
61: begin
62: g_debug := hr_utility.debug_enabled; -- get debug status
63: IF g_debug THEN
64: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
65: END IF;
66:
60: --
61: begin
62: g_debug := hr_utility.debug_enabled; -- get debug status
63: IF g_debug THEN
64: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
65: END IF;
66:
67: open get_assgt;
68: fetch get_assgt into
92: --
93: close get_assgt;
94: --
95: IF g_debug THEN
96: hr_utility.set_location('Leaving: '|| g_package || l_proc, 10);
97: END IF;
98:
99: end get_save_fields;
100: -----------------------------------------------------------------------------
142: -- CHECK FOR CURRENT EMPLOYEE:
143: -- Check database for current_employee flag because another user
144: -- may have changed the flag since querying the person
145: --
146: hr_utility.set_location('per_assignments_f2_pkg.iu_non_payroll_checks',1);
147: open curr_emp;
148: fetch curr_emp into l_null;
149: if curr_emp%notfound then
150: close curr_emp;
155: --
156: -- CHECK VALID STATUS:
157: -- Check that the Status is still active.
158: --
159: hr_utility.set_location('per_assignments_f2_pkg.iu_non_payroll_checks',2);
160: hr_utility.trace('p_per_sys_st is '||p_per_sys_st);
161: hr_utility.trace('p_s_per_sys_st is '||p_s_per_sys_st);
162: hr_utility.trace('P_ASS_ST_TYPE_ID is '|| to_char(P_ASS_ST_TYPE_ID));
163: if (p_per_sys_st <> p_s_per_sys_st) or (p_s_per_sys_st is null) then
156: -- CHECK VALID STATUS:
157: -- Check that the Status is still active.
158: --
159: hr_utility.set_location('per_assignments_f2_pkg.iu_non_payroll_checks',2);
160: hr_utility.trace('p_per_sys_st is '||p_per_sys_st);
161: hr_utility.trace('p_s_per_sys_st is '||p_s_per_sys_st);
162: hr_utility.trace('P_ASS_ST_TYPE_ID is '|| to_char(P_ASS_ST_TYPE_ID));
163: if (p_per_sys_st <> p_s_per_sys_st) or (p_s_per_sys_st is null) then
164: open asg_type;
157: -- Check that the Status is still active.
158: --
159: hr_utility.set_location('per_assignments_f2_pkg.iu_non_payroll_checks',2);
160: hr_utility.trace('p_per_sys_st is '||p_per_sys_st);
161: hr_utility.trace('p_s_per_sys_st is '||p_s_per_sys_st);
162: hr_utility.trace('P_ASS_ST_TYPE_ID is '|| to_char(P_ASS_ST_TYPE_ID));
163: if (p_per_sys_st <> p_s_per_sys_st) or (p_s_per_sys_st is null) then
164: open asg_type;
165: fetch asg_type into l_null;
158: --
159: hr_utility.set_location('per_assignments_f2_pkg.iu_non_payroll_checks',2);
160: hr_utility.trace('p_per_sys_st is '||p_per_sys_st);
161: hr_utility.trace('p_s_per_sys_st is '||p_s_per_sys_st);
162: hr_utility.trace('P_ASS_ST_TYPE_ID is '|| to_char(P_ASS_ST_TYPE_ID));
163: if (p_per_sys_st <> p_s_per_sys_st) or (p_s_per_sys_st is null) then
164: open asg_type;
165: fetch asg_type into l_null;
166: if asg_type%notfound then
174: --
175: -- Check new assignment number - does not write back to parameter but
176: -- a local parameter must be used.
177: --
178: hr_utility.set_location('per_assignments_f2_pkg.iu_non_payroll_checks',3);
179: if p_ass_num is not null then
180: l_ass_num := p_ass_num;
181: hr_assignment.gen_new_ass_number(
182: p_ass_id,
396: and rule_type = 'TERMS'
397: and rule_mode = 'Y';
398: --
399: begin
400: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',10);
401: --
402: -- Get Yes/No, people group structure.
403: --
404: open pg_struct;
409: close pg_struct;
410: --
411: -- Now get default ACTIVE_ASSIGN user status.
412: --
413: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',20);
414: open def_assgt_status;
415: fetch def_assgt_status into
416: P_DEF_USER_ST,
417: P_DEF_ST_ID;
423: fnd_message.raise_error;
424: end if;
425: close def_assgt_status;
426: --
427: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',30);
428: open valid_pos_grades;
429: fetch valid_pos_grades into l_dummy;
430: if valid_pos_grades%found then
431: P_VALID_POS_FLAG := 'Y';
431: P_VALID_POS_FLAG := 'Y';
432: end if;
433: close valid_pos_grades;
434: --
435: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',40);
436: open valid_job_grades;
437: fetch valid_job_grades into l_dummy;
438: if valid_job_grades%found then
439: P_VALID_JOB_FLAG := 'Y';
441: close valid_job_grades;
442: --
443: -- Get Person related info. if person id specified.
444: --
445: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',50);
446: if ( p_person_id is not null ) then
447: open get_pd_of_ser;
448: fetch get_pd_of_ser into l_dummy_dt, P_PERIOD_OF_SERVICE_ID;
449: if get_pd_of_ser%notfound then
456: --
457: -- Get Set Of Books info if AP is installed. This is required for
458: -- the GL flex.
459: --
460: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',55);
461: open is_ap_installed;
462: fetch is_ap_installed into l_sqlap_installed;
463: close is_ap_installed;
464: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',60);
460: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',55);
461: open is_ap_installed;
462: fetch is_ap_installed into l_sqlap_installed;
463: close is_ap_installed;
464: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',60);
465: --
466: if l_sqlap_installed = 'Y' then
467: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',70);
468: --
463: close is_ap_installed;
464: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',60);
465: --
466: if l_sqlap_installed = 'Y' then
467: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',70);
468: --
469: -- Clear p_gl_set_of_books_id and p_fsp_table_name before we
470: -- start, though they should be null anyway.
471: --
477: --
478: open sob_id;
479: fetch sob_id into l_gl_set_of_books_id;
480: if sob_id%FOUND then
481: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',80);
482: --
483: -- Bug 3270409
484: --
485: -- Even if there is exactly one set_of_books_id for the business group
490: --
491: P_ACCOUNTING_FLEXFIELD_OK_FLAG := 'Y';
492: P_GL_SET_OF_BOOKS_ID := NULL;
493: else
494: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',110);
495: --
496: -- There's no set of books for the business group.
497: -- Set the flex flag to N.
498: --
503: --
504: -- AP is not installed.
505: --
506: P_ACCOUNTING_FLEXFIELD_OK_FLAG := 'N';
507: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',120);
508: end if;
509:
510: --
511: -- Get the soft coded keyflex setup info.
518: (p_person_id => p_person_id2
519: ,p_effective_date => p_sess_date
520: ,p_system_person_type => 'EMP')
521: and (nvl(p_assignment_type,'E') = 'E')) THEN
522: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',130);
523: open scl;
524: fetch scl into P_SCL_ID_FLEX_NUM;
525: if scl%notfound then
526: P_NO_SCL := 'Y';
531: (p_person_id => p_person_id2
532: ,p_effective_date => p_sess_date
533: ,p_system_person_type => 'EX_EMP')
534: and (nvl(p_assignment_type,'E') = 'E')) THEN
535: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',135);
536: open scl;
537: fetch scl into P_SCL_ID_FLEX_NUM;
538: if scl%notfound then
539: P_NO_SCL := 'Y';
544: (p_person_id => p_person_id2
545: ,p_effective_date => p_sess_date
546: ,p_system_person_type => 'CWK')
547: and (nvl(p_assignment_type,'C') = 'C'))THEN
548: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',140);
549: open scl_cwk;
550: fetch scl_cwk into P_SCL_ID_FLEX_NUM;
551: if scl_cwk%notfound then
552: P_NO_SCL := 'Y';
552: P_NO_SCL := 'Y';
553: end if;
554: close scl_cwk;
555: ELSE
556: hr_utility.set_location('per_assignments_f2_pkg.initiate_assignment',150);
557: P_NO_SCL := 'Y';
558: END IF;
559:
560: if not P_NO_SCL = 'Y' then
586: end if;
587: close terms;
588: end if;
589: --
590: hr_utility.set_location('Leaving...:per_assignments_f2_pkg.initiate_assignment',200);
591: --
592: end initiate_assignment;
593: -----------------------------------------------------------------------------
594: procedure real_del_checks(
646: --
647: l_proc varchar2(15) := 'real_del_checks';
648: --
649: begin
650: g_debug := hr_utility.debug_enabled; -- get debug status
651: IF g_debug THEN
652: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
653: END IF;
654: --
648: --
649: begin
650: g_debug := hr_utility.debug_enabled; -- get debug status
651: IF g_debug THEN
652: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
653: END IF;
654: --
655: -- Do not allow the user to delete this assignment if this is the only
656: -- assignment with a start date that is the same as the period of
674: --
675: -- Perform the referential integrity checks.
676: --
677: IF g_debug THEN
678: hr_utility.set_location( g_package || l_proc, 10);
679: END IF;
680: hr_assignment.del_ref_int_check(
681: p_ass_id,
682: 'ZAP',
689: l_re_entry_point := 2;
690: l_new_end_date := p_new_end_date;
691: --
692: IF g_debug THEN
693: hr_utility.set_location( g_package || l_proc, 20);
694: END IF;
695: per_assignments_f3_pkg.update_and_delete_bundle(
696: null,
697: p_val_st_date,
721: --
722: -- No end warning is returned from this check.
723: --
724: IF g_debug THEN
725: hr_utility.set_location( 'Leaving ' || g_package || l_proc, 30);
726: END IF;
727: end real_del_checks;
728: -----------------------------------------------------------------------------
729: --
916: --
917: l_proc varchar2(17) := 'pre_update_bundle';
918: --
919: begin
920: g_debug := hr_utility.debug_enabled; -- get debug status
921: IF g_debug THEN
922: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
923: END IF;
924: get_save_fields(
918: --
919: begin
920: g_debug := hr_utility.debug_enabled; -- get debug status
921: IF g_debug THEN
922: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
923: END IF;
924: get_save_fields(
925: p_row_id,
926: p_s_pos_id,
941: -- Check that "The position is now inconsistent with the new
942: -- organization" is not true.
943: --
944: IF g_debug THEN
945: hr_utility.set_location( g_package || l_proc, 10);
946: END IF;
947: if (p_org_id <> p_s_org_id) and (p_pos_id is not null) then
948: open consistent_org;
949: fetch consistent_org into l_dummy;
960: -- for this assignment id. If it is then the status must be
961: -- ACTIVE_ASSIGN.
962: --
963: IF g_debug THEN
964: hr_utility.set_location( g_package || l_proc, 20);
965: END IF;
966: if p_upd_mode = 'CORRECTION' and p_per_sys_st not in ('ACTIVE_ASSIGN'
967: ,'ACTIVE_CWK') then
968: open first_assgt;
976: close first_assgt;
977: end if;
978: --
979: IF g_debug THEN
980: hr_utility.set_location( g_package || l_proc, 30);
981: END IF;
982: if p_upd_mode <> 'UPDATE_OVERRIDE' then
983: --
984: -- Check for "This assignment has been ended in the future...
995: --
996: -- populate POG record with asg values
997: --
998: IF g_debug THEN
999: hr_utility.set_location( g_package || l_proc, 40);
1000: END IF;
1001: OPEN asg_details(p_ass_id, p_sess_date);
1002: FETCH asg_details into g_old_asg_rec;
1003: IF asg_details%NOTFOUND THEN
1001: OPEN asg_details(p_ass_id, p_sess_date);
1002: FETCH asg_details into g_old_asg_rec;
1003: IF asg_details%NOTFOUND THEN
1004: CLOSE asg_details;
1005: hr_utility.trace('no rows in asg_details');
1006: ELSE
1007: CLOSE asg_details;
1008: END IF;
1009: --
1007: CLOSE asg_details;
1008: END IF;
1009: --
1010: IF g_debug THEN
1011: hr_utility.set_location( 'Leaving ' || g_package || l_proc, 50);
1012: END IF;
1013: end pre_update_bundle;
1014: -----------------------------------------------------------------------------
1015: procedure key_delrec(
1036: --
1037: l_proc varchar2(10) := 'key_delrec';
1038: --
1039: begin
1040: g_debug := hr_utility.debug_enabled; -- get debug status
1041: IF g_debug THEN
1042: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
1043: END IF;
1044:
1038: --
1039: begin
1040: g_debug := hr_utility.debug_enabled; -- get debug status
1041: IF g_debug THEN
1042: hr_utility.set_location('Entering: '|| g_package || l_proc, 5);
1043: END IF;
1044:
1045: --
1046: -- These checks are also included in the FND_PRE_DELETE trigger to
1103: p_pay_basis_id);--fix for bug 4764140
1104: --
1105: elsif p_del_mode = 'ZAP' then
1106: IF g_debug THEN
1107: hr_utility.set_location( g_package || l_proc, 10);
1108: END IF;
1109: real_del_checks(
1110: p_pd_os_id,
1111: p_ass_id,
1125: p_pay_basis_id);--fix for bug 4764140
1126: end if;
1127: --
1128: IF g_debug THEN
1129: hr_utility.set_location( 'Leaving ' || g_package || l_proc, 10);
1130: END IF;
1131: end key_delrec;
1132: -----------------------------------------------------------------------------
1133: procedure pre_delete(
1325: and p_eff_date between effective_start_date
1326: and effective_end_date;
1327: --
1328: begin
1329: hr_utility.set_location('per_assignments_f2_pkg.pre_delete',1);
1330: --
1331: -- Once again ignore l_new_end_date, even if it changes value, as
1332: -- the change should not be made if the validation fails (and if it
1333: -- succeeds then the record will be deleted anyway).
1366: -- N.B. This is the only point in whuch the p_new_end_date is
1367: -- passed as an IN OUT parameter. The value may change
1368: -- and the new value is required here
1369: --
1370: hr_utility.set_location('per_assignments_f2_pkg.pre_delete',2);
1371:
1372:
1373:
1374: per_assignments_f3_pkg.update_and_delete_bundle(
1398: end if;
1399: --
1400: elsif p_del_mode = 'ZAP' then
1401: --
1402: hr_utility.set_location('per_assignments_f2_pkg.pre_delete',20);
1403:
1404: real_del_checks(
1405: p_pd_os_id,
1406: p_ass_id,
1419: p_ceil_seq,
1420: p_pay_basis_id);--fix for bug 4764140
1421: end if;
1422: --
1423: hr_utility.set_location('per_assignments_f2_pkg.pre_delete',40);
1424: per_assignments_f3_pkg.check_future_primary(
1425: p_del_mode,
1426: p_val_st_date,
1427: p_prim_flag,
1435: l_show_cand_prim_assgts,
1436: p_prim_date_from,
1437: p_new_prim_ass_id);
1438: --
1439: hr_utility.trace('Check_Future_Primary Date'||
1440: to_char(p_prim_date_from,'DD-MON-YYYY'));
1441: --
1442: if l_show_cand_prim_assgts = 'Y' then
1443: --
1450: return;
1451: end if;
1452: --
1453: <
1454: hr_utility.set_location('per_assignments_f2_pkg.pre_delete',50);
1455: --
1456: -- Now check the changing of term_assign's with relation to it's
1457: -- impact on element entries (G255).
1458: --
1474: -- LOV is only displayed once.
1475: --
1476: p_returned_warning := null;
1477: --
1478: hr_utility.set_location('per_assignments_f2_pkg.pre_delete',60);
1479: OPEN asg_details(p_ass_id, p_sess_date);
1480: FETCH asg_details into g_old_asg_rec;
1481: IF asg_details%NOTFOUND THEN
1482: CLOSE asg_details;
1479: OPEN asg_details(p_ass_id, p_sess_date);
1480: FETCH asg_details into g_old_asg_rec;
1481: IF asg_details%NOTFOUND THEN
1482: CLOSE asg_details;
1483: hr_utility.trace('no rows in asg_details');
1484: ELSE
1485: CLOSE asg_details;
1486: END IF;
1487: --
1484: ELSE
1485: CLOSE asg_details;
1486: END IF;
1487: --
1488: hr_utility.set_location(' leaving per_assignments_f2_pkg.pre_delete',70);
1489: end pre_delete;
1490: -----------------------------------------------------------------------------
1491: END PER_ASSIGNMENTS_F2_PKG;