Thursday 13 September 2018

Retrieve Payroll Results in Oracle Fusion Payroll

Select
   ppa.effective_date PayrollDate,
   papf.Person_Number PersonNumber,
   PETF.BASE_ELEMENT_NAME ElementName,
   prrv.RESULT_VALUE PayAmount 
from
   PAY_RUN_RESULTS prr,
   PAY_RUN_RESULT_VALUES prrv,
   PAY_ELEMENT_TYPES_F PETF,
   PAY_ELE_CLASSIFICATIONS PEC,
   PAY_INPUT_VALUES_F pivf,
   PAY_PAYROLL_REL_ACTIONS PRREA,
   PAY_PAYROLL_ACTIONS PPA,
   PAY_PAY_RELATIONSHIPS_DN PPRDN,
   PAY_ALL_PAYROLLS_F papsf,
   per_all_people_f papf 
where
   prr.RUN_RESULT_ID = prrv.RUN_RESULT_ID( + ) 
   and prr.ELEMENT_TYPE_ID = petf.ELEMENT_TYPE_ID 
   AND PETF.CLASSIFICATION_ID = PEC.CLASSIFICATION_ID 
   and pivf.ELEMENT_TYPE_ID = petf.ELEMENT_TYPE_ID 
   and PRREA.RETRO_COMPONENT_ID is Null
   and pivf.ELEMENT_TYPE_ID = prr.ELEMENT_TYPE_ID 
   and pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID( + ) 
   AND pivf.BASE_NAME = 'Pay Value'  --and papsf.PAYROLL_NAME like '%Junior%'
   and PRREA.PAYROLL_REL_ACTION_ID = PRR.PAYROLL_REL_ACTION_ID 
   and PRREA.PAYROLL_ACTION_ID = PPA.PAYROLL_ACTION_ID 
   and PPA.ACTION_TYPE in 
   (
      'R',
      'Q'
   )
   and PRREA.PAYROLL_RELATIONSHIP_ID = PPRDN.PAYROLL_RELATIONSHIP_ID 
   and papsf.PAYROLL_ID = ppa.PAYROLL_ID 
   and PPRDN.PERSON_ID = Papf.PERSON_ID 
   AND ppa.date_earned BETWEEN pivf.effective_start_date AND pivf.effective_end_date 
   AND ppa.date_earned BETWEEN petf.effective_start_date AND petf.effective_end_date 
   AND ppa.date_earned BETWEEN papsf.effective_start_date AND papsf.effective_end_date 
   AND ppa.date_earned BETWEEN papf.effective_start_date AND papf.effective_end_date 
   and TO_CHAR (ppa.effective_date, 'DD-MM-YYYY') = '31-08-2018'  --and papf.Person_Number = ''
order by
   papf.Person_Number asc

Wednesday 5 September 2018

Retrieve Employee Salary History in EBiz

SELECT
  employee_number,
  proposed_salary_n,
  from_date,
  CASE
    WHEN
      to_date IS NULL 
    THEN
      to_date('31-dec-4712') 
    ELSE
      to_date 
  END
  xx 
FROM
  (
    SELECT
      a.employee_number,
      c.proposed_salary_n,
      c.change_date from_date,
      (
        LEAD (c.change_date, 1) OVER (PARTITION BY a.employee_number 
      ORDER BY
        c.change_date)
      )
       - 1 to_date 
    FROM
      per_all_people_f a,
      per_all_assignments_f b,
      per_pay_proposals c 
    WHERE
      1 = 1 
      AND sysdate BETWEEN a.effective_start_date AND a.effective_end_date 
      AND sysdate BETWEEN b.effective_start_date AND b.effective_end_date 
      AND a.person_id = b.person_id    --and a.employee_number = '001'
      AND b.assignment_id = c.assignment_id 
    ORDER BY
      a.employee_number,
      c.change_date
  )
GROUP BY
  employee_number,
  proposed_salary_n,
  from_date,
  to_date 
ORDER BY
  1,
  3;