PTO Accruals Using 27 Pay Periods Instead Of 26 As Definied In The Payroll Schedule (Doc ID 1336592.1)

Last updated on MARCH 08, 2017

Applies to:

Oracle Human Resources - Version and later
Information in this document applies to any platform.


Personal Time Off Accruals

Find that having a payroll with a start date of 19-DEC-2010 and end date 01-JAN-2011 with the check date offset 5 days making the check date 06-JAN-2011 is calculating 27 pay periods which is incorrect. When viewing the payroll period dates in the payroll definition, there are only 26 periods. This appears to be an issue with the caclulate_payrol_periods() function which is called from the PTO_PAYROLL_CALCULATION function. This is the function that sets the value for the global variable PAYROLL_YEAR_NUMBER_OF_PERIODS.

Please see the following excerpt from the HRMS Fast Formula User Guide:
This function takes no parameters; it uses the payroll id context. It calculates the number of payroll periods in one year for that payroll, and sets the global variable PAYROLL_YEAR_NUMBER_OF_PERIODS to that value. For example, the function would set the global variable to 12 for a calendar month payroll.

Upon review of the code for this function, it appears the cursor which counts the number of payperiods in the current calendar year is based upon the "end date" instead of the "regular_payment_date" which is the problem. The first pay period in 2012 has an end_date of 12/31/2011 but the regular_payment_date is in 2012, 1/5/2012

See the code below:
cursor c_count_periods is
select count(*)
from per_time_periods ptp
where ptp.payroll_id = P_Payroll_ID
and ptp.end_date between
to_date('01/01/'||to_char(P_Calculation_Date, 'YYYY'), 'DD/MM/YYYY')
and to_date('31/12/' || to_char(P_Calculation_Date, 'YYYY'), 'DD/MM/YYYY');

In an attempt to validate the cause, the end_date was modified to regular_payment_date and the SQL statement correctly returns 26 periods instead of 27.

Expect the calculation of payroll periods to be 26 and not 27 in order to calculate PTO correctly.

The issue can be reproduced at will with the following steps:
1. Create a PTO Plan that uses the seeded formula PTO_PAYROLL_BALANCE
2. Create a Payroll with setup:
First Period End Date: 18-DEC-1999 21 years
Check 5
Scheduled run 3
3. Create an employee, using the payroll you created
4. Add the vacation plan to the employee
5. Check accruals for 2011 and you will see the accrued amount is
Net Entitlement: 6.23 instead of 6.47 when the yearly entitlement is
based on an accrual band where 9 - 99 years is 168.22
168.22 / 27 = 6.23
168.22 / 26 = 6.47


Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms