Untitled
unknown
sql
2 years ago
43 kB
21
Indexable
WITH
PARAMETERS AS (
SELECT
periods.person_id person_id,
periods.actual_termination_date effective_date,
inputs.*
FROM
(
SELECT
:p_businessUnitID business_unit_id,
:p_unitName unit_name,
:p_divisionName division_name,
:p_organizationName organization_name,
:p_costCenter cost_center,
:p_region region,
:p_personNumber person_number,
:p_supervisorNumber supervisor_number,
:p_bandGrad band_grade,
:p_hodNumber hod_number,
:p_chiefNumber chief_number,
:p_startDate start_date,
:p_endDate end_date
FROM
dual) inputs,
per_periods_of_service periods,
per_all_assignments_f assignments
WHERE 1 = 1
AND periods.actual_termination_date IS NOT NULL
AND (periods.actual_termination_date + 1) BETWEEN assignments.effective_start_date AND assignments.effective_end_date
AND assignments.assignment_type IN ('E', 'P')
AND assignments.primary_flag = 'Y'
AND assignments.period_of_service_id = periods.period_of_service_id),
per_org_tmp AS (
SELECT
person_id,
organization_id department,
regexp_substr(trim('/' FROM org_data), '[^//]+', 1, 3) division,
nvl(regexp_substr(trim('/' FROM org_data), '[^//]+', 1, 2), regexp_substr(trim('/' FROM org_data), '[^//]+', 1, 1)) unit
FROM (
SELECT
p.person_id,
assignments.organization_id,
(
SELECT '/' || listagg(organization_id, '/') within GROUP (ORDER BY lev DESC) PATH
FROM (
SELECT
organization_id,
LEVEL lev,
depth
FROM (
SELECT
organizations.organization_id,
org_nodes.parent_organization_id,
org_nodes.depth
FROM
per_org_tree_node_v org_nodes,
hr_all_organization_units_f_vl organizations
WHERE 1 = 1
AND organizations.organization_id = org_nodes.organization_id(+)
AND p.effective_date BETWEEN organizations.effective_start_date AND organizations.effective_end_date) org_nodes
WHERE 1 = 1
AND (depth != 0 OR depth IS NULL)
START WITH organization_id = assignments.organization_id
CONNECT BY organization_id = PRIOR parent_organization_id)) org_data
FROM
per_all_assignments_f assignments,
parameters p
WHERE 1 = 1
AND p.effective_date BETWEEN assignments.effective_start_date AND assignments.effective_end_date
AND assignments.primary_flag = 'Y'
AND assignments.effective_latest_change = 'Y'
AND assignments.person_id = p.person_id)),
per_chiefs_tmp AS (
select
p.person_id person_id,
(select
supervision.supervisor_id
from (
select
supervision.person_id,
supervision.manager_id supervisor_id,
sup_grades.name supervisor_grade,
inner_p.person_id group_id
from
per_assignment_supervisors_f supervision,
per_all_assignments_f sup_assignments,
per_grades sup_grades,
parameters inner_p
where 1=1
and inner_p.effective_date between supervision.effective_start_date and supervision.effective_end_date
and supervision.manager_type = 'LINE_MANAGER'
and supervision.primary_flag = 'Y'
and inner_p.effective_date between sup_assignments.effective_start_date(+) and sup_assignments.effective_end_date(+)
and sup_assignments.assignment_id(+) = supervision.manager_assignment_id
and sup_grades.grade_id(+) = sup_assignments.grade_id) supervision
where 1=1
and supervision.supervisor_grade = '43'
START WITH (supervision.person_id = p.person_id and supervision.group_id = p.person_id)
CONNECT BY (supervision.PERSON_ID = PRIOR supervision.supervisor_id and supervision.group_id = PRIOR supervision.group_id)) chief_id
from
parameters p),
pay_payrolls_tmp AS (
SELECT
p.person_id,
py.payroll_name
FROM
pay_payroll_actions ppa,
PAY_PAYROLL_REL_ACTIONS PRA,
pay_assigned_payrolls_dn apd,
PER_ALL_ASSIGNMENTS_M PAAM,
pay_time_periods ptp,
PAY_REL_GROUPS_DN PRG,
PER_ALL_PEOPLE_F PAPF,
pay_all_payrolls_f py,
pay_consolidation_sets pcs,
pay_payroll_terms pt,
parameters p
WHERE
1 = 1
AND PRA.PAYROLL_ACTION_ID = PPA.PAYROLL_ACTION_ID
AND ppa.action_type IN ('R')
AND PAAM.ASSIGNMENT_ID = PRG.ASSIGNMENT_ID
AND PCS.CONSOLIDATION_SET_ID = NVL(PPA.CONSOLIDATION_SET_ID, PY.CONSOLIDATION_SET_ID)
AND PTP.PERIOD_CATEGORY = 'E'
AND PRG.PAYROLL_RELATIONSHIP_ID = PRA.PAYROLL_RELATIONSHIP_ID
AND pt.payroll_term_id = apd.payroll_term_id
AND py.payroll_id = apd.payroll_id
AND PRA.SOURCE_ACTION_ID IS NULL
AND pt.hr_term_id = PRG.term_id
AND PAAM.ASSIGNMENT_TYPE = 'E'
AND PAAM.PRIMARY_FLAG = 'Y'
AND PAPF.PERSON_ID = PAAM.PERSON_ID
AND TRUNC(p.effective_date) BETWEEN PAPF.EFFECTIVE_START_DATE
AND PAPF.EFFECTIVE_END_DATE
AND TRUNC(p.effective_date) BETWEEN PY.EFFECTIVE_START_DATE
AND PY.EFFECTIVE_END_DATE
AND TRUNC(p.effective_date) BETWEEN PAAM.EFFECTIVE_START_DATE
AND PAAM.EFFECTIVE_END_DATE
AND ptp.payroll_id = py.payroll_id
AND PPA.EARN_TIME_PERIOD_ID = PTP.TIME_PERIOD_ID
AND PCS.CONSOLIDATION_SET_NAME IN ('Mobily Monthly Payroll','MFS Monthly Payroll')
and papf.person_id(+) = p.person_id),
parameters_tr AS (
SELECT txnheader.subject_id person_id,
sysdate effective_date,
txnheader.transaction_id,
inputs.*
FROM hrc_txn_header txnheader,
hrc_txn_data txndata,
fa_fusion_soainfra.wftask wf,
(
SELECT
:p_businessUnitID business_unit_id,
:p_unitName unit_name,
:p_divisionName division_name,
:p_organizationName organization_name,
:p_costCenter cost_center,
:p_region region,
:p_personNumber person_number,
:p_supervisorNumber supervisor_number,
:p_bandGrad band_grade,
:p_hodNumber hod_number,
:p_chiefNumber chief_number,
:p_startDate start_date,
:p_endDate end_date
FROM
dual
) inputs
WHERE 1 = 1
AND txndata.transaction_id = txnheader.transaction_id
AND txnheader.object = 'PER_ALL_ASSIGNMENTS_M'
AND txnheader.module_identifier = 'Resignation'
AND to_char(txndata.transaction_id) = wf.correlationid
AND nvl(decode(txndata.status,'PENDING',wf.taskid,txndata.task_id),1) = nvl(wf.taskid,1)
),
per_org_tr_tmp AS (
SELECT
person_id,
organization_id department,
regexp_substr(trim('/' FROM org_data), '[^//]+', 1, 3) division,
nvl(regexp_substr(trim('/' FROM org_data), '[^//]+', 1, 2), regexp_substr(trim('/' FROM org_data), '[^//]+', 1, 1)) unit
FROM (
SELECT
p.person_id,
assignments.organization_id,
(
SELECT '/' || listagg(organization_id, '/') within GROUP (ORDER BY lev DESC) PATH
FROM (
SELECT
organization_id,
LEVEL lev,
depth
FROM (
SELECT
organizations.organization_id,
org_nodes.parent_organization_id,
org_nodes.depth
FROM
per_org_tree_node_v org_nodes,
hr_all_organization_units_f_vl organizations
WHERE 1 = 1
AND organizations.organization_id = org_nodes.organization_id(+)
AND p.effective_date BETWEEN organizations.effective_start_date AND organizations.effective_end_date) org_nodes
WHERE 1 = 1
AND (depth != 0 OR depth IS NULL)
START WITH organization_id = assignments.organization_id
CONNECT BY organization_id = PRIOR parent_organization_id)) org_data
FROM
per_all_assignments_f assignments,
parameters_tr p
WHERE 1 = 1
AND p.effective_date BETWEEN assignments.effective_start_date AND assignments.effective_end_date
AND assignments.primary_flag = 'Y'
AND assignments.effective_latest_change = 'Y'
AND assignments.person_id = p.person_id)),
per_supervisor_nodes_v_tr_tmp AS (
SELECT assignments.person_id person_id,
mgr_assignments.person_id manager_id,
mgr_grades.grade_code manager_grade
FROM per_assignment_supervisors_f supervisors,
per_all_assignments_f assignments,
per_all_assignments_f mgr_assignments,
per_grades_f mgr_grades
WHERE 1 = 1
AND sysdate BETWEEN supervisors.effective_start_date AND supervisors.effective_end_date
AND supervisors.primary_flag = 'Y'
AND supervisors.manager_type = 'LINE_MANAGER'
AND sysdate BETWEEN assignments.effective_start_date AND assignments.effective_end_date
AND assignments.primary_flag = 'Y'
AND assignments.assignment_id = supervisors.assignment_id
AND sysdate BETWEEN mgr_assignments.effective_start_date AND mgr_assignments.effective_end_date
AND mgr_assignments.primary_flag = 'Y'
AND mgr_assignments.assignment_status_type != 'INACTIVE'
AND mgr_assignments.assignment_id = supervisors.manager_assignment_id
AND sysdate BETWEEN mgr_grades.effective_start_date AND mgr_grades.effective_end_date
AND mgr_grades.active_status = 'A'
AND mgr_grades.grade_id(+) = mgr_assignments.grade_id
),
per_chiefs_tr_tmp AS (
SELECT person_id,
connect_by_root manager_id chief_id
FROM per_supervisor_nodes_v_tr_tmp
WHERE 1 = 1 START WITH (manager_grade = '43')
CONNECT BY
PRIOR person_id = manager_id
),
pay_payrolls_tr_tmp AS (
SELECT
p.person_id,
py.payroll_name
FROM
pay_payroll_actions ppa,
PAY_PAYROLL_REL_ACTIONS PRA,
pay_assigned_payrolls_dn apd,
PER_ALL_ASSIGNMENTS_M PAAM,
pay_time_periods ptp,
PAY_REL_GROUPS_DN PRG,
PER_ALL_PEOPLE_F PAPF,
pay_all_payrolls_f py,
pay_consolidation_sets pcs,
pay_payroll_terms pt,
parameters_tr p
WHERE
1 = 1
AND PRA.PAYROLL_ACTION_ID = PPA.PAYROLL_ACTION_ID
AND ppa.action_type IN ('R')
AND PAAM.ASSIGNMENT_ID = PRG.ASSIGNMENT_ID
AND PCS.CONSOLIDATION_SET_ID = NVL(PPA.CONSOLIDATION_SET_ID, PY.CONSOLIDATION_SET_ID)
AND PTP.PERIOD_CATEGORY = 'E'
AND PRG.PAYROLL_RELATIONSHIP_ID = PRA.PAYROLL_RELATIONSHIP_ID
AND pt.payroll_term_id = apd.payroll_term_id
AND py.payroll_id = apd.payroll_id
AND PRA.SOURCE_ACTION_ID IS NULL
AND pt.hr_term_id = PRG.term_id
AND PAAM.ASSIGNMENT_TYPE = 'E'
AND PAAM.PRIMARY_FLAG = 'Y'
AND PAPF.PERSON_ID = PAAM.PERSON_ID
AND TRUNC(p.effective_date) BETWEEN PAPF.EFFECTIVE_START_DATE
AND PAPF.EFFECTIVE_END_DATE
AND TRUNC(p.effective_date) BETWEEN PY.EFFECTIVE_START_DATE
AND PY.EFFECTIVE_END_DATE
AND TRUNC(p.effective_date) BETWEEN PAAM.EFFECTIVE_START_DATE
AND PAAM.EFFECTIVE_END_DATE
AND ptp.payroll_id = py.payroll_id
AND PPA.EARN_TIME_PERIOD_ID = PTP.TIME_PERIOD_ID
AND PCS.CONSOLIDATION_SET_NAME IN ('Mobily Monthly Payroll','MFS Monthly Payroll')
and papf.person_id(+) = p.person_id),
transactions as (
SELECT txndata.transaction_id,
decode(wf.state, 'ASSIGNED', wf.assigneddate, wf.updateddate) last_process_date,
txndata.submitted_date request_submitted_date,
null wave_of_requested,
null wave_of_days,
null wave_of_approved_days,
initcap(nvl(wf.state,wf.outcome)) request_status,
wf.updatedbydisplayname last_approved_by,
wf.updateddate last_approved_date,
decode(wf.state, 'ASSIGNED', wf.assigneesdisplayname) pending_with,
decode(wf.state, 'ASSIGNED', wf.assigneddate) pending_from_date
FROM hrc_txn_header txnheader,
hrc_txn_data txndata,
per_all_people_f papf,
per_person_names_f ppnf,
fa_fusion_soainfra.wftask wf
WHERE 1 = 1
AND txndata.transaction_id = txnheader.transaction_id
AND txnheader.object = 'PER_ALL_ASSIGNMENTS_M'
AND txnheader.module_identifier = 'Resignation'
AND txnheader.subject_id = papf.person_id(+)
AND trunc(sysdate) BETWEEN papf.effective_start_date(+) AND papf.effective_end_date(+)
AND papf.person_id = ppnf.person_id(+)
AND ppnf.name_type(+) = 'GLOBAL'
AND trunc(sysdate) BETWEEN ppnf.effective_start_date(+) AND ppnf.effective_end_date(+)
AND to_char(txndata.transaction_id) = wf.correlationid
AND nvl(decode(txndata.status,'PENDING',wf.taskid,txndata.task_id),1) = nvl(wf.taskid,1)
)
SELECT
people.person_number pf_number,
names_en.display_name
|| ' (' || people.person_number || ')' employee_name_number,
people_info.date_of_birth date_of_birth,
business_units.name business_unit,
units.name unit_name,
divisions.name division_name,
departments.name department_name,
periods.date_start original_hire_date,
job_meanings.meaning job_level,
job_families.job_family_name grade_band,
positions.position_code position_code,
pos_names_en.name position_name,
pos_names_ar.name position_name_arabic,
positions.effective_start_date position_effective_date,
rtrim(position_location.attribute2,', SA') position_region,
initcap(positions.position_type) position_type,
decode(positions.active_status,
'A', 'Active',
positions.active_status) position_status,
position_organization.name position_organization,
alloc_accounts.segment3 cost_center,
reason_meaning.meaning leaving_reason,
contract_types.meaning contract_type,
initcap(contracts.status) contract_status,
contracts.duration || ' '
|| decode(contracts.duration_units,
'Y', 'Years',
'D', 'Days',
contracts.duration_units) contract_duration,
contracts.contract_number contract_number,
contracts.contract_end_date contract_end_date,
nationalities.meaning nationality,
decode(nationalities.meaning,'Saudi','Saudi','Non Saudi') nationality_category,
ids.national_identifier_number id_or_iqama,
grades.name grade,
email_addresses.email_address email_address,
education_levels.meaning education_level,
NVL2(supervisors.person_id,
supervisor_names.display_name
|| ' ('
|| supervisors.person_number
|| ')',
null) supervisor_name_number,
sup_email_addresses.email_address supervisor_email,
phones.phone_number phone_number,
initcap(assignments.assignment_status_type) employee_status,
parent_positions.name parent_position,
payrolls.payroll_name payroll,
NVL2(hods.person_id,
hod_names.display_name
|| ' ('
|| hods.person_number
|| ')',
null) hod_name_number,
hod_email_addresses.email_address hod_email,
NVL2(chiefs.person_id,
chief_names.display_name
|| ' ('
|| chiefs.person_number
|| ')',
null) chief_name_number,
chief_email_addresses.email_address chief_email,
periods.actual_termination_date actual_termination_date,
floor((periods.actual_termination_date - periods.date_start)
/ 365.24) tenure_years,
floor(mod((periods.actual_termination_date - periods.date_start)
/ 30.437, 12)) tenure_months,
floor(mod(mod((periods.actual_termination_date - periods.date_start),
365.24), 30.437)) tenure_days,
periods.notified_termination_date notified_date,
NULL last_process_date,
NULL request_submitted_date,
periods.attribute1 wave_of_requested,
periods.attribute_number1 wave_of_days,
NULL wave_of_approved_days,
'Approve' request_status,
NULL last_approved_by,
NULL last_approved_date,
NULL pending_with,
NULL pending_from_date
FROM
per_all_people_f people,
per_periods_of_service periods,
per_person_names_f names_en,
per_persons people_info,
per_all_assignments_f assignments,
hr_all_organization_units_f_vl business_units,
per_org_tmp organizations,
hr_all_organization_units_f_vl departments,
hr_all_organization_units_f_vl divisions,
hr_all_organization_units_f_vl units,
per_jobs_f jobs,
fnd_lookup_values job_meanings,
per_job_family_f_tl job_families,
hr_all_positions_f positions,
hr_all_positions_f_tl pos_names_en,
hr_all_positions_f_tl pos_names_ar,
hr_locations_all position_location,
hr_all_organization_units_f_vl position_organization,
pay_payrolls_tmp payrolls,
-- COST CENTER
pay_cost_allocations_f cost_allocs,
pay_cost_alloc_accounts alloc_accounts,
-- leaving_reason
per_action_occurrences action_occurrences,
per_action_reasons_b action_reasons,
fnd_lookup_values_tl reason_meaning,
-- contracts
per_contracts_f contracts,
fnd_lookup_values_tl contract_types,
-- nationalities
per_citizenships citizenships,
fnd_lookup_values_tl nationalities,
-- id
per_national_identifiers ids,
-- supervisors
per_assignment_supervisors_f supervision,
PER_ALL_ASSIGNMENTS_F sup_ASSIGNMENTS,
per_all_people_f supervisors,
per_person_names_f supervisor_names,
per_grades grades,
per_email_addresses email_addresses,
per_people_legislative_f legals,
fnd_lookup_values_tl education_levels,
per_email_addresses sup_email_addresses,
per_phones phones,
-- parent_position
per_pos_tree_node_v positions_tree,
hr_all_positions_f_tl parent_positions,
-- hods
per_asg_responsibilities hod_resps,
per_all_people_f hods,
per_person_names_f hod_names,
per_email_addresses hod_email_addresses,
per_chiefs_tmp people_chiefs,
per_all_people_f chiefs,
per_person_names_f chief_names,
per_email_addresses chief_email_addresses,
PARAMETERS p
WHERE 1 = 1
-- people
AND p.effective_date BETWEEN people.effective_start_date AND people.effective_end_date
-- periods
AND periods.person_id = people.person_id
AND periods.actual_termination_date IS NOT NULL
-- names_en
AND p.effective_date BETWEEN names_en.effective_start_date(+) AND names_en.effective_end_date(+)
AND names_en.name_type(+) = 'GLOBAL'
AND names_en.person_id(+) = people.person_id
-- people_info
AND people_info.person_id(+) = people.person_id
-- assignments
AND (p.effective_date + 1) BETWEEN assignments.effective_start_date AND assignments.effective_end_date
AND assignments.assignment_type IN ('E', 'P')
AND assignments.primary_flag = 'Y'
AND assignments.period_of_service_id = periods.period_of_service_id
-- business_units
AND p.effective_date BETWEEN business_units.effective_start_date(+) AND business_units.effective_end_date(+)
AND business_units.organization_id(+) = assignments.business_unit_id
-- organizations
AND organizations.person_id(+) = people.person_id
AND p.effective_date BETWEEN departments.effective_start_date(+) AND departments.effective_end_date(+)
AND departments.organization_id(+) = organizations.department
AND p.effective_date BETWEEN divisions.effective_start_date(+) AND divisions.effective_end_date(+)
AND divisions.organization_id(+) = organizations.division
AND p.effective_date BETWEEN units.effective_start_date(+) AND units.effective_end_date(+)
AND units.organization_id(+) = organizations.unit
-- jobs
AND p.effective_date BETWEEN jobs.effective_start_date(+) AND jobs.effective_end_date(+)
AND jobs.job_id(+) = assignments.job_id
-- job_meanings
and job_meanings.language(+) = 'US'
and job_meanings.lookup_type(+) = 'MANAGER_LEVEL'
and job_meanings.lookup_code(+) = jobs.manager_level
-- job_families
AND p.effective_date BETWEEN job_families.effective_start_date(+) AND job_families.effective_end_date(+)
AND job_families.language(+) = 'US'
AND job_families.job_family_id(+) = jobs.job_family_id
-- positions
AND p.effective_date BETWEEN positions.effective_start_date(+) AND positions.effective_end_date(+)
AND positions.position_id(+) = assignments.position_id
---- pos_names_en
AND p.effective_date BETWEEN pos_names_en.effective_start_date(+) AND pos_names_en.effective_end_date(+)
AND pos_names_en.language(+) = 'US'
AND pos_names_en.position_id(+) = positions.position_id
---- pos_names_ar
AND p.effective_date BETWEEN pos_names_ar.effective_start_date(+) AND pos_names_ar.effective_end_date(+)
AND pos_names_ar.language(+) = 'AR'
AND pos_names_ar.position_id(+) = positions.position_id
---- position_location
AND p.effective_date BETWEEN position_location.effective_start_date(+) AND position_location.effective_end_date(+)
and position_location.location_id(+) = positions.location_id
---- position_organization
and p.effective_date BETWEEN position_organization.effective_start_date(+) AND position_organization.effective_end_date(+)
and position_organization.organization_id(+) = positions.organization_id
-- payrolls
and payrolls.person_id(+) = people.person_id
-- COST_CENTER
---- COST_ALLOCS
AND p.effective_date BETWEEN cost_allocs.effective_start_date(+) AND cost_allocs.effective_end_date(+)
AND cost_allocs.source_type(+) = 'ORG'
AND cost_allocs.source_id(+) = assignments.organization_id
---- ALLOC_ACCOUNTS
AND alloc_accounts.cost_allocation_record_id(+) = cost_allocs.cost_allocation_record_id
-- leaving_reason
and action_occurrences.action_occurrence_id(+) = periods.action_occurrence_id
and action_reasons.action_reason_id(+) = action_occurrences.action_reason_id
and reason_meaning.language(+) = 'US'
and reason_meaning.lookup_type(+) = 'HRX_FR_REASON_MAPPING'
and reason_meaning.lookup_code(+) = action_reasons.action_reason_code
-- contracts
and p.effective_date BETWEEN contracts.effective_start_date(+) AND contracts.effective_end_date(+)
and contracts.period_of_service_id(+) = periods.period_of_service_id
---- contract_types
and contract_types.language(+) = 'US'
and contract_types.lookup_type(+) = 'CONTRACT_TYPE'
and contract_types.lookup_code(+) = contracts.type
-- nationalities
and p.effective_date between citizenships.date_from(+) and citizenships.date_to(+)
and citizenships.person_id(+) = people.person_id
and nationalities.language(+) = 'US'
and nationalities.lookup_type(+) = 'NATIONALITY'
and nationalities.lookup_code(+) = citizenships.legislation_code
-- ids
and ids.national_identifier_id(+) = people.primary_nid_id
-- supervisors
AND p.effective_date BETWEEN supervision.effective_start_date(+) AND supervision.effective_end_date(+)
AND supervision.PRIMARY_FLAG(+) = 'Y'
AND supervision.manager_type(+) = 'LINE_MANAGER'
and supervision.assignment_id(+) = assignments.assignment_id
---- sup_ASSIGNMENTS
AND p.effective_date BETWEEN sup_ASSIGNMENTS.effective_start_date(+) AND sup_ASSIGNMENTS.effective_end_date(+)
AND sup_ASSIGNMENTS.primary_flag(+) = 'Y'
AND sup_ASSIGNMENTS.assignment_id(+) = supervision.MANAGER_ASSIGNMENT_ID
---- SUPERVISORS
AND p.effective_date BETWEEN supervisors.effective_start_date(+) AND supervisors.effective_end_date(+)
AND supervisors.person_id(+) = sup_ASSIGNMENTS.person_id
---- SUPERVISOR_NAMES
AND p.effective_date BETWEEN supervisor_names.effective_start_date(+) AND supervisor_names.effective_end_date(+)
AND supervisor_names.name_type(+) = 'GLOBAL'
AND supervisor_names.person_id(+) = supervisors.person_id
-- grades
and p.effective_date between grades.effective_start_date(+) and grades.effective_end_date(+)
and grades.grade_id(+) = assignments.grade_id
-- EMAIL_ADDRESSES
AND email_addresses.email_address_id(+) = people.primary_email_id
-- LEGALS
AND p.effective_date BETWEEN legals.effective_start_date(+) AND legals.effective_end_date(+)
AND legals.person_id(+) = people.person_id
-- education_levels
and education_levels.language(+) = 'US'
and education_levels.lookup_type(+) = 'PER_HIGHEST_EDUCATION_LEVEL'
and education_levels.lookup_code(+) = legals.highest_education_level
-- sup_EMAIL_ADDRESSES
AND sup_EMAIL_ADDRESSES.email_address_id(+) = supervisors.primary_email_id
-- phones
and p.effective_date between phones.date_from(+) and phones.date_to(+)
and phones.phone_id(+) = people.primary_phone_id
-- parent_position
AND positions_tree.tree_code(+) = 'MEE_POSITION_TREE'
AND positions_tree.position_id(+) = positions.position_id
and p.effective_date between parent_positions.effective_start_date(+) and parent_positions.effective_end_date(+)
and parent_positions.language(+) = 'US'
and parent_positions.position_id(+) = positions_tree.parent_position_id
-- hod
---- hod_resps
and p.effective_date between nvl(hod_resps.start_date(+), p.effective_date) and nvl(hod_resps.end_date(+), p.effective_date)
and hod_resps.responsibility_type(+) = 'HOD'
and hod_resps.top_department_id(+) = organizations.division
---- hods
AND p.effective_date BETWEEN hods.effective_start_date(+) AND hods.effective_end_date(+)
and hods.person_id(+) = hod_resps.person_id
---- hod_names
AND p.effective_date BETWEEN hod_names.effective_start_date(+) AND hod_names.effective_end_date(+)
AND hod_names.name_type(+) = 'GLOBAL'
AND hod_names.person_id(+) = hods.person_id
-- hod_EMAIL_ADDRESSES
AND hod_EMAIL_ADDRESSES.email_address_id(+) = hods.primary_email_id
-- chief
---- people_chiefs
and people_chiefs.person_id(+) = people.person_id
---- chiefs
AND p.effective_date BETWEEN chiefs.effective_start_date(+) AND chiefs.effective_end_date(+)
and chiefs.person_id(+) = people_chiefs.person_id
---- chief_names
AND p.effective_date BETWEEN chief_names.effective_start_date(+) AND chief_names.effective_end_date(+)
AND chief_names.name_type(+) = 'GLOBAL'
AND chief_names.person_id(+) = chiefs.person_id
-- chief_EMAIL_ADDRESSES
AND chief_EMAIL_ADDRESSES.email_address_id(+) = chiefs.primary_email_id
-- parameters
AND p.person_id = people.person_id
AND NVL(business_units.organization_id, '0') = NVL(p.business_unit_id, NVL(business_units.organization_id, '0'))
AND NVL(units.name, '0') LIKE NVL(('%' || p.unit_name || '%'), NVL(units.name, '0'))
AND NVL(divisions.name, '0') LIKE NVL(('%' || p.division_name || '%'), NVL(divisions.name, '0'))
AND NVL(departments.name, '0') LIKE NVL(('%' || p.organization_name || '%'), NVL(departments.name, '0'))
AND NVL(alloc_accounts.segment3, '0') = NVL(p.cost_center, NVL(alloc_accounts.segment3, '0'))
and nvl(position_location.attribute2, '0') LIKE nvl(('%' || p.region || '%'), nvl(position_location.attribute2, '0'))
AND NVL(people.person_number, '0') = NVL(p.person_number, NVL(people.person_number, '0'))
AND NVL(supervisors.person_number, '0') = NVL(p.supervisor_number, NVL(supervisors.person_number, '0'))
and nvl(null, '0') = nvl(p.band_grade, nvl(null, '0'))
AND NVL(hods.person_number, '0') = NVL(p.hod_number, NVL(hods.person_number, '0'))
AND NVL(chiefs.person_number, '0') = NVL(p.chief_number, NVL(chiefs.person_number, '0'))
AND NVL(periods.actual_termination_date, TRUNC(SYSDATE)) >= NVL(p.start_date, NVL(periods.actual_termination_date, TRUNC(SYSDATE)))
AND NVL(periods.actual_termination_date, TRUNC(SYSDATE)) <= NVL(p.end_date, NVL(periods.actual_termination_date, TRUNC(SYSDATE)))
UNION
SELECT
distinct
people.person_number pf_number,
names_en.display_name
|| ' (' || people.person_number || ')' employee_name_number,
people_info.date_of_birth date_of_birth,
business_units.name business_unit,
units.name unit_name,
divisions.name division_name,
departments.name department_name,
periods.date_start original_hire_date,
job_meanings.meaning job_level,
job_families.job_family_name grade_band,
positions.position_code position_code,
pos_names_en.name position_name,
pos_names_ar.name position_name_arabic,
positions.effective_start_date position_effective_date,
rtrim(position_location.attribute2,', SA') position_region,
initcap(positions.position_type) position_type,
decode(positions.active_status,
'A', 'Active',
positions.active_status) position_status,
position_organization.name position_organization,
alloc_accounts.segment3 cost_center,
reason_meaning.meaning leaving_reason,
contract_types.meaning contract_type,
initcap(contracts.status) contract_status,
contracts.duration || ' '
|| decode(contracts.duration_units,
'Y', 'Years',
'D', 'Days',
contracts.duration_units) contract_duration,
contracts.contract_number contract_number,
contracts.contract_end_date contract_end_date,
nationalities.meaning nationality,
decode(nationalities.meaning,'Saudi','Saudi','Non Saudi') nationality_category,
ids.national_identifier_number id_or_iqama,
grades.name grade,
email_addresses.email_address email_address,
education_levels.meaning education_level,
NVL2(supervisors.person_id,
supervisor_names.display_name
|| ' ('
|| supervisors.person_number
|| ')',
null) supervisor_name_number,
sup_email_addresses.email_address supervisor_email,
phones.phone_number phone_number,
initcap(assignments.assignment_status_type) employee_status,
parent_positions.name parent_position,
payrolls.payroll_name payroll,
NVL2(hods.person_id,
hod_names.display_name
|| ' ('
|| hods.person_number
|| ')',
null) hod_name_number,
hod_email_addresses.email_address hod_email,
NVL2(chiefs.person_id,
chief_names.display_name
|| ' ('
|| chiefs.person_number
|| ')',
null) chief_name_number,
chief_email_addresses.email_address chief_email,
periods.actual_termination_date actual_termination_date,
floor((periods.actual_termination_date - periods.date_start)
/ 365.24) tenure_years,
floor(mod((periods.actual_termination_date - periods.date_start)
/ 30.437, 12)) tenure_months,
floor(mod(mod((periods.actual_termination_date - periods.date_start),
365.24), 30.437)) tenure_days,
periods.notified_termination_date notified_date,
transactions.last_process_date,
transactions.request_submitted_date,
transactions.wave_of_requested,
transactions.wave_of_days,
transactions.wave_of_approved_days,
transactions.request_status,
transactions.last_approved_by,
transactions.last_approved_date,
transactions.pending_with,
transactions.pending_from_date
FROM
per_all_people_f people,
per_periods_of_service periods,
per_person_names_f names_en,
per_persons people_info,
per_all_assignments_f assignments,
hr_all_organization_units_f_vl business_units,
per_org_tr_tmp organizations,
hr_all_organization_units_f_vl departments,
hr_all_organization_units_f_vl divisions,
hr_all_organization_units_f_vl units,
per_jobs_f jobs,
fnd_lookup_values job_meanings,
per_job_family_f_tl job_families,
hr_all_positions_f positions,
hr_all_positions_f_tl pos_names_en,
hr_all_positions_f_tl pos_names_ar,
hr_locations_all position_location,
hr_all_organization_units_f_vl position_organization,
pay_payrolls_tr_tmp payrolls,
-- COST CENTER
pay_cost_allocations_f cost_allocs,
pay_cost_alloc_accounts alloc_accounts,
-- leaving_reason
per_action_occurrences action_occurrences,
per_action_reasons_b action_reasons,
fnd_lookup_values_tl reason_meaning,
-- contracts
per_contracts_f contracts,
fnd_lookup_values_tl contract_types,
-- nationalities
per_citizenships citizenships,
fnd_lookup_values_tl nationalities,
-- id
per_national_identifiers ids,
-- supervisors
per_assignment_supervisors_f supervision,
PER_ALL_ASSIGNMENTS_F sup_ASSIGNMENTS,
per_all_people_f supervisors,
per_person_names_f supervisor_names,
per_grades grades,
per_email_addresses email_addresses,
per_people_legislative_f legals,
fnd_lookup_values_tl education_levels,
per_email_addresses sup_email_addresses,
per_phones phones,
-- parent_position
per_pos_tree_node_v positions_tree,
hr_all_positions_f_tl parent_positions,
-- hods
per_asg_responsibilities hod_resps,
per_all_people_f hods,
per_person_names_f hod_names,
per_email_addresses hod_email_addresses,
per_chiefs_tr_tmp people_chiefs,
per_all_people_f chiefs,
per_person_names_f chief_names,
per_email_addresses chief_email_addresses,
parameters_tr p,
transactions
WHERE 1 = 1
and transactions.transaction_id = p.transaction_id
-- people
AND p.effective_date BETWEEN people.effective_start_date AND people.effective_end_date
and people.person_id = p.person_id
-- periods
AND periods.person_id = people.person_id
--AND periods.actual_termination_date IS NOT NULL
-- names_en
AND p.effective_date BETWEEN names_en.effective_start_date(+) AND names_en.effective_end_date(+)
AND names_en.name_type(+) = 'GLOBAL'
AND names_en.person_id(+) = people.person_id
-- people_info
AND people_info.person_id(+) = people.person_id
-- assignments
AND p.effective_date BETWEEN assignments.effective_start_date AND assignments.effective_end_date
AND assignments.primary_flag = 'Y'
--AND assignments.effective_latest_change = 'Y'
AND assignments.assignment_type IN ('E', 'P')
AND assignments.person_id = p.person_id
-- business_units
AND p.effective_date BETWEEN business_units.effective_start_date(+) AND business_units.effective_end_date(+)
AND business_units.organization_id(+) = assignments.business_unit_id
-- organizations
AND organizations.person_id(+) = people.person_id
AND p.effective_date BETWEEN departments.effective_start_date(+) AND departments.effective_end_date(+)
AND departments.organization_id(+) = organizations.department
AND p.effective_date BETWEEN divisions.effective_start_date(+) AND divisions.effective_end_date(+)
AND divisions.organization_id(+) = organizations.division
AND p.effective_date BETWEEN units.effective_start_date(+) AND units.effective_end_date(+)
AND units.organization_id(+) = organizations.unit
-- jobs
AND p.effective_date BETWEEN jobs.effective_start_date(+) AND jobs.effective_end_date(+)
AND jobs.job_id(+) = assignments.job_id
-- job_meanings
and job_meanings.language(+) = 'US'
and job_meanings.lookup_type(+) = 'MANAGER_LEVEL'
and job_meanings.lookup_code(+) = jobs.manager_level
-- job_families
AND p.effective_date BETWEEN job_families.effective_start_date(+) AND job_families.effective_end_date(+)
AND job_families.language(+) = 'US'
AND job_families.job_family_id(+) = jobs.job_family_id
-- positions
AND p.effective_date BETWEEN positions.effective_start_date(+) AND positions.effective_end_date(+)
AND positions.position_id(+) = assignments.position_id
---- pos_names_en
AND p.effective_date BETWEEN pos_names_en.effective_start_date(+) AND pos_names_en.effective_end_date(+)
AND pos_names_en.language(+) = 'US'
AND pos_names_en.position_id(+) = positions.position_id
---- pos_names_ar
AND p.effective_date BETWEEN pos_names_ar.effective_start_date(+) AND pos_names_ar.effective_end_date(+)
AND pos_names_ar.language(+) = 'AR'
AND pos_names_ar.position_id(+) = positions.position_id
---- position_location
AND p.effective_date BETWEEN position_location.effective_start_date(+) AND position_location.effective_end_date(+)
and position_location.location_id(+) = positions.location_id
---- position_organization
and p.effective_date BETWEEN position_organization.effective_start_date(+) AND position_organization.effective_end_date(+)
and position_organization.organization_id(+) = positions.organization_id
-- payrolls
and payrolls.person_id(+) = people.person_id
-- COST_CENTER
---- COST_ALLOCS
AND p.effective_date BETWEEN cost_allocs.effective_start_date(+) AND cost_allocs.effective_end_date(+)
AND cost_allocs.source_type(+) = 'ORG'
AND cost_allocs.source_id(+) = assignments.organization_id
---- ALLOC_ACCOUNTS
AND alloc_accounts.cost_allocation_record_id(+) = cost_allocs.cost_allocation_record_id
-- leaving_reason
and action_occurrences.action_occurrence_id(+) = periods.action_occurrence_id
and action_reasons.action_reason_id(+) = action_occurrences.action_reason_id
and reason_meaning.language(+) = 'US'
and reason_meaning.lookup_type(+) = 'HRX_FR_REASON_MAPPING'
and reason_meaning.lookup_code(+) = action_reasons.action_reason_code
-- contracts
and p.effective_date BETWEEN contracts.effective_start_date(+) AND contracts.effective_end_date(+)
and contracts.period_of_service_id(+) = periods.period_of_service_id
---- contract_types
and contract_types.language(+) = 'US'
and contract_types.lookup_type(+) = 'CONTRACT_TYPE'
and contract_types.lookup_code(+) = contracts.type
-- nationalities
and p.effective_date between citizenships.date_from(+) and citizenships.date_to(+)
and citizenships.person_id(+) = people.person_id
and nationalities.language(+) = 'US'
and nationalities.lookup_type(+) = 'NATIONALITY'
and nationalities.lookup_code(+) = citizenships.legislation_code
-- ids
and ids.national_identifier_id(+) = people.primary_nid_id
-- supervisors
AND p.effective_date BETWEEN supervision.effective_start_date(+) AND supervision.effective_end_date(+)
AND supervision.PRIMARY_FLAG(+) = 'Y'
AND supervision.manager_type(+) = 'LINE_MANAGER'
and supervision.assignment_id(+) = assignments.assignment_id
---- sup_ASSIGNMENTS
AND p.effective_date BETWEEN sup_ASSIGNMENTS.effective_start_date(+) AND sup_ASSIGNMENTS.effective_end_date(+)
AND sup_ASSIGNMENTS.primary_flag(+) = 'Y'
AND sup_ASSIGNMENTS.assignment_id(+) = supervision.MANAGER_ASSIGNMENT_ID
---- SUPERVISORS
AND p.effective_date BETWEEN supervisors.effective_start_date(+) AND supervisors.effective_end_date(+)
AND supervisors.person_id(+) = sup_ASSIGNMENTS.person_id
---- SUPERVISOR_NAMES
AND p.effective_date BETWEEN supervisor_names.effective_start_date(+) AND supervisor_names.effective_end_date(+)
AND supervisor_names.name_type(+) = 'GLOBAL'
AND supervisor_names.person_id(+) = supervisors.person_id
-- grades
and p.effective_date between grades.effective_start_date(+) and grades.effective_end_date(+)
and grades.grade_id(+) = assignments.grade_id
-- EMAIL_ADDRESSES
AND email_addresses.email_address_id(+) = people.primary_email_id
-- LEGALS
AND p.effective_date BETWEEN legals.effective_start_date(+) AND legals.effective_end_date(+)
AND legals.person_id(+) = people.person_id
-- education_levels
and education_levels.language(+) = 'US'
and education_levels.lookup_type(+) = 'PER_HIGHEST_EDUCATION_LEVEL'
and education_levels.lookup_code(+) = legals.highest_education_level
-- sup_EMAIL_ADDRESSES
AND sup_EMAIL_ADDRESSES.email_address_id(+) = supervisors.primary_email_id
-- phones
and p.effective_date between phones.date_from(+) and phones.date_to(+)
and phones.phone_id(+) = people.primary_phone_id
-- parent_position
AND positions_tree.tree_code(+) = 'MEE_POSITION_TREE'
AND positions_tree.position_id(+) = positions.position_id
and p.effective_date between parent_positions.effective_start_date(+) and parent_positions.effective_end_date(+)
and parent_positions.language(+) = 'US'
and parent_positions.position_id(+) = positions_tree.parent_position_id
-- hod
---- hod_resps
and p.effective_date between nvl(hod_resps.start_date(+), p.effective_date) and nvl(hod_resps.end_date(+), p.effective_date)
and hod_resps.responsibility_type(+) = 'HOD'
and hod_resps.top_department_id(+) = organizations.division
---- hods
AND p.effective_date BETWEEN hods.effective_start_date(+) AND hods.effective_end_date(+)
and hods.person_id(+) = hod_resps.person_id
---- hod_names
AND p.effective_date BETWEEN hod_names.effective_start_date(+) AND hod_names.effective_end_date(+)
AND hod_names.name_type(+) = 'GLOBAL'
AND hod_names.person_id(+) = hods.person_id
-- hod_EMAIL_ADDRESSES
AND hod_EMAIL_ADDRESSES.email_address_id(+) = hods.primary_email_id
-- chief
---- people_chiefs
and people_chiefs.person_id(+) = people.person_id
---- chiefs
AND p.effective_date BETWEEN chiefs.effective_start_date(+) AND chiefs.effective_end_date(+)
and chiefs.person_id(+) = people_chiefs.person_id
---- chief_names
AND p.effective_date BETWEEN chief_names.effective_start_date(+) AND chief_names.effective_end_date(+)
AND chief_names.name_type(+) = 'GLOBAL'
AND chief_names.person_id(+) = chiefs.person_id
-- chief_EMAIL_ADDRESSES
AND chief_EMAIL_ADDRESSES.email_address_id(+) = chiefs.primary_email_id
-- parameters_tr
AND p.person_id = people.person_id
AND NVL(business_units.organization_id, '0') = NVL(p.business_unit_id, NVL(business_units.organization_id, '0'))
AND NVL(units.name, '0') LIKE NVL(('%' || p.unit_name || '%'), NVL(units.name, '0'))
AND NVL(divisions.name, '0') LIKE NVL(('%' || p.division_name || '%'), NVL(divisions.name, '0'))
AND NVL(departments.name, '0') LIKE NVL(('%' || p.organization_name || '%'), NVL(departments.name, '0'))
AND NVL(alloc_accounts.segment3, '0') = NVL(p.cost_center, NVL(alloc_accounts.segment3, '0'))
and nvl(position_location.attribute2, '0') LIKE nvl(('%' || p.region || '%'), nvl(position_location.attribute2, '0'))
AND NVL(people.person_number, '0') = NVL(p.person_number, NVL(people.person_number, '0'))
AND NVL(supervisors.person_number, '0') = NVL(p.supervisor_number, NVL(supervisors.person_number, '0'))
and nvl(null, '0') = nvl(p.band_grade, nvl(null, '0'))
AND NVL(hods.person_number, '0') = NVL(p.hod_number, NVL(hods.person_number, '0'))
AND NVL(chiefs.person_number, '0') = NVL(p.chief_number, NVL(chiefs.person_number, '0'))
AND NVL(periods.actual_termination_date, TRUNC(SYSDATE)) >= NVL(p.start_date, NVL(periods.actual_termination_date, TRUNC(SYSDATE)))
AND NVL(periods.actual_termination_date, TRUNC(SYSDATE)) <= NVL(p.end_date, NVL(periods.actual_termination_date, TRUNC(SYSDATE)))
Editor is loading...
Leave a Comment