2: /* $Header: pyucslis.pkb 120.26.12010000.5 2008/09/16 10:27:09 rnemani ship $ */
3: --
4: --
5: g_package varchar2(20) := 'pay_pyucslis_pkg.';
6: g_debug boolean := hr_utility.debug_enabled;
7: --
8: --
9: -- Start changes for the Bug 5438641
10: -- The procedure modified for Bulk Collect.
23: l_upd_date date := trunc(sysdate);
24: --
25: begin
26: --
27: hr_utility.set_location('Entering: '||l_proc, 10);
28: -- Insert a record for each contact of the person. Only process those
29: -- profiles which are in the generation scope but include ALL contacts
30: -- for this person_id.
31:
66: where ppl1.person_id = pcr.contact_person_id
67: and ppl1.granted_user_id is null
68: and ppl1.security_profile_id = ppl.security_profile_id);
69: --
70: hr_utility.set_location('Leaving: '||l_proc, 99);
71: --
72: end add_contacts_for_person;
73:
74: --
149: --
150:
151: begin
152: --
153: hr_utility.set_location('Entering: '||l_proc, 1);
154: hr_utility.set_location('Request ID '||p_request_id, 15);
155: --
156: -- Bulk collect the unrelated contacts into PL/SQL tables.
157: open csr_get_unrelated_contacts;
150:
151: begin
152: --
153: hr_utility.set_location('Entering: '||l_proc, 1);
154: hr_utility.set_location('Request ID '||p_request_id, 15);
155: --
156: -- Bulk collect the unrelated contacts into PL/SQL tables.
157: open csr_get_unrelated_contacts;
158: fetch csr_get_unrelated_contacts bulk collect into l_per_tbl, l_per_bg_tbl;
157: open csr_get_unrelated_contacts;
158: fetch csr_get_unrelated_contacts bulk collect into l_per_tbl, l_per_bg_tbl;
159: close csr_get_unrelated_contacts;
160: --
161: hr_utility.set_location(l_proc, 10);
162: --
163: if l_per_tbl.count > 0 then
164: -- When there are unrelated contacts, bulk collect the security
165: -- profiles that restrict by contacts.
162: --
163: if l_per_tbl.count > 0 then
164: -- When there are unrelated contacts, bulk collect the security
165: -- profiles that restrict by contacts.
166: hr_utility.set_location(l_proc, 20);
167: --
168: if p_generation_scope = 'ALL_BUS_GRP' then
169: --
170: open csr_get_sec_profs_bg;
178: close csr_get_sec_profs;
179: --
180: end if;
181: --
182: hr_utility.set_location(l_proc, 30);
183: --
184: if l_sp_tbl.count > 0 then
185: --
186: hr_utility.set_location(l_proc, 40);
182: hr_utility.set_location(l_proc, 30);
183: --
184: if l_sp_tbl.count > 0 then
185: --
186: hr_utility.set_location(l_proc, 40);
187: --
188: for i in l_sp_tbl.first..l_sp_tbl.last loop
189: -- Insert the unrelated contacts for each security profile.
190: -- Enforce the business group restriction when restricting
225: end if;
226: --
227: end if;
228: --
229: hr_utility.set_location('Leaving: '||l_proc, 999);
230: --
231: end add_unrelated_contacts;
232: --
233:
244: PROCEDURE delete_old_person_list_changes (l_effective_date DATE)
245: IS
246: BEGIN
247: --
248: hr_utility.set_location('hr_listgen.delete_old_person_list_changes',10);
249: --
250: -- Stubb out as part of ex-person security enhancements.
251: --
252: hr_utility.set_location('hr_listgen.delete_old_person_list_changes',20);
248: hr_utility.set_location('hr_listgen.delete_old_person_list_changes',10);
249: --
250: -- Stubb out as part of ex-person security enhancements.
251: --
252: hr_utility.set_location('hr_listgen.delete_old_person_list_changes',20);
253: --
254: END delete_old_person_list_changes;
255: --
256: --
283: BEGIN
284: --
285: IF (l_include_exclude_payroll_flag = 'I') THEN
286: --
287: hr_utility.set_location('hr_listgen.build_payroll_list', 10);
288: --
289: INSERT INTO pay_payroll_list
290: (payroll_id,
291: security_profile_id,
308: AND pay.effective_end_date;
309: --
310: ELSE -- exclude payrolls
311: --
312: hr_utility.set_location('hr_listgen.build_payroll_list', 20);
313: --
314: INSERT INTO pay_payroll_list
315: (payroll_id,
316: security_profile_id,
380: l_proc varchar2(100) := 'pay_pyucslis_pkg.build_organization_list';
381: --
382: begin
383: --
384: hr_utility.set_location(l_proc, 10);
385: --
386: -- Insert all organizations in the hierarchy (excluding the top organization).
387: --
388: INSERT INTO per_organization_list
408: WHERE v.organization_structure_id = l_organization_structure_id
409: AND l_effective_date BETWEEN v.date_from
410: AND NVL(v.date_to, TO_DATE('31-12-4712','dd-mm-yyyy')));
411: --
412: hr_utility.set_location(l_proc, 20);
413: --
414: -- Insert all organizations in the organization list that have their
415: -- include / exclude flag set to 'I'.
416: --
435: FROM per_organization_list pol
436: WHERE pol.security_profile_id = l_security_profile_id
437: AND pol.organization_id = pso.organization_id);
438: --
439: hr_utility.set_location(l_proc, 30);
440: --
441: -- Include the Top Organization if the security profile permits.
442: --
443: IF (l_include_top_org_flag = 'Y') THEN
443: IF (l_include_top_org_flag = 'Y') THEN
444: --
445: IF l_organization_id IS NOT NULL THEN
446: --
447: hr_utility.set_location(l_proc, 40);
448: --
449: INSERT INTO per_organization_list
450: (security_profile_id,
451: organization_id,
471: END IF;
472: --
473: END IF;
474: --
475: hr_utility.set_location(l_proc, 50);
476: --
477: IF p_business_group_mode='GLOBAL' AND
478: NVL(l_exclude_business_groups_flag, 'N') = 'N' THEN
479: --
609: BEGIN
610: --
611: IF (l_view_all_organizations_flag = 'N') THEN
612: --
613: hr_utility.set_location('hr_listgen.build_position_list', 10);
614: --
615: INSERT INTO per_position_list
616: (security_profile_id,
617: position_id,
647: -- Include the top position.
648: --
649: IF ( l_include_top_position_flag = 'Y') THEN
650: --
651: hr_utility.set_location('hr_listgen.build_position_list', 20);
652: --
653: INSERT INTO per_position_list
654: (security_profile_id,
655: position_id,
675: END IF; -- Include the top position.
676: --
677: ELSE -- l_view_all_organizations_flag
678: --
679: hr_utility.set_location('hr_listgen.build_position_list', 30);
680: --
681: INSERT INTO per_position_list
682: (security_profile_id,
683: position_id,
706: -- Include top position.
707: --
708: IF ( l_include_top_position_flag = 'Y') THEN
709: --
710: hr_utility.set_location('hr_listgen.build_position_list', 40);
711: --
712: INSERT INTO per_position_list
713: (security_profile_id,
714: position_id,
758: l_upd_date date := trunc(sysdate);
759: --
760: begin
761: --
762: hr_utility.set_location('Entering: ' || l_proc, 10);
763:
764: IF p_view_all_contacts_flag = 'Y' then ---- Added for bug (6376000/4774264)
765: -- If the Security profile set as -- View All contacts = Yes
766: -- In this case we need to Insert the contact records for,
799: where ppl1.person_id = pcr.contact_person_id
800: and ppl1.granted_user_id is null
801: and ppl1.security_profile_id = p_security_profile_id ); -- ppl.security_profile_id) for bug (6376000/4774264)
802: --
803: hr_utility.set_location(l_proc, 20);
804: Else
805: -- Insert into person list, all people with a contact relationship to
806: -- someone already in the person list as long as their system person type
807: -- is 'other'
838: where ppl1.person_id = pcr.contact_person_id
839: and ppl1.granted_user_id is null
840: and ppl1.security_profile_id = ppl.security_profile_id);
841: --
842: hr_utility.set_location(l_proc, 30);
843: End if;
844: -- Inserts all unrelated contacts(excluding the candidates, those
845: -- registered from iRecruitment) who do not have any other assignments.
846: -- If there are additional assignments these will be excluded from here
878: where ppl.person_id = papf.person_id
879: and ppl.granted_user_id is null
880: and ppl.security_profile_id = psp.security_profile_id);
881: --
882: hr_utility.set_location('Leaving: ' || l_proc, 99);
883: --
884: end build_contact_list;
885: --
886: /* =======================================================================
906: l_update_date DATE)
907: IS
908: BEGIN
909: --
910: hr_utility.set_location('hr_listgen.add_person_list_changes',10);
911: --
912: INSERT INTO per_person_list
913: (security_profile_id,
914: person_id,
943: WHERE ppl.person_id = plc.person_id
944: AND ppl.granted_user_Id IS NULL
945: AND ppl.security_profile_id = plc.security_profile_id);
946: --
947: hr_utility.set_location('hr_listgen.add_person_list_changes',20);
948: --
949: END add_person_list_changes;
950:
951:
984: l_num number(10);
985: j number(10):=1;
986: i number(10):=50;
987: BEGIN
988: hr_utility.set_location('Entering execute_statement',10);
989: l_cursor_id := dbms_sql.open_cursor;
990: fnd_dsql.set_cursor(l_cursor_id);
991:
992: l_dsql_text := fnd_dsql.get_text(FALSE);
994:
995: /* -- use to print the final sql query
996: while j < l_num +50
997: loop
998: hr_utility.set_location(substr(l_dsql_text,j,i),10);
999: -- hr_utility.set_location('-------------------------',20);
1000: -- dbms_output.put_line(substr(l_dsql_text,i));
1001: j := j+50;
1002: end loop;
995: /* -- use to print the final sql query
996: while j < l_num +50
997: loop
998: hr_utility.set_location(substr(l_dsql_text,j,i),10);
999: -- hr_utility.set_location('-------------------------',20);
1000: -- dbms_output.put_line(substr(l_dsql_text,i));
1001: j := j+50;
1002: end loop;
1003: */
1001: j := j+50;
1002: end loop;
1003: */
1004: dbms_sql.parse(l_cursor_id, l_dsql_text, dbms_sql.native);
1005: hr_utility.set_location('after parse',10);
1006: fnd_dsql.do_binds;
1007: hr_utility.set_location('after bind',10);
1008: l_num_of_rows := dbms_sql.execute(l_cursor_id);
1009: hr_utility.set_location('after execuate ',10);
1003: */
1004: dbms_sql.parse(l_cursor_id, l_dsql_text, dbms_sql.native);
1005: hr_utility.set_location('after parse',10);
1006: fnd_dsql.do_binds;
1007: hr_utility.set_location('after bind',10);
1008: l_num_of_rows := dbms_sql.execute(l_cursor_id);
1009: hr_utility.set_location('after execuate ',10);
1010: dbms_sql.close_cursor(l_cursor_id);
1011: hr_utility.set_location('Leaveing execute_statement',10);
1005: hr_utility.set_location('after parse',10);
1006: fnd_dsql.do_binds;
1007: hr_utility.set_location('after bind',10);
1008: l_num_of_rows := dbms_sql.execute(l_cursor_id);
1009: hr_utility.set_location('after execuate ',10);
1010: dbms_sql.close_cursor(l_cursor_id);
1011: hr_utility.set_location('Leaveing execute_statement',10);
1012: END execute_statement;
1013:
1007: hr_utility.set_location('after bind',10);
1008: l_num_of_rows := dbms_sql.execute(l_cursor_id);
1009: hr_utility.set_location('after execuate ',10);
1010: dbms_sql.close_cursor(l_cursor_id);
1011: hr_utility.set_location('Leaveing execute_statement',10);
1012: END execute_statement;
1013:
1014: /*-- for the bug 5214715 --*/
1015: PROCEDURE add_comm_str ( p_sec_rec IN PER_SECURITY_PROFILES%ROWTYPE ) as
1015: PROCEDURE add_comm_str ( p_sec_rec IN PER_SECURITY_PROFILES%ROWTYPE ) as
1016: l_restriction_flags varchar2(2000);
1017: l_exclude_flags varchar2(2000);
1018: BEGIN
1019: hr_utility.set_location('Entering add_comm_str',10);
1020: l_restriction_flags :='';
1021: if (p_sec_rec.view_all_cwk_flag = 'N') then
1022: if length(l_restriction_flags)>0 then
1023: l_restriction_flags:=l_restriction_flags||' OR ';
1083: fnd_dsql.add_text(' and ( ');
1084: fnd_dsql.add_text(l_exclude_flags);
1085: fnd_dsql.add_text(' ) ');
1086: end if;
1087: hr_utility.set_location('Leaveing add_comm_str',10);
1088: END add_comm_str;
1089:
1090: /*-- for the bug 5214715 --*/
1091: -- XXCUSTOM - procedure to add static insert statement text
1103: ,p_sec_rec IN PER_SECURITY_PROFILES%ROWTYPE
1104: )
1105: AS
1106: BEGIN
1107: hr_utility.set_location('Entering init_statement',10);
1108: fnd_dsql.init;
1109:
1110: fnd_dsql.add_text(
1111: 'INSERT into per_person_list
1220: if p_sec_rec.view_all_organizations_flag='Y' then
1221: null;
1222: end if;
1223: /*-------------- End where clause -------------------*/
1224: hr_utility.set_location('Leaveing init_statement',10);
1225: end init_statement;
1226:
1227: BEGIN
1228: hr_utility.set_location('Entering Craete_person_list',10);
1224: hr_utility.set_location('Leaveing init_statement',10);
1225: end init_statement;
1226:
1227: BEGIN
1228: hr_utility.set_location('Entering Craete_person_list',10);
1229: init_statement
1230: (
1231: --p_person_id => p_person_id
1232: p_request_id => p_request_id
1311: fnd_dsql.add_text(sec_rec.restriction_text);
1312: end if;
1313:
1314: if g_debug then
1315: hr_utility.trace('select '||to_char(length(l_select_text)));
1316: hr_utility.trace('where '||to_char(length(l_where_clause)));
1317: l_execution_stmt2:=l_execution_stmt;
1318: while length(l_execution_stmt2)>0 loop
1319: hr_utility.trace(substr(l_execution_stmt2,1,70));
1312: end if;
1313:
1314: if g_debug then
1315: hr_utility.trace('select '||to_char(length(l_select_text)));
1316: hr_utility.trace('where '||to_char(length(l_where_clause)));
1317: l_execution_stmt2:=l_execution_stmt;
1318: while length(l_execution_stmt2)>0 loop
1319: hr_utility.trace(substr(l_execution_stmt2,1,70));
1320: l_execution_stmt2:=substr(l_execution_stmt2,71);
1315: hr_utility.trace('select '||to_char(length(l_select_text)));
1316: hr_utility.trace('where '||to_char(length(l_where_clause)));
1317: l_execution_stmt2:=l_execution_stmt;
1318: while length(l_execution_stmt2)>0 loop
1319: hr_utility.trace(substr(l_execution_stmt2,1,70));
1320: l_execution_stmt2:=substr(l_execution_stmt2,71);
1321: end loop;
1322: end if;
1323:
1321: end loop;
1322: end if;
1323:
1324: Execute_statement;
1325: hr_utility.set_location('Leaveing Craete_person_list',10);
1326: END create_person_list;
1327:
1328:
1329: --
1345:
1346: --
1347: begin
1348: --
1349: hr_utility.set_location('Entering : '||l_proc,10);
1350: --
1351: -- Clear the records for this person.
1352:
1353: -- Bug6809753 - start
1530: --
1531: execute immediate l_exe_str;
1532: -- Bug6809753 -end
1533:
1534: hr_utility.set_location('Leaving : '||l_proc,20);
1535: --
1536: end clear_per_list_table;
1537: --
1538: --
1548: l_proc varchar2(72) := g_package||'clear_unrelated_contacts';
1549: --
1550: begin
1551: --
1552: hr_utility.set_location('Entering : '||l_proc,10);
1553: --
1554: if p_generation_scope <> 'ALL_BUS_GRP' then
1555:
1556: delete from per_person_list ppl
1598: from per_contact_relationships pcr
1599: where pcr.contact_person_id = ppl.person_id);
1600: end if;
1601: --
1602: hr_utility.set_location('Leaving : '||l_proc,20);
1603: --
1604: end clear_unrelated_contacts;
1605: --
1606: -- ----------------------------------------------------------------------------
1617: l_proc varchar2(72) := g_package||'clear_sp_list_table';
1618: --
1619: begin
1620: --
1621: hr_utility.set_location('Entering : '||l_proc, 10);
1622: -- Clearing Organization static list
1623: delete
1624: from per_organization_list
1625: where security_profile_id = p_security_profile_id
1624: from per_organization_list
1625: where security_profile_id = p_security_profile_id
1626: and user_id is null;
1627: --
1628: hr_utility.set_location(l_proc, 20);
1629: -- Clearing Position static list
1630: delete
1631: from per_position_list
1632: where security_profile_id = p_security_profile_id
1631: from per_position_list
1632: where security_profile_id = p_security_profile_id
1633: and user_id is null;
1634: --
1635: hr_utility.set_location(l_proc, 30);
1636: -- Clearing the Person static list
1637: if p_clear_people_flag then
1638: --
1639: delete
1642: and granted_user_id is null;
1643: --
1644: end if;
1645: --
1646: hr_utility.set_location(l_proc, 40);
1647: -- Clearing Payroll static list
1648: delete
1649: from pay_payroll_list
1650: where security_profile_id = p_security_profile_id;
1648: delete
1649: from pay_payroll_list
1650: where security_profile_id = p_security_profile_id;
1651: --
1652: hr_utility.set_location('Leaving : '||l_proc, 99);
1653: --
1654: end clear_sp_list_table;
1655: --
1656: /* =======================================================================
1852: l_cleared_ppl boolean := FALSE;
1853:
1854: BEGIN
1855:
1856: hr_utility.set_location('Entering : '||l_proc,10);
1857: hr_utility.set_location('p_person_id '||p_person_id,15);
1858: hr_utility.set_location('p_effective_date '||to_char(p_effective_date,
1859: 'DD-MON-YYYY'),20);
1860: hr_utility.set_location('p_business_group_id '||p_business_group_id,25);
1853:
1854: BEGIN
1855:
1856: hr_utility.set_location('Entering : '||l_proc,10);
1857: hr_utility.set_location('p_person_id '||p_person_id,15);
1858: hr_utility.set_location('p_effective_date '||to_char(p_effective_date,
1859: 'DD-MON-YYYY'),20);
1860: hr_utility.set_location('p_business_group_id '||p_business_group_id,25);
1861: hr_utility.set_location('p_generation_scope '||p_generation_scope,30);
1854: BEGIN
1855:
1856: hr_utility.set_location('Entering : '||l_proc,10);
1857: hr_utility.set_location('p_person_id '||p_person_id,15);
1858: hr_utility.set_location('p_effective_date '||to_char(p_effective_date,
1859: 'DD-MON-YYYY'),20);
1860: hr_utility.set_location('p_business_group_id '||p_business_group_id,25);
1861: hr_utility.set_location('p_generation_scope '||p_generation_scope,30);
1862:
1856: hr_utility.set_location('Entering : '||l_proc,10);
1857: hr_utility.set_location('p_person_id '||p_person_id,15);
1858: hr_utility.set_location('p_effective_date '||to_char(p_effective_date,
1859: 'DD-MON-YYYY'),20);
1860: hr_utility.set_location('p_business_group_id '||p_business_group_id,25);
1861: hr_utility.set_location('p_generation_scope '||p_generation_scope,30);
1862:
1863: /*
1864: ** We need to find out quickly if the person is an APL today or in the
1857: hr_utility.set_location('p_person_id '||p_person_id,15);
1858: hr_utility.set_location('p_effective_date '||to_char(p_effective_date,
1859: 'DD-MON-YYYY'),20);
1860: hr_utility.set_location('p_business_group_id '||p_business_group_id,25);
1861: hr_utility.set_location('p_generation_scope '||p_generation_scope,30);
1862:
1863: /*
1864: ** We need to find out quickly if the person is an APL today or in the
1865: ** future so we can control processing later.
1873: fetch c_is_former into l_is_former;
1874: close c_is_former;
1875: */
1876:
1877: hr_utility.set_location(l_proc,40);
1878:
1879: if p_who_to_process in ('CURRENT','ALL')
1880: -- or ( p_who_to_process = 'TERM'
1881: -- and l_is_current_apl = 'Y'
1893: ** Optimizations for this issue will be considered at a later date. If this comment
1894: ** is still in the file then you know the optimization has not yet been completed.
1895: */
1896:
1897: hr_utility.set_location(l_proc,50);
1898: /*
1899: ** We are processing current EMP/APL/CWK or
1900: ** we are processing former EMP/APL/CWK but the person we are dealing
1901: ** with is both a current APL and a former EMP/CWK in which case we
1922: /*
1923: ** Populate the person list for each assignment that this person has.
1924: */
1925: for l_asgrec in c_get_asg(l_person_id, l_person_proc_date) loop
1926: hr_utility.set_location(l_proc,60);
1927: hr_utility.trace('processing assignment :'||
1928: to_char(l_asgrec.assignment_id));
1929: hr_security_internal.add_to_person_list(
1930: p_effective_date => l_person_proc_date,
1923: ** Populate the person list for each assignment that this person has.
1924: */
1925: for l_asgrec in c_get_asg(l_person_id, l_person_proc_date) loop
1926: hr_utility.set_location(l_proc,60);
1927: hr_utility.trace('processing assignment :'||
1928: to_char(l_asgrec.assignment_id));
1929: hr_security_internal.add_to_person_list(
1930: p_effective_date => l_person_proc_date,
1931: p_assignment_id => l_asgrec.assignment_id,
1942: -- or ( p_who_to_process = 'CURRENT'
1943: -- and l_is_current_apl = 'Y'
1944: -- and l_is_former = 'Y')
1945: then
1946: hr_utility.set_location(l_proc,70);
1947: /*
1948: ** We are processing former EMP/APL/CWK or
1949: ** we are processing current EMP/APL/CWK but the person we are dealing
1950: ** with is both a current APL and a former EMP/CWK in which case we
1965: /*-- End changes made for the bug 5252738 - Bug6809753 ---*/
1966: -- Bug6809753 -end
1967:
1968: for l_former_person in c_former_person loop
1969: hr_utility.set_location(l_proc,80);
1970: if l_cleared_ppl <> TRUE then
1971: /*
1972: ** Clear out the person list for this person_id if it's not been cleared
1973: ** already for this person.
1983: */
1984: for l_asgrec in c_get_asg(l_former_person.person_id,
1985: l_former_person.effective_date) loop
1986:
1987: hr_utility.set_location(l_proc,90);
1988: hr_utility.trace('processing assignment :'||
1989: to_char(l_asgrec.assignment_id));
1990:
1991: hr_security_internal.add_to_person_list(
1984: for l_asgrec in c_get_asg(l_former_person.person_id,
1985: l_former_person.effective_date) loop
1986:
1987: hr_utility.set_location(l_proc,90);
1988: hr_utility.trace('processing assignment :'||
1989: to_char(l_asgrec.assignment_id));
1990:
1991: hr_security_internal.add_to_person_list(
1992: p_effective_date => l_former_person.effective_date,
2004: ** person for the EX-type they were last. i.e. an EMP leaves and returns
2005: ** as CWK then leaves they will be both EX-EMP and EX-CWK in the PTU
2006: ** table. We only want to process them as EX-CWK.
2007: */
2008: hr_utility.set_location(l_proc,100);
2009: exit;
2010: end if;
2011: end loop;
2012: -- Bug6809753 -start
2021: p_effective_date => p_effective_date,
2022: p_generation_scope => p_generation_scope,
2023: p_business_group_id => p_business_group_id);
2024:
2025: hr_utility.set_location('Leaving : '||l_proc,110);
2026:
2027: END process_person;
2028: --
2029: -- ----------------------------------------------------------------------------
2054: --
2055: begin
2056: --
2057: -- Get the session date and the current date to avoid multiple selects.
2058: hr_utility.set_location('Entering '||l_proc, 10);
2059: hr_utility.set_location('Request ID '||p_request_id, 15);
2060: --
2061: l_effective_date := trunc(p_effective_date);
2062: l_update_date := trunc(sysdate);
2055: begin
2056: --
2057: -- Get the session date and the current date to avoid multiple selects.
2058: hr_utility.set_location('Entering '||l_proc, 10);
2059: hr_utility.set_location('Request ID '||p_request_id, 15);
2060: --
2061: l_effective_date := trunc(p_effective_date);
2062: l_update_date := trunc(sysdate);
2063: --
2060: --
2061: l_effective_date := trunc(p_effective_date);
2062: l_update_date := trunc(sysdate);
2063: --
2064: hr_utility.set_location(l_proc, 20);
2065: --
2066: for sec_rec in security_profiles loop
2067: --
2068: -- Delete previous entries for the profile. By using this function
2072: p_business_group_id => sec_rec.business_group_id,
2073: p_security_profile_id => sec_rec.security_profile_id,
2074: p_clear_people_flag => false);
2075: --
2076: hr_utility.set_location(l_proc, 30);
2077: --
2078: if (sec_rec.view_all_flag = 'N') then
2079: --
2080: hr_utility.set_location(l_proc, 40);
2076: hr_utility.set_location(l_proc, 30);
2077: --
2078: if (sec_rec.view_all_flag = 'N') then
2079: --
2080: hr_utility.set_location(l_proc, 40);
2081: --
2082: if (sec_rec.view_all_payrolls_flag = 'N') then
2083: --
2084: hr_utility.set_location(l_proc, 50);
2080: hr_utility.set_location(l_proc, 40);
2081: --
2082: if (sec_rec.view_all_payrolls_flag = 'N') then
2083: --
2084: hr_utility.set_location(l_proc, 50);
2085: --
2086: -- Build the payroll list.
2087: build_payroll_list(sec_rec.security_profile_id,
2088: sec_rec.business_group_id,
2095: -- Do not insert the orgs if using user-based security.
2096: if (sec_rec.view_all_organizations_flag = 'N' and
2097: nvl(sec_rec.top_organization_method, 'S') <> 'U') then
2098: --
2099: hr_utility.set_location(l_proc, 60);
2100: --
2101: -- Determine business_group mode for the current security profile
2102: if sec_rec.business_group_id is null then
2103: l_business_group_mode := 'GLOBAL';
2120: -- Do not insert the positions if using user-based security.
2121: if (sec_rec.view_all_positions_flag = 'N' and
2122: nvl(sec_rec.top_position_method, 'S') <> 'U') then
2123: --
2124: hr_utility.set_location(l_proc, 70);
2125: --
2126: -- Build position list
2127: build_position_list(sec_rec.security_profile_id,
2128: sec_rec.view_all_organizations_flag,
2133: l_update_date);
2134: --
2135: end if;
2136: --
2137: hr_utility.set_location(l_proc, 80);
2138: --
2139: end if;
2140: --
2141: l_found:=true;
2139: end if;
2140: --
2141: l_found:=true;
2142: --
2143: hr_utility.set_location('Request ID '||p_request_id, 15);
2144: --
2145: end loop;
2146: --
2147: hr_utility.set_location(l_proc, 80);
2143: hr_utility.set_location('Request ID '||p_request_id, 15);
2144: --
2145: end loop;
2146: --
2147: hr_utility.set_location(l_proc, 80);
2148: -- Clearing all unrelated contacts.
2149: clear_unrelated_contacts(p_generation_scope => p_generation_scope,
2150: p_business_group_id => p_business_group_id);
2151: --
2149: clear_unrelated_contacts(p_generation_scope => p_generation_scope,
2150: p_business_group_id => p_business_group_id);
2151: --
2152: -- Add unrelated contacts for the profiles we've processed.
2153: hr_utility.set_location(l_proc, 90);
2154: hr_utility.set_location('Request ID '||p_request_id, 15);
2155: --
2156: add_unrelated_contacts(p_business_group_id => p_business_group_id,
2157: p_generation_scope => p_generation_scope,
2150: p_business_group_id => p_business_group_id);
2151: --
2152: -- Add unrelated contacts for the profiles we've processed.
2153: hr_utility.set_location(l_proc, 90);
2154: hr_utility.set_location('Request ID '||p_request_id, 15);
2155: --
2156: add_unrelated_contacts(p_business_group_id => p_business_group_id,
2157: p_generation_scope => p_generation_scope,
2158: p_effective_date => l_effective_date);
2156: add_unrelated_contacts(p_business_group_id => p_business_group_id,
2157: p_generation_scope => p_generation_scope,
2158: p_effective_date => l_effective_date);
2159: --
2160: hr_utility.set_location('Leaving '||l_proc, 130);
2161: --
2162: end generate_opp_lists;
2163:
2164: --
2226: AND NVL(fusg.end_date,p_effective_date)
2227: AND rownum = 1;
2228:
2229: BEGIN
2230: hr_utility.set_location(l_proc||' sec prof id '||
2231: to_char(p_sec_prof_rec.security_profile_id),13);
2232: hr_utility.set_location(l_proc||' p_effective_date '||
2233: p_effective_date,13);
2234: hr_utility.set_location(l_proc||' p_user_id '||
2228:
2229: BEGIN
2230: hr_utility.set_location(l_proc||' sec prof id '||
2231: to_char(p_sec_prof_rec.security_profile_id),13);
2232: hr_utility.set_location(l_proc||' p_effective_date '||
2233: p_effective_date,13);
2234: hr_utility.set_location(l_proc||' p_user_id '||
2235: p_user_id,13);
2236:
2230: hr_utility.set_location(l_proc||' sec prof id '||
2231: to_char(p_sec_prof_rec.security_profile_id),13);
2232: hr_utility.set_location(l_proc||' p_effective_date '||
2233: p_effective_date,13);
2234: hr_utility.set_location(l_proc||' p_user_id '||
2235: p_user_id,13);
2236:
2237: --
2238: -- Check that the mandatory parameters have been entered.
2340: ,p_del_static_lists_warning => l_del_static_lists_warning);
2341: END IF;
2342: END LOOP;
2343: END IF; -- p_sec_prof_rec.security_profile_id has value
2344: hr_utility.set_location('Leaving : '||l_proc,50);
2345: END build_lists_for_users;
2346: --
2347: -- ----------------------------------------------------------------------------
2348: -- |---------------------< build_lists_for_user >------------------------------|
2387: where security_profile_id = l_security_profile_id;
2388: --
2389: BEGIN
2390: --
2391: hr_utility.trace('Processing for Single User');
2392: hr_utility.set_location('Entering : '||l_proc,10);
2393: --
2394: -- Check that the mandatory parameters have been entered.
2395: --
2388: --
2389: BEGIN
2390: --
2391: hr_utility.trace('Processing for Single User');
2392: hr_utility.set_location('Entering : '||l_proc,10);
2393: --
2394: -- Check that the mandatory parameters have been entered.
2395: --
2396: IF p_security_profile_id IS NOT NULL
2402: FETCH csr_check_user_exists
2403: INTO l_user_id,
2404: l_security_profile_id;
2405: CLOSE csr_check_user_exists;
2406: hr_utility.set_location(l_proc||'p_effective_date : '||p_effective_date,20);
2407: hr_utility.set_location(l_proc||'p_user_id : '||p_user_id,21);
2408: hr_utility.set_location(l_proc||'p_security_profile_id : '||
2409: p_security_profile_id,23);
2410: hr_utility.set_location(l_proc||'l_user_id : '||l_user_id,25);
2403: INTO l_user_id,
2404: l_security_profile_id;
2405: CLOSE csr_check_user_exists;
2406: hr_utility.set_location(l_proc||'p_effective_date : '||p_effective_date,20);
2407: hr_utility.set_location(l_proc||'p_user_id : '||p_user_id,21);
2408: hr_utility.set_location(l_proc||'p_security_profile_id : '||
2409: p_security_profile_id,23);
2410: hr_utility.set_location(l_proc||'l_user_id : '||l_user_id,25);
2411: hr_utility.set_location(l_proc||'l_security_profile_id : '||
2404: l_security_profile_id;
2405: CLOSE csr_check_user_exists;
2406: hr_utility.set_location(l_proc||'p_effective_date : '||p_effective_date,20);
2407: hr_utility.set_location(l_proc||'p_user_id : '||p_user_id,21);
2408: hr_utility.set_location(l_proc||'p_security_profile_id : '||
2409: p_security_profile_id,23);
2410: hr_utility.set_location(l_proc||'l_user_id : '||l_user_id,25);
2411: hr_utility.set_location(l_proc||'l_security_profile_id : '||
2412: l_security_profile_id,27);
2406: hr_utility.set_location(l_proc||'p_effective_date : '||p_effective_date,20);
2407: hr_utility.set_location(l_proc||'p_user_id : '||p_user_id,21);
2408: hr_utility.set_location(l_proc||'p_security_profile_id : '||
2409: p_security_profile_id,23);
2410: hr_utility.set_location(l_proc||'l_user_id : '||l_user_id,25);
2411: hr_utility.set_location(l_proc||'l_security_profile_id : '||
2412: l_security_profile_id,27);
2413: hr_utility.set_location('IF l_user_id or l_security profile id is null '
2414: ,30);
2407: hr_utility.set_location(l_proc||'p_user_id : '||p_user_id,21);
2408: hr_utility.set_location(l_proc||'p_security_profile_id : '||
2409: p_security_profile_id,23);
2410: hr_utility.set_location(l_proc||'l_user_id : '||l_user_id,25);
2411: hr_utility.set_location(l_proc||'l_security_profile_id : '||
2412: l_security_profile_id,27);
2413: hr_utility.set_location('IF l_user_id or l_security profile id is null '
2414: ,30);
2415: hr_utility.set_location('then it has not been found in per_security_users'
2409: p_security_profile_id,23);
2410: hr_utility.set_location(l_proc||'l_user_id : '||l_user_id,25);
2411: hr_utility.set_location(l_proc||'l_security_profile_id : '||
2412: l_security_profile_id,27);
2413: hr_utility.set_location('IF l_user_id or l_security profile id is null '
2414: ,30);
2415: hr_utility.set_location('then it has not been found in per_security_users'
2416: ,30);
2417: --
2411: hr_utility.set_location(l_proc||'l_security_profile_id : '||
2412: l_security_profile_id,27);
2413: hr_utility.set_location('IF l_user_id or l_security profile id is null '
2414: ,30);
2415: hr_utility.set_location('then it has not been found in per_security_users'
2416: ,30);
2417: --
2418: -- if they exist then get security profile for user
2419: --
2421: FETCH csr_security_profile_record
2422: INTO l_sec_prof_rec;
2423: CLOSE csr_security_profile_record;
2424: -- call build lists for users for a single user
2425: hr_utility.set_location(l_proc||'call build_lists_for_users '
2426: ||p_effective_date,40);
2427: build_lists_for_users
2428: (p_sec_prof_rec => l_sec_prof_rec
2429: ,p_effective_date => trunc(p_effective_date)
2430: ,p_debug => l_debug
2431: ,p_user_id => l_user_id
2432: ,p_process_all_users => l_process_all_users);
2433: END IF;
2434: hr_utility.set_location('Leaving : '||l_proc,69);
2435: END build_lists_for_user;
2436: --
2437: -- ----------------------------------------------------------------------------
2438: -- |---------------------< generate_list_control >-----------------------------|
2503: AND org_security_mode IN ('NONE','HIER')
2504: );
2505: --
2506: begin
2507: hr_utility.set_location('Entering : '||l_proc,10);
2508:
2509: l_effective_date := fnd_date.date_to_canonical(p_effective_date);
2510: l_security_profile_id := to_number(p_security_profile_id);
2511: l_business_group_id := to_number(p_business_group_id);
2516: /*
2517: ** Perform restart checking....
2518: */
2519: l_request_data := fnd_conc_global.request_data;
2520: hr_utility.set_location(l_request_data,12);
2521: if l_request_data is not null then
2522:
2523: OPEN csr_get_action_param;
2524: FETCH csr_get_action_param INTO l_logging;
2537: -- revise.
2538: /*
2539: IF p_user_id IS NOT NULL
2540: THEN
2541: hr_utility.trace('Processing for Single User - 1');
2542: --
2543: build_lists_for_user
2544: (p_security_profile_id => p_security_profile_id
2545: ,p_user_id => l_user_id
2559: ** On restart we need to finish off by processing the
2560: ** ex-emps.
2561: */
2562: FOR sec_rec in security_profiles LOOP
2563: hr_utility.set_location(l_proc||' SP id '||
2564: to_char(sec_rec.security_profile_id),13);
2565: add_person_list_changes (sec_rec.security_profile_id,
2566: p_effective_date,
2567: l_update_date);
2592: dev_phase => l_dev_phase,
2593: dev_status => l_dev_status,
2594: message => l_message);
2595:
2596: hr_utility.set_location(l_proc||' Dev phase:'||l_dev_phase,14);
2597: hr_utility.set_location(l_proc||' Dev status:'||l_dev_status,15);
2598:
2599: if l_dev_phase = 'COMPLETE' and l_dev_status = 'ERROR' then
2600: errbuf := l_message;
2593: dev_status => l_dev_status,
2594: message => l_message);
2595:
2596: hr_utility.set_location(l_proc||' Dev phase:'||l_dev_phase,14);
2597: hr_utility.set_location(l_proc||' Dev status:'||l_dev_status,15);
2598:
2599: if l_dev_phase = 'COMPLETE' and l_dev_status = 'ERROR' then
2600: errbuf := l_message;
2601: retcode := 2;
2617: p_security_profile_id is null then
2618: /*
2619: ** No security profile has been specified.
2620: */
2621: hr_utility.set_message(800,'PER_289776_NO_PROF_ID');
2622: hr_utility.raise_error;
2623: elsif p_generation_scope = 'ALL_BUS_GRP' and
2624: p_business_group_id is null then
2625: /*
2618: /*
2619: ** No security profile has been specified.
2620: */
2621: hr_utility.set_message(800,'PER_289776_NO_PROF_ID');
2622: hr_utility.raise_error;
2623: elsif p_generation_scope = 'ALL_BUS_GRP' and
2624: p_business_group_id is null then
2625: /*
2626: ** No business group has been specified.
2624: p_business_group_id is null then
2625: /*
2626: ** No business group has been specified.
2627: */
2628: hr_utility.set_message(800,'PER_289777_NO_BG_ID');
2629: hr_utility.raise_error;
2630: elsif p_generation_scope = 'SINGLE_USER' and
2631: p_user_id is null then
2632: /*
2625: /*
2626: ** No business group has been specified.
2627: */
2628: hr_utility.set_message(800,'PER_289777_NO_BG_ID');
2629: hr_utility.raise_error;
2630: elsif p_generation_scope = 'SINGLE_USER' and
2631: p_user_id is null then
2632: /*
2633: ** No user has been specified. Bug 4338667.
2631: p_user_id is null then
2632: /*
2633: ** No user has been specified. Bug 4338667.
2634: */
2635: hr_utility.set_message(800,'PER_50293_NO_USER_ID');
2636: hr_utility.raise_error;
2637: end if;
2638: -- Bug 4338667 call build_lists_for_user directly if single user option
2639: -- specified.
2632: /*
2633: ** No user has been specified. Bug 4338667.
2634: */
2635: hr_utility.set_message(800,'PER_50293_NO_USER_ID');
2636: hr_utility.raise_error;
2637: end if;
2638: -- Bug 4338667 call build_lists_for_user directly if single user option
2639: -- specified.
2640: --
2639: -- specified.
2640: --
2641: /* IF p_generation_scope = 'SINGLE_USER'
2642: THEN
2643: hr_utility.trace('Processing for Single User');
2644: build_lists_for_user
2645: (p_security_profile_id => p_security_profile_id
2646: ,p_user_id => l_user_id
2647: ,p_effective_date => p_effective_date);
2646: ,p_user_id => l_user_id
2647: ,p_effective_date => p_effective_date);
2648: ELSE */
2649: if p_generation_scope in ('SINGLE_PROF','SINGLE_USER') then
2650: hr_utility.trace('Processing for Single Profile or Single User');
2651: hr_utility.set_location(l_proc||'Single Profile or Single User ',19);
2652: hr_utility.set_location(l_proc||'call generate_lists ',20);
2653: generate_lists(p_effective_date => p_effective_date,
2654: p_generation_scope => p_generation_scope,
2647: ,p_effective_date => p_effective_date);
2648: ELSE */
2649: if p_generation_scope in ('SINGLE_PROF','SINGLE_USER') then
2650: hr_utility.trace('Processing for Single Profile or Single User');
2651: hr_utility.set_location(l_proc||'Single Profile or Single User ',19);
2652: hr_utility.set_location(l_proc||'call generate_lists ',20);
2653: generate_lists(p_effective_date => p_effective_date,
2654: p_generation_scope => p_generation_scope,
2655: p_security_profile_id => l_security_profile_id,
2648: ELSE */
2649: if p_generation_scope in ('SINGLE_PROF','SINGLE_USER') then
2650: hr_utility.trace('Processing for Single Profile or Single User');
2651: hr_utility.set_location(l_proc||'Single Profile or Single User ',19);
2652: hr_utility.set_location(l_proc||'call generate_lists ',20);
2653: generate_lists(p_effective_date => p_effective_date,
2654: p_generation_scope => p_generation_scope,
2655: p_security_profile_id => l_security_profile_id,
2656: p_who_to_process => p_who_to_process,
2662: ** In this case we can process by assignment using PYUGEN if HR is installed.
2663: ** If HR is shared then use the old sequential mechanism.
2664: */
2665: if hr_general.chk_product_installed(800) = 'TRUE' then
2666: hr_utility.set_location(l_proc,30);
2667: /*
2668: ** HR is fully installed so we will use PYUGEN for the person list. First
2669: ** we must generate the Org, Pos and Payroll list information...
2670: */
2673: p_business_group_id => l_business_group_id);
2674: /*
2675: ** ...now submit PYUGEN to do the people bit...
2676: */
2677: hr_utility.set_location(l_proc,40);
2678:
2679: l_request_id := fnd_request.submit_request(application => 'PER',
2680: program => 'MSL_PERSON_LIST',
2681: sub_request => TRUE,
2714: /*
2715: ** HR is shared so use the old mechanism but using the new submission
2716: ** mechanism.
2717: */
2718: hr_utility.set_location(l_proc,50);
2719: generate_lists(p_effective_date => p_effective_date,
2720: p_generation_scope => p_generation_scope,
2721: p_business_group_id => l_business_group_id,
2722: p_who_to_process => p_who_to_process,
2724: p_static_user_processing => p_static_user_processing);
2725: end if;
2726: --end if;
2727: end if;
2728: hr_utility.set_location('Leaving : '||l_proc,100);
2729:
2730: end generate_list_control;
2731: --
2732: -- ----------------------------------------------------------------------------
2781: l_proc varchar2(100) := g_package||'submit_security';
2782:
2783: begin
2784:
2785: -- hr_utility.trace_on('F','LISTGEN');
2786:
2787: hr_utility.set_location('Entering '||l_proc,10);
2788:
2789: --
2783: begin
2784:
2785: -- hr_utility.trace_on('F','LISTGEN');
2786:
2787: hr_utility.set_location('Entering '||l_proc,10);
2788:
2789: --
2790: -- Set variables used for WHO columns
2791: --
2808: -- Bug 3816741. Parameters passed to get the concurrent program status.
2809: errbuf => errbuf,
2810: retcode => retcode);
2811:
2812: hr_utility.set_location('Leaving '||l_proc,20);
2813: end;
2814: --
2815: -- ----------------------------------------------------------------------------
2816: -- |----------------------< generate_lists >----------------------------------|
2889: --
2890: begin
2891: --
2892: -- Get the session date and the current date to avoid multiple selects.
2893: hr_utility.set_location('Entering '||l_proc, 10);
2894: --
2895: l_effective_date := trunc(p_effective_date);
2896: l_update_date := trunc(sysdate);
2897: l_user_id := p_user_id;
2907: -- Bug 4338667: if user name is passed then this must be running for single
2908: -- user in single security profile, so just call build_list_for_user directly.
2909: /* IF p_user_id IS NOT NULL
2910: THEN
2911: hr_utility.trace('Processing for Single User - 2');
2912: build_lists_for_user
2913: (p_security_profile_id => p_security_profile_id
2914: ,p_user_id => l_user_id
2915: ,p_effective_date => p_effective_date);
2923: ELSE
2924: l_process_all_users := TRUE;
2925: END IF;
2926: --
2927: hr_utility.set_location(l_proc, 20);
2928: --
2929: for sec_rec in security_profiles loop
2930: --
2931: -- Delete previous entries for the profile. By using this function
2935: p_business_group_id => sec_rec.business_group_id,
2936: p_security_profile_id => sec_rec.security_profile_id,
2937: p_clear_people_flag => true);
2938: --
2939: hr_utility.set_location(l_proc, 30);
2940: --
2941: -- If there are no restrictions or this profile uses user-based
2942: -- security, do not execute the inserts.
2943: if(sec_rec.view_all_employees_flag = 'N' or
2950: sec_rec.view_all_positions_flag = 'N' or
2951: sec_rec.view_all_payrolls_flag = 'N' or
2952: sec_rec.custom_restriction_flag = 'Y') then
2953: --
2954: hr_utility.set_location(l_proc, 40);
2955: --
2956: if (sec_rec.view_all_payrolls_flag = 'N') then
2957: --
2958: hr_utility.set_location(l_proc, 50);
2954: hr_utility.set_location(l_proc, 40);
2955: --
2956: if (sec_rec.view_all_payrolls_flag = 'N') then
2957: --
2958: hr_utility.set_location(l_proc, 50);
2959: --
2960: -- Build the payroll list.
2961: build_payroll_list(sec_rec.security_profile_id,
2962: sec_rec.business_group_id,
2969: -- Do not insert if using user-based security.
2970: if(sec_rec.view_all_organizations_flag = 'N' and
2971: nvl(sec_rec.top_organization_method, 'S') <> 'U') then
2972: --
2973: hr_utility.set_location(l_proc, 60);
2974: -- Determine business_group mode for the current security profile
2975: if sec_rec.business_group_id is null then
2976: l_business_group_mode := 'GLOBAL';
2977: else
2993: if(sec_rec.view_all_positions_flag = 'N' and
2994: nvl(sec_rec.top_organization_method, 'S') <> 'U' and
2995: nvl(sec_rec.top_position_method, 'S') <> 'U') then
2996: --
2997: hr_utility.set_location(l_proc, 70);
2998: -- Build position list
2999: build_position_list(sec_rec.security_profile_id,
3000: sec_rec.view_all_organizations_flag,
3001: sec_rec.include_top_position_flag,
3066: l_found := true;
3067: --
3068: end loop;
3069: --
3070: hr_utility.set_location(l_proc, 130);
3071: --
3072: if not l_found then
3073: --
3074: hr_utility.set_message(800, 'HR_PROFILE_NOT_FOUND');
3070: hr_utility.set_location(l_proc, 130);
3071: --
3072: if not l_found then
3073: --
3074: hr_utility.set_message(800, 'HR_PROFILE_NOT_FOUND');
3075: hr_utility.set_message_token ('PROFILE_NAME', p_security_profile_name);
3076: hr_utility.raise_error;
3077: --
3078: end if;
3071: --
3072: if not l_found then
3073: --
3074: hr_utility.set_message(800, 'HR_PROFILE_NOT_FOUND');
3075: hr_utility.set_message_token ('PROFILE_NAME', p_security_profile_name);
3076: hr_utility.raise_error;
3077: --
3078: end if;
3079: --
3072: if not l_found then
3073: --
3074: hr_utility.set_message(800, 'HR_PROFILE_NOT_FOUND');
3075: hr_utility.set_message_token ('PROFILE_NAME', p_security_profile_name);
3076: hr_utility.raise_error;
3077: --
3078: end if;
3079: --
3080: hr_utility.set_location('Leaving '||l_proc, 140);
3076: hr_utility.raise_error;
3077: --
3078: end if;
3079: --
3080: hr_utility.set_location('Leaving '||l_proc, 140);
3081: --
3082: end generate_lists;
3083: --
3084: -- ----------------------------------------------------------------------------
3090:
3091: l_proc varchar2(100) := g_package||'range_curosr';
3092: l_generation_scope varchar2(20);
3093: begin
3094: --hr_utility.trace_on('F','LISTGEN');
3095: hr_utility.set_location('Entering : '||l_proc,10);
3096: select pay_core_utils.get_parameter('GENERATION_SCOPE',
3097: pa1.legislative_parameters)
3098: into l_generation_scope
3091: l_proc varchar2(100) := g_package||'range_curosr';
3092: l_generation_scope varchar2(20);
3093: begin
3094: --hr_utility.trace_on('F','LISTGEN');
3095: hr_utility.set_location('Entering : '||l_proc,10);
3096: select pay_core_utils.get_parameter('GENERATION_SCOPE',
3097: pa1.legislative_parameters)
3098: into l_generation_scope
3099: from pay_payroll_actions pa1
3105: */
3106: if l_generation_scope = 'ALL_PROFILES'
3107: or l_generation_scope = 'ALL_GLOBAL'
3108: then
3109: hr_utility.set_location(l_proc,20);
3110: sqlstr := 'select distinct per.person_id
3111: from per_all_people_f per
3112: ,pay_payroll_actions ppa
3113: where ppa.payroll_action_id = :payroll_action_id
3117: else
3118: /*
3119: **scope is ALL_BUS_GRP
3120: */
3121: hr_utility.set_location(l_proc,30);
3122: sqlstr := 'select distinct per.person_id
3123: from per_all_people_f per
3124: ,pay_payroll_actions ppa
3125: where ppa.payroll_action_id = :payroll_action_id
3129: order by per.person_id';
3130: -- and ppa.effective_date between per.effective_start_date
3131: -- and per.effective_end_date
3132: end if;
3133: hr_utility.set_location('Leaving : '||l_proc,40);
3134: end range_cursor;
3135: --
3136: -- ----------------------------------------------------------------------------
3137: -- |--------------------------< action_creation >-----------------------------|
3444: l_generation_scope varchar2(20);
3445: l_who_to_process varchar2(30);
3446:
3447: begin
3448: --hr_utility.trace_on('F','PERSLM');
3449:
3450:
3451: select pay_core_utils.get_parameter('BUSINESS_GROUP_ID',
3452: ppa.legislative_parameters),
3543: and pspv.view_all_candidates_flag <> p_profile_option;
3544: --
3545: begin
3546: --
3547: hr_utility.set_location('Entering '||l_proc, 10);
3548: --
3549: -- Checking that whether iRecruitment is installed.
3550: if nvl(fnd_profile.value('IRC_INSTALLED_FLAG'), 'N') = 'N' then
3551: raise e_irec_not_installed;
3550: if nvl(fnd_profile.value('IRC_INSTALLED_FLAG'), 'N') = 'N' then
3551: raise e_irec_not_installed;
3552: end if;
3553: --
3554: hr_utility.set_location(l_proc, 20);
3555: -- Assume that, iRecruitment is installed, hence continuing the process.
3556: for r_sec in csr_security_prof loop
3557: --
3558: begin
3556: for r_sec in csr_security_prof loop
3557: --
3558: begin
3559: --
3560: hr_utility.set_location(l_proc, 30);
3561: -- Get the lock of the respective security profile record.
3562: per_security_profiles_pkg.lock_row(
3563: x_rowid => r_sec.row_id,
3564: x_security_profile_id => r_sec.security_profile_id,
3595: x_top_organization_method => rtrim(r_sec.top_organization_method),
3596: x_top_position_method => rtrim(r_sec.top_position_method)
3597: );
3598: --
3599: hr_utility.set_location(l_proc, 40);
3600: -- Sucessfully locked the row, now updating the
3601: -- view_all_candidates_flag with the given value through parameter
3602: -- p_profile_option
3603: per_security_profiles_pkg.update_row(
3640: x_program_id => l_prog_id,
3641: x_program_update_date => l_upd_date
3642: );
3643: --
3644: hr_utility.set_location('Sec Prof Id:'||r_sec.security_profile_id, 50);
3645: hr_utility.set_location('Sec Name:'||r_sec.security_profile_name, 55);
3646: hr_utility.set_location('BG Id:'||r_sec.business_group_id, 60);
3647: --
3648: exception
3641: x_program_update_date => l_upd_date
3642: );
3643: --
3644: hr_utility.set_location('Sec Prof Id:'||r_sec.security_profile_id, 50);
3645: hr_utility.set_location('Sec Name:'||r_sec.security_profile_name, 55);
3646: hr_utility.set_location('BG Id:'||r_sec.business_group_id, 60);
3647: --
3648: exception
3649: --
3642: );
3643: --
3644: hr_utility.set_location('Sec Prof Id:'||r_sec.security_profile_id, 50);
3645: hr_utility.set_location('Sec Name:'||r_sec.security_profile_name, 55);
3646: hr_utility.set_location('BG Id:'||r_sec.business_group_id, 60);
3647: --
3648: exception
3649: --
3650: -- Could not obtain the lock.
3659: := r_sec.security_profile_name;
3660: l_sec_cnt := l_sec_cnt + 1;
3661: --
3662: -- Keeping the information traced.
3663: hr_utility.trace('Cannot process security profile :');
3664: hr_utility.trace('Sec Prof Id: '||r_sec.security_profile_id);
3665: hr_utility.trace('Sec Name: '||r_sec.security_profile_name);
3666: hr_utility.trace('BG Id: '||r_sec.business_group_id);
3667: hr_utility.trace('BG Name: '||r_sec.business_group_name);
3660: l_sec_cnt := l_sec_cnt + 1;
3661: --
3662: -- Keeping the information traced.
3663: hr_utility.trace('Cannot process security profile :');
3664: hr_utility.trace('Sec Prof Id: '||r_sec.security_profile_id);
3665: hr_utility.trace('Sec Name: '||r_sec.security_profile_name);
3666: hr_utility.trace('BG Id: '||r_sec.business_group_id);
3667: hr_utility.trace('BG Name: '||r_sec.business_group_name);
3668: --
3661: --
3662: -- Keeping the information traced.
3663: hr_utility.trace('Cannot process security profile :');
3664: hr_utility.trace('Sec Prof Id: '||r_sec.security_profile_id);
3665: hr_utility.trace('Sec Name: '||r_sec.security_profile_name);
3666: hr_utility.trace('BG Id: '||r_sec.business_group_id);
3667: hr_utility.trace('BG Name: '||r_sec.business_group_name);
3668: --
3669: --
3662: -- Keeping the information traced.
3663: hr_utility.trace('Cannot process security profile :');
3664: hr_utility.trace('Sec Prof Id: '||r_sec.security_profile_id);
3665: hr_utility.trace('Sec Name: '||r_sec.security_profile_name);
3666: hr_utility.trace('BG Id: '||r_sec.business_group_id);
3667: hr_utility.trace('BG Name: '||r_sec.business_group_name);
3668: --
3669: --
3670: end;
3663: hr_utility.trace('Cannot process security profile :');
3664: hr_utility.trace('Sec Prof Id: '||r_sec.security_profile_id);
3665: hr_utility.trace('Sec Name: '||r_sec.security_profile_name);
3666: hr_utility.trace('BG Id: '||r_sec.business_group_id);
3667: hr_utility.trace('BG Name: '||r_sec.business_group_name);
3668: --
3669: --
3670: end;
3671: --
3670: end;
3671: --
3672: end loop;
3673: --
3674: hr_utility.set_location(l_proc, 70);
3675: -- Needs to format the report of failed records (if any) after the
3676: -- warning message.
3677: if sec_not_processed.count > 0 then
3678: --
3675: -- Needs to format the report of failed records (if any) after the
3676: -- warning message.
3677: if sec_not_processed.count > 0 then
3678: --
3679: hr_utility.set_location(l_proc, 80);
3680: -- Setting the message to get the translated message text
3681: fnd_message.set_name('PER', 'PER_449705_SEC_UPDATE_FAILED');
3682: --
3683: errbuf := null;
3695: end loop;
3696: --
3697: end if;
3698: --
3699: hr_utility.set_location('Leaving '||l_proc, 99);
3700: --
3701: exception
3702: --
3703: when e_irec_not_installed then
3708: errbuf := null;
3709: errbuf := nvl(fnd_message.get, 'PER_449706_IRC_NOT_INSTALLED');
3710: retcode := 1; -- Concurrent process finished with a warning.
3711: --
3712: hr_utility.set_location('Leaving '||l_proc, 99);
3713: --
3714: end submit_cand_sec_opt;
3715: --
3716: END pay_pyucslis_pkg;