You are on page 1of 3

WITH udf_mapping AS

(
SELECT /*+ MATERIALIZE */
t.user_table_id,
t.base_user_table_name table_name,
r.row_low_range_or_name source_value,
MAX(CASE WHEN SUBSTR(c_tl.user_column_name,1,3) = '001' THEN
v.value ELSE '' END) column_1_value,
MAX(CASE WHEN SUBSTR(c_tl.user_column_name,1,3) = '002' THEN
v.value ELSE '' END) column_2_value,
MAX(CASE WHEN SUBSTR(c_tl.user_column_name,1,3) = '003' THEN
v.value ELSE '' END) column_3_value,
MAX(CASE WHEN SUBSTR(c_tl.user_column_name,1,3) = '004' THEN
v.value ELSE '' END) column_4_value
FROM ff_user_tables t
INNER JOIN ff_user_rows_f r ON t.user_table_id = r.user_table_id
INNER JOIN ff_user_columns c
INNER JOIN ff_user_columns_tl c_tl ON c.user_column_id =
c_tl.user_column_id
ON t.user_table_id = c.user_table_id
INNER JOIN ff_user_column_instances_f v ON
c.user_column_id = v.user_column_id
AND r.user_row_id = v.user_row_id
GROUP BY
t.user_table_id,
t.base_user_table_name,
r.row_low_range_or_name
), pay_period_info AS
(
SELECT DISTINCT
pai.person_id,
pai.action_context_id action_context_id,
SUBSTR(pai.action_information45, 1, 4) || SUBSTR('00' ||
pai.action_information47, -2) pay_period_number,
TO_DATE(SUBSTR(pai.action_information45, 1, 10), 'YYYY-MM-DD')
pay_period_end_date,
SUBSTR(pai.action_information45, 1, 4) pay_period_year,
TO_DATE(SUBSTR(pai.action_information46, 1, 10), 'YYYY-MM-DD')
pay_period_check_date
FROM pay_action_information pai
WHERE pai.action_context_type = 'PRA'
AND pai.action_information_category =
'GLB_PAY_ARCH_PR_PAYROLL_FC'
AND pai.action_information41 = 'GF US Payroll'
AND SUBSTR(pai.action_information45, 1, 4) || SUBSTR('00' ||
pai.action_information47, -2) = :pay_period
), ben_info AS
(
SELECT ben_result.orgnl_enrt_dt coverage_start_date,
ben_result.enrt_cvg_thru_dt coverage_end_date,
pay_element_type.base_element_name element_name,
pay_element_value.screen_entry_value,
ppi.action_context_id
FROM ben_prtt_enrt_rslt ben_result
INNER JOIN ben_prtt_rt_val ben_result_value ON
ben_result.prtt_enrt_rslt_id = ben_result_value.prtt_enrt_rslt_id
INNER JOIN pay_element_entry_values_f pay_element_value ON
ben_result_value.element_entry_value_id = pay_element_value.element_entry_value_id
INNER JOIN pay_element_entries_f pay_element ON
pay_element_value.element_entry_id = pay_element.element_entry_id
INNER JOIN pay_element_types_f pay_element_type ON
pay_element.element_type_id = pay_element_type.element_type_id
INNER JOIN pay_period_info ppi ON ben_result.person_id =
ppi.person_id
WHERE pay_element_type.base_element_name IN (:element_type)
AND ppi.pay_period_end_date BETWEEN
pay_element.effective_start_date AND pay_element.effective_end_date
AND ppi.pay_period_end_date BETWEEN
pay_element_value.effective_start_date AND pay_element_value.effective_end_date
AND ppi.pay_period_end_date BETWEEN
pay_element_type.effective_start_date AND pay_element_type.effective_end_date
)
--Pre-tax
SELECT ppi.action_context_id,
pai_emp.action_information45 employee_number,
UPPER(NVL(TRIM(BOTH ' ' FROM pai_emp.action_information46), '') || ' '
|| NVL(TRIM(BOTH ' ' FROM pai_emp.action_information48), '')) employee_name,
REPLACE(pai_emp.action_information44, '-', '') employee_ssn,
ppi.pay_period_number pay_period,
TO_CHAR(bi.coverage_start_date,'MON/DD/YYYY') coverage_start_date,
(CASE bi.coverage_end_date WHEN TO_DATE('4712-12-31') THEN NULL ELSE
TO_CHAR(bi.coverage_end_date,'MON/DD/YYYY') END) coverage_end_date,
NVL(element_map.column_2_value, pai_ded.action_information42) ded_name,
element_map.column_1_value ded_code,
TO_CHAR(pai_ded.action_information81 * -1, '99999.99') ded_amount,
'PRE' ded_type
FROM pay_period_info ppi
INNER JOIN pay_action_information pai_ded ON ppi.action_context_id =
pai_ded.action_context_id AND pai_ded.action_information_category =
'GLB_PAY_ARCH_PR_PRE_TAX_DEDUCTIONS_FC'
INNER JOIN pay_action_information pai_emp ON ppi.action_context_id =
pai_emp.action_context_id AND pai_emp.action_information_category =
'GLB_PAY_ARCH_EE_INFO_FC'
LEFT JOIN udf_mapping element_map ON
element_map.table_name = 'GF_PAY_ELEMENT_LOOKUP'
AND LOWER(pai_ded.action_information42) =
LOWER(element_map.source_value)
LEFT JOIN ben_info bi ON
ppi.action_context_id = bi.action_context_id
AND pai_ded.action_information42 = bi.element_name
WHERE pai_ded.action_information42 IN (:element_type)
AND pai_ded.action_information81 <> '0'
UNION
--Post-tax
SELECT ppi.action_context_id,
pai_emp.action_information45 employee_number,
UPPER(NVL(TRIM(BOTH ' ' FROM pai_emp.action_information46), '') || ' '
|| NVL(TRIM(BOTH ' ' FROM pai_emp.action_information48), '')) employee_name,
REPLACE(pai_emp.action_information44, '-', '') employee_ssn,
ppi.pay_period_number pay_period,
TO_CHAR(bi.coverage_start_date,'MON/DD/YYYY') coverage_start_date,
(CASE bi.coverage_end_date WHEN TO_DATE('4712-12-31') THEN NULL ELSE
TO_CHAR(bi.coverage_end_date,'MON/DD/YYYY') END) coverage_end_date,
NVL(element_map.column_2_value, pai_ded.action_information42) ded_name,
element_map.column_1_value ded_code,
TO_CHAR(pai_ded.action_information81 * -1, '99999.99') ded_amount,
'POST' ded_type
FROM pay_period_info ppi
INNER JOIN pay_action_information pai_ded ON ppi.action_context_id =
pai_ded.action_context_id AND pai_ded.action_information_category =
'GLB_PAY_ARCH_PR_OTHER_DEDUCTIONS_FC'
INNER JOIN pay_action_information pai_emp ON ppi.action_context_id =
pai_emp.action_context_id AND pai_emp.action_information_category =
'GLB_PAY_ARCH_EE_INFO_FC'
LEFT JOIN udf_mapping element_map ON
element_map.table_name = 'GF_PAY_ELEMENT_LOOKUP'
AND LOWER(pai_ded.action_information42) =
LOWER(element_map.source_value)
LEFT JOIN ben_info bi ON
ppi.action_context_id = bi.action_context_id
AND pai_ded.action_information42 = bi.element_name
WHERE pai_ded.action_information42 IN (:element_type)
AND pai_ded.action_information81 <> '0'
ORDER BY 3, 8

You might also like