Sie sind auf Seite 1von 19

Query for Oracle Payroll Salary Slip - Salary Slip Detail Report Query

- How to find out detail of salary slip - Element wise Landscape


Salary Slip at Payroll Run Levle or quick pay level
SELECT
ppf.employee_number,
ppf.person_id,
ppf.full_name,
ppa.TIME_PERIOD_ID,
ppa.EFFECTIVE_DATE,
TP.PERIOD_NAME,

sum(decode(ety.element_name,Basic Salary ,TO_NUMBER(rrv.result_value),


Basic Sick Leave Payment,TO_NUMBER(rrv.result_value),
Basic Out Work Incident Leave Payment,TO_NUMBER(rrv.result_value),
0)) Earned_salary,

sum(decode(ety.element_name,Transportation
Allowance,TO_NUMBER(rrv.result_value),
Transportation Sick Leave Payment,TO_NUMBER(rrv.result_value),
Transportation Out Work Incident Leave
Payment,TO_NUMBER(rrv.result_value),
0)) Transportation_allowance,

sum(decode(ety.element_name,Work Type
Allowance,TO_NUMBER(rrv.result_value),
Work Type Sick Leave Payment ,TO_NUMBER(rrv.result_value),
Work Type Out Work Incident Leave
Payment,TO_NUMBER(rrv.result_value),
0)) worktype_allowance,

sum(decode(ety.element_name,Damages Allowance
,TO_NUMBER(rrv.result_value),
Damages Sick Leave Payment,TO_NUMBER(rrv.result_value),
Damages Out Work Incident Leave
Payment,TO_NUMBER(rrv.result_value),
0)) Damage_allowance,

sum(decode(ety.element_name,Danger
Allowance,TO_NUMBER(rrv.result_value),
Danger Sick Leave Payment,TO_NUMBER(rrv.result_value),
Danger Out Work Incident Leave Payment,TO_NUMBER(rrv.result_value),
0)) Danger_allowance,

sum(decode(ety.element_name,Inflation Allowance
,TO_NUMBER(rrv.result_value),0)) Inflation_Allowance,

-->Deductions
sum(decode(ety.element_name,Loan Recovery
,TO_NUMBER(rrv.result_value),0)) Loan_recovery,
sum(decode(ety.element_name,Loan Recovery Housing
,TO_NUMBER(rrv.result_value),0)) Loan_Recovery_Housing,
sum(decode(ety.element_name,Loan Recovery Others
,TO_NUMBER(rrv.result_value),0)) Loan_Recovery_Others,
sum(decode(ety.element_name,Housing Deduction
,TO_NUMBER(rrv.result_value),0)) Housing_Deduction,
sum(decode(ety.element_name,Penalty
,TO_NUMBER(rrv.result_value),0)) Penalty,

sum(decode(ety.element_name,Civil

Pension,TO_NUMBER(rrv.result_value),Social
Insurance,TO_NUMBER(rrv.result_value),0)) Civil_pension,

sum(decode(ety.element_name,In Out Leave Deduction


,TO_NUMBER(rrv.result_value),0)) In_Out_Leave_Deduction,
sum(decode(ety.element_name,Unpaid Leave Deduction
,TO_NUMBER(rrv.result_value),0)) Unpaid_Leave_Deduction,
sum(decode(ety.element_name,Retrieve Mony Recovery
,TO_NUMBER(rrv.result_value),0)) Retrieve_Mony_Recovery

FROM
per_people_x ppf,
per_assignments_x paf,
pay_assignment_actions pas ,
pay_payroll_actions ppa,
pay_run_results rr,
pay_run_result_values rrv,
pay_element_types_f ety,
pay_input_values_F I ,
PER_TIME_PERIODS TP
-- PER_POSITION_DEFINITIONS PD
-- PAY_INPUT_VALUES_F

WHERE ppf.person_id = paf.person_id


AND paf.assignment_id = pas.assignment_id
AND pas.assignment_action_id = rr.assignment_action_id
AND ppa.payroll_action_id = pas.payroll_action_id
AND rr.element_type_id = ety.element_type_id

AND i.element_type_id = ety.element_type_id


AND rrv.run_result_id = rr.run_result_id
AND rrv.input_value_id = i.input_value_id
and TP.TIME_PERIOD_ID = PPA.TIME_PERIOD_ID
AND i.name = Pay Value
-- AND HR_GENERAL.DECODE_LATEST_POSITION_DEF_ID(PAF.POSITION_ID) =
PD.POSITION_DEFINITION_ID
and ppa.EFFECTIVE_DATE BETWEEN
and ppf.employee_number

:P_FROM_DATE

AND :P_TO_DATE

= :P_Employee_number

group by
ppf.employee_number,
ppf.person_id,
ppf.full_name,
ppa.TIME_PERIOD_ID,
ppa.EFFECTIVE_DATE,
TP.PERIOD_NAME,

order by ppa.EFFECTIVE_DATE
HRMS: SQL Query to get payslip of an employee
Hello Everybody,
below is a useful SQL statement to retrive a payslip of a certain employee in
a certain calendar month.
just replace the calendar name and the emp number with yours and run it.
SELECT ppa.date_earned, per.full_name, per.employee_number,
NVL (pet.reporting_name, pet.element_name), piv.NAME,
prrv.result_value, ptp.period_name

FROM pay_payroll_actions ppa,


pay_assignment_actions pac,
per_all_assignments_f ass,
per_all_people_f per,
pay_run_results prr,
pay_element_types_f pet,
pay_input_values_f piv,
pay_run_result_values prrv,
per_time_periods_v ptp
WHERE ppa.payroll_action_id = pac.payroll_action_id
AND pac.assignment_id = ass.assignment_id
AND ass.effective_end_date = TO_DATE ('12/31/4712', 'MM/DD/RRRR')
AND ass.person_id = per.person_id
AND per.effective_end_date = TO_DATE ('12/31/4712', 'MM/DD/RRRR')
AND pac.assignment_action_id = prr.assignment_action_id
AND prr.element_type_id = pet.element_type_id
AND prr.run_result_id = prrv.run_result_id
AND pet.element_type_id = piv.element_type_id
AND piv.input_value_id = prrv.input_value_id
AND ppa.time_period_id = ptp.time_period_id
----------------------------------------AND pet.element_name = 'Basic Salary'
--

AND piv.NAME = 'Pay Value'


AND per.employee_number = '91314'
AND ptp.period_name like '6 2008 Calendar Month'

ORDER BY 1;

Function to Get Input Value ID from pay_element_entry_values_f


-+=============================================
============================================+
-- | Name : element_input_value_id
-- | Description : This function finds element input value ID
-- | Parameters : p_element_name, p_input_name, p_business_group_id
,p_assignment_id ,p_dated |
-+=============================================
=============================================+
FUNCTION element_input_value_id (
p_element_name IN
VARCHAR2,
p_input_name IN
VARCHAR2,
p_business_group_id IN
NUMBER,
p_assignment_id IN
NUMBER,
p_dated IN
DATE)
RETURN
NUMBER
IS
CURSOR cur_element_input_value
IS
SELECT pev.input_value_id

FROM pay_element_entries_f pef,


pay_element_entry_values_f pev,
pay_element_links_f pel,
pay_element_types_f pet,
pay_input_values_f piv
WHERE pet.element_name = p_element_name
AND piv.NAME= p_input_name
AND pet.business_group_id = p_business_group_id
AND pef.assignment_id = p_assignment_id
AND pet.business_group_id = pel.business_group_id
AND pet.business_group_id = piv.business_group_id
AND pef.element_entry_id = pev.element_entry_id
AND pef.element_link_id = pel.element_link_id
AND pel.element_type_id = pet.element_type_id
AND pet.element_type_id = piv.element_type_id
AND pev.input_value_id = piv.input_value_id
AND p_dated BETWEEN pet.effective_start_date AND pet.effective_end_date
AND p_dated BETWEEN pel.effective_start_dateAND pel.effective_end_date
AND p_dated BETWEEN pef.effective_start_dateAND pef.effective_end_date
AND p_dated BETWEEN pev.effective_start_date AND pev.effective_end_date
AND p_dated BETWEEN piv.effective_start_dateAND piv.effective_end_date;
ln_input_value_id pay_input_values_f.input_value_id%TYPE;
BEGIN
OPEN cur_element_input_value;
FETCH cur_element_input_value INTO ln_input_value_id;
CLOSE cur_element_input_value;

RETURN ln_input_value_id;
EXCEPTION
WHEN
OTHERS
THEN
RETURN
NULL;
END;
Running Oracle Fast Formula from PL/SQL Package Procedur
FF_EXEC.init_formula(p_formula_id => v_formula_id,
p_effective_date => v_eff_date,
p_inputs => l_f_inputs,
p_outputs => l_f_outputs);
Balance Query in Oracle Payroll - Element Feeding the Balance:
Query 1:
SELECT petf.element_name bal_feed_element_name,
pivf.NAME bal_feed_input_name,pbt.balance_name,
pbt.reporting_name,
hr_general.decode_organization (pbt.business_group_id)
business_group,
pbt.base_balance_type_id base_balance_name
--,PBT.UN
,
hr_general.decode_lookup ('UNITS', pbt.balance_uom) units,
pbt.currency_code, pbt.assignment_remuneration_flag,
(SELECT element_name
FROM pay_element_types_f

WHERE element_type_id =
(SELECT element_type_id
FROM pay_input_values_f
WHERE input_value_id =
pbt.input_value_id))
primary_element_name,
(SELECT element_type_id
FROM pay_input_values_f
WHERE input_value_id = pbt.input_value_id) primary_input_name,
DECODE (pbf.scale,
1, 'ADD',
-1, 'SUBTRACT',
NULL
) balance_add_subtract,
pbf.effective_start_date, pbf.effective_end_date, pbd.dimension_name,
pbd.description, pdb.grossup_allowed_flag, pdb.run_balance_status,
NULL initial_feed_element_name, NULL initial_feed_input_value_name,
NULL attribute_name, NULL attribute_dimension
FROM pay_balance_types pbt,
pay_balance_feeds_f pbf,
pay_element_types_f petf,
pay_input_values_f pivf,
pay_defined_balances pdb,
pay_balance_dimensions pbd
WHERE pbt.balance_type_id = pbf.balance_type_id
AND pdb.balance_type_id = pbt.balance_type_id

AND pbd.balance_dimension_id = pdb.balance_dimension_id


AND pbf.input_value_id = pivf.input_value_id
AND pivf.element_type_id = petf.element_type_id
-- AND pbt.created_by != 1
-- AND petf.created_by != 1
ORDER BY 1;
Query 2:
SELECT petf.element_name bal_feed_element_name,
pivf.NAME bal_feed_input_name,pbt.balance_name
FROM pay_balance_types pbt,
pay_balance_feeds_f pbf,
pay_element_types_f petf,
pay_input_values_f pivf
WHERE pbt.balance_type_id = pbf.balance_type_id
AND pbf.input_value_id = pivf.input_value_id
AND pivf.element_type_id = petf.element_type_id
AND petf.business_group_id = 82
HRMS Benefits query to fetch the beneficiaries - Oracle Advanced
Benefits
Query to Fetch Beneficiaries:
SELECT emp_papf.full_name employee_name,
emp_papf.national_identifier employee_ssn,
ppf.full_name beneficiary_name,
ppf.national_identifier beneficiary_ssn
FROM per_all_people_f ppf,
per_contact_relationships pcr,
ben_prtt_enrt_rslt_f pen,

ben_pl_bnf_f pbn,
per_all_people_f emp_papf
WHERE 1 = 1
AND pen.prtt_enrt_rslt_id = pbn.prtt_enrt_rslt_id
AND pen.prtt_enrt_rslt_stat_cd IS NULL
AND pen.enrt_cvg_thru_dt = hr_general.end_of_time
-- AND pcr.personal_flag(+) = 'Y'
AND pbn.bnf_person_id = pcr.contact_person_id(+)
AND pbn.bnf_person_id = ppf.person_id(+)
AND emp_papf.person_id = pcr.person_id
AND :p_report_end_date BETWEEN pbn.effective_start_date
AND pbn.effective_end_date
AND :p_report_end_date BETWEEN NVL (ppf.effective_start_date,
:p_report_end_date
)
AND NVL (ppf.effective_end_date,
:p_report_end_date
)
AND :p_report_end_date BETWEEN NVL (emp_papf.effective_start_date,
:p_report_end_date
)
AND NVL (emp_papf.effective_end_date,
:p_report_end_date
)
AND :p_report_end_date BETWEEN pen.effective_start_date
AND pen.effective_end_date

Oracle Organization Hierarchy Query:


SELECT
LPAD(' ',10*(LEVEL-1)) || org.name hierarchy,
org.organization_id
FROM
hr_all_organization_units org,
per_org_structure_elements pose
WHERE 1=1
AND porg.organization_id = pose.organization_id_child
AND pose.org_structure_version_id = 61
--and org.name like '201.Financiale Services'
START WITH
pose.organization_id_parent = 115 -- Orgnization of parent id -- provide the
id from which level the downward hierarchy should be displaed
CONNECT BY PRIOR
pose.organization_id_child = pose.organization_id_parent
ORDER SIBLINGS BY
org.location_id,
pose.organization_id_child
How to Generate Employee Number through Programming in Oracle
HRMS
There are following steps need to follow to generate employee number
through programming:
Step #1:
Create the FUNCTION Get_Next_Employee_Number:
CREATE OR REPLACE Function
APPS.Dafz_Get_Next_Employee_Number(p_Business_Group_Id In Number,
p_Emp_Type In Varchar2)

Return Varchar2 Is
v_Emp_No Varchar2(100) := 0000;
Begin
If (p_Emp_Type = EMP) Then
Begin
Select 0 || Max(To_Number(Papf.Employee_Number) + 1)
Into v_Emp_No
From Per_All_People_f Papf
Where Papf.Employee_Number Is Not Null
And Papf.Employee_Number Not Like XX%
And Papf.Employee_Number Like 0%
And Papf.Business_Group_Id = p_Business_Group_Id;
Exception
When Others Then
v_Emp_No := NULL';
End;
End If;
Return v_Emp_No;
End;
/
STEP # 2
Change the HR:Business Group & HR: Security Profile profile setting to
Setup Business Group

HR Business Group Profile Setting


STEP # 3
Define Function in Oracle HRMS Responsibility, switch to UAE HRMS
Responsibility and open DEFINE FUNCTION
Create New Function and calling the above function in it:
Define Function

Step # 4
Switch to Responsibility UAE HRMS Manager then Total Compensation >
Basic > Write Formulas, Search for EMP_NUMBER_GENERATION

EMP NUM GEN


Edit this and update with below Fast Formula code:
/* -*/
/* NAME: EMP_NUMBER_GENERATION */
/* Returns the Next Employee Number.
/* Developed By: M Muzzammil Khan
/* Dated: 01-May-2013 */
/*-*/
DEFAULT FOR Person_number IS 0000
DEFAULT FOR Party_ID IS 0
DEFAULT FOR Person_ID IS 0

DEFAULT FOR National_ID IS 0000


DEFAULT FOR Date_Of_Birth IS 1900/01/01 00:00:00 (date)
DEFAULT FOR Hire_Date IS 1900/01/01 00:00:00 (date)
INPUTS ARE
Legislation_Code (text),
Person_Type (text),
Person_number (text),
Party_id,
Person_id,
Date_of_birth (date),
Hire_date (date),
National_ID (text)
Next_number = 0000
IF person_type = EMP then
(
Next_Number = DAFZ_Get_Next_Employee_Number(81,Person_Type)
)
RETURN Next_number

STEP # 5
Save and compile the Fast formula and then try to create new staff from
HRMS responsibility, you will see it will generate the new staff # through
programming.
Feel free to contact me if further details required.
How To Query Supervisor Chain Of Command For A User
How to query for supervisors hierarchy above an approver user
when using employee supervisor chain of command?

Solution
Substitute the username in place of DCROCKETT in the following query. This
is useful when troubleshooting approval
list issues with employee supervisor relationships for requisitions and
purchasing documents

/* Formatted on 7/4/2014 11:28:25 AM (QP5 v5.115.810.9015) */


SELECT fndu.user_name, pecx.full_name
FROM fnd_user fndu,
per_employees_current_x pecx,
(SELECT pera.supervisor_id

--, fndu.user_name, pecx.full_name

FROM per_assignments_f pera


WHERE EXISTS
(SELECT '1'
FROM per_people_f perf, per_assignments_f pera1
WHERE TRUNC (SYSDATE) BETWEEN perf.effective_start_date
AND perf.effective_end_date
AND perf.person_id = pera.supervisor_id
AND pera1.person_id = perf.person_id
AND TRUNC (SYSDATE) BETWEEN pera1.effective_start_date
AND pera1.effective_end_date
AND pera1.primary_flag = 'Y'
AND pera1.assignment_type = 'E'
AND EXISTS
(SELECT '1'
FROM per_person_types ppt
WHERE ppt.system_person_type IN ('EMP', 'EMP_APL')

AND ppt.person_type_id = perf.person_type_id))


START WITH pera.person_id = (SELECT employee_id
FROM fnd_user
WHERE user_name = 'DCROCKETT') -- ** Replace
DCROCKETT with your username
AND TRUNC (SYSDATE) BETWEEN pera.effective_start_date
AND pera.effective_end_date
AND pera.primary_flag = 'Y'
AND pera.assignment_type = 'E'
CONNECT BY PRIOR pera.supervisor_id = pera.person_id
AND TRUNC (SYSDATE) BETWEEN pera.effective_start_date
AND pera.effective_end_date
AND pera.primary_flag = 'Y'
AND pera.assignment_type = 'E') c
WHERE fndu.employee_id = c.supervisor_id
AND pecx.employee_id = c.supervisor_id
How to get Net Entitlement of Leaves in Oracle HRMS Payroll
How to get net entitlement of leaves of an employee on a specific
date in oracle hrms??

Please refer to the function code below.


CREATE OR REPLACE FUNCTION CUST_GET_NET_ENTITLEMENT (
P_ASSG_ID
P_PAYROLL_ID

IN NUMBER,
IN NUMBER,

P_CALCULATION_DATE IN DATE
)
RETURN NUMBER

IS
L_START_DATE

DATE;

L_END_DATE

DATE;

L_ACC_END_DATE
L_VALUE

DATE;

NUMBER

L_NET_VALUE

:= 0;

NUMBER (15, 2);

P_PLAN_ID

NUMBER;

-- L_CALCULATION_DATE DATE;
BEGIN
SELECT PAP.ACCRUAL_PLAN_ID
INTO P_PLAN_ID
FROM PAY_ACCRUAL_PLANS PAP
WHERE UPPER (PAP.ACCRUAL_PLAN_NAME) LIKE
(SELECT UPPER (PETF.ELEMENT_NAME)
FROM PAY_ELEMENT_ENTRIES_F PEEF, PAY_ELEMENT_TYPES_F PETF
WHERE PEEF.ELEMENT_TYPE_ID = PETF.ELEMENT_TYPE_ID
AND UPPER (PETF.ELEMENT_NAME) LIKE '%PLAN%'
AND PETF.PROCESSING_TYPE = 'R'
AND PEEF.ASSIGNMENT_ID = P_ASSG_ID
AND P_CALCULATION_DATE BETWEEN
PEEF.EFFECTIVE_START_DATE
AND PEEF.EFFECTIVE_END_DATE);

/* QUERY ABOVE AUTOMATICALLY GETS THE PLAN ID OF THE ACCRUAL PLAN


ID ATTACHED AS ON CALCULATION DATE*/
PER_ACCRUAL_CALC_FUNCTIONS.GET_NET_ACCRUAL
(P_ASSIGNMENT_ID

=> P_ASSG_ID,

P_PLAN_ID

=> P_PLAN_ID,

P_PAYROLL_ID

=> P_PAYROLL_ID,

P_BUSINESS_GROUP_ID
your business group id accordingly

=> 81, -- Kindly change

P_ASSIGNMENT_ACTION_ID
P_CALCULATION_DATE

=> -1,
=> TO_DATE

(P_CALCULATION_DATE
)
-- DATE YOU WANT TO CHECK THE NET ENTITLEMENT EX. TO_DATE('01-MAR2009', 'DD-MON-YYYY')
,
P_ACCRUAL_START_DATE

=> NULL,

P_ACCRUAL_LATEST_BALANCE
P_CALLING_POINT
P_START_DATE
P_END_DATE
P_ACCRUAL_END_DATE
P_ACCRUAL
P_NET_ENTITLEMENT
);
RETURN NVL (L_NET_VALUE, 0);
EXCEPTION
WHEN OTHERS
THEN
RETURN 0;
END;
/

=> NULL,

=> 'FRM',
=> L_START_DATE,
=> L_END_DATE,
=> L_ACC_END_DATE,
=> L_VALUE,
=> L_NET_VALUE

Das könnte Ihnen auch gefallen