Global Absence Partial Period Accrual Rate
The Global Absence Partial Period Accrual Rate fast formula is where any logic required for proration of accrual balance during enrollment year and disenrollment year needs to be entered.
If the annual accrual that a worker is eligible for every year is 20 days and the worker has enrolled into the plan mid year, the organization would like to grant the worker 10 days for the year of enrollment since the worker is eligible only for half the year. Similarly, if a worker disenrolls from a plan mid year, the total accrual for that year would need to be reduced from 20 to 10 because the worker was enrolled into the plan for only half the year.
This formula is invoked when enrollment or disenrollment dates fall within the repeating period for which the accrual is being processed.
Configuration Point in HCM Cloud
If you have created this formula, you can attach this formula to the absence plan definition.
Navigation
- In the Absence Administration work area, click Absence Plans to open the Absence Plans page.
- On the Search Results section toolbar, click Create to open the Create Absence Plan dialog box.
- In the Plan Type field, select Accrual.
- Click Continue.
- On the Edit Absence Plan page Accruals tab Accrual Attributes section, select the desired formula in the Partial Accrual Period Formula field.
Contexts
The following contexts are available in this formula type:
Context Name | Data Type |
---|---|
ABSENCE_ENTRY_ID | Number |
ABSENCE_TYPE_ID | Number |
ACCRUAL_PLAN_ID | Number |
DATE_EARNED | Date |
EFFECTIVE_DATE | Date |
END_DATE | Date |
ENTERPRISE_ID | Number |
HR_ASSIGNMENT_ID | Number |
HR_RELATIONSHIP_ID | Number |
HR_TERM_ID | Number |
JOB_ID | Number |
LEGAL_EMPLOYER_ID | Number |
LEGISLATIVE_DATA_GROUP_ID | Number |
ORGANIZATION_ID | Number |
PAYROLL_ASSIGNMENT_ID | Number |
PAYROLL_ID | Number |
PAYROLL_RELATIONSHIP_ID | Number |
PAYROLL_TERM_ID | Number |
PERSON_ID | Number |
START_DATE | Date |
Input Values
Variable Name | Data Type | Description |
---|---|---|
IV_ACCRUAL | Number | Accrual value received from the accrual matrix |
IV_CARRYOVER | Number | Carryover limit received from accrual matrix |
IV_CEILING | Number | Ceiling limit received from the accrual matrix |
IV_ACCRUALPERIODSTARTDATE | Date | Start date of accrual period |
IV_ACCRUALPERIODENDDATE | Date | End date of accrual period |
IV_CALEDARSTARTDATE | Date | Start date of accrual calendar year |
IV_CALEDARENDDATE | Date | End date of accrual calendar year |
IV_PLANENROLLMENTSTARTDATE | Date | Start date of enrollment |
IV_PLANENROLLMENTENDDATE | Date | End date of enrollment |
IV_BAND_CHG_DT1* | Date | If the accrual matrix band definition consists of grades or derived factors length of service or age, then this input value fetches the date on which worker has had a change in any of these factors within the period. |
IV_BAND_CHG_BEFVAL1* | Number | Accrual value as per the matrix before IV_BAND_CHG_DT1 |
IV_BAND_CHG_AFTVAL1* | Number | Accrual value as per the matrix after IV_BAND_CHG_DT1 |
IV_ACCRUAL_CEILING | Number | Annual accrual limit from the accrual matrix |
*the sequence for these input values can be extended to 5.
Return Variables
Variable Name | Data Type | Description |
---|---|---|
accrual | Number | Partial period prorated accrual value returned for the particular partial repeating period. Value is returned gets added as an accrual line. For processing termination of enrollment for front loaded plans, the variable should return a negative value, to deduct prorated amount from the existing annual accrual value. |
Sample Formula
Requirement: The organization has a partial period rule where accruals are prorated based on months enrolled for the plan.
Solution: A Global Absence Partial Period Accrual Rate formula such as the one below can be used.
FORMULA NAME: ANC_PARACC
FORMULA TYPE: Global Absence Partial Period Accrual Rate Formula
DESCRIPTION: This formula returns the accrual for mid period enrollments and unenrollments for Vacation absence plan
DEFAULT FOR IV_ACCRUAL IS 0
DEFAULT FOR IV_ACCRUALPERIODSTARTDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_ACCRUALPERIODENDDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_CALEDARSTARTDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_CALEDARENDDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_PLANENROLLMENTSTARTDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_PLANENROLLMENTENDDATE IS '4712/12/31 00:00:00' (date)
INPUTS ARE IV_ACCRUAL, IV_ACCRUALPERIODSTARTDATE (date), IV_ACCRUALPERIODENDDATE (date), IV_CALEDARSTARTDATE (date), IV_CALEDARENDDATE (date), IV_PLANENROLLMENTSTARTDATE (date), IV_PLANENROLLMENTENDDATE (date)
ln_same_year_duration = 0
lc_first_month_flag = 'N'
ln_first_month_accrual = 0
ln_participation_duration = 0
ln_term_duration = 1 + (TO_NUMBER(TO_CHAR(IV_CALEDARENDDATE, 'yy')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'yy'))) * 12 + (TO_NUMBER(TO_CHAR(IV_CALEDARENDDATE, 'mm')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'mm')))
ld_start_date = GREATEST (IV_PLANENROLLMENTSTARTDATE,IV_CALEDARSTARTDATE)
ld_end_date = LEAST (IV_PLANENROLLMENTENDDATE, IV_CALEDARENDDATE)
/*Calculating the duration for which the enrollment was active*/
ln_participation_duration = (TO_NUMBER(TO_CHAR(ld_end_date, 'yy')) - TO_NUMBER(TO_CHAR(ld_start_date, 'yy'))) * 12 + (TO_NUMBER(TO_CHAR(ld_end_date, 'mm')) - TO_NUMBER(TO_CHAR(ld_start_date, 'mm'))) + 1
/*Capturing this in case un-enrollment occurred in the same month as calendar start month*/
ln_first_month_accrual = IV_ACCRUAL * (ln_participation_duration / ln_term_duration)
/*Checking if un-enrollment happend before end of calendar year*/
IF IV_PLANENROLLMENTENDDATE < IV_CALEDARENDDATE
THEN
(
/*Checking if enrollment also happened within the same year as unenrollment*/
IF (IV_PLANENROLLMENTSTARTDATE > IV_CALEDARSTARTDATE)
THEN
(
/*If enrollment happened in the same year as the un-enrollment, calculating the duration from calendar start date to enrollment start date so that this can be subtracted from total*/
ln_same_year_duration = (TO_NUMBER(TO_CHAR(IV_PLANENROLLMENTSTARTDATE, 'yy')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'yy'))) * 12 + (TO_NUMBER(TO_CHAR(IV_PLANENROLLMENTSTARTDATE, 'mm')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'mm')))
)
/*The termination pro-ration has to return a negative value - the amount that needs to be subtracted from the current balance*/
ln_participation_duration = -1 * (ln_term_duration - ln_participation_duration - ln_same_year_duration)
/*Checking if un-enrollment happened in the first month of the calendar year*/
IF ( (TO_CHAR(IV_CALEDARSTARTDATE, 'mm') = TO_CHAR(IV_PLANENROLLMENTENDDATE, 'mm')) AND (TO_CHAR(IV_CALEDARSTARTDATE, 'yyyy') = TO_CHAR(IV_PLANENROLLMENTENDDATE, 'yyyy')) )
THEN
(lc_first_month_flag = 'Y')
)
prorated_accrual = IV_ACCRUAL * (ln_participation_duration / ln_term_duration)
/*If un-enrollment happened in the first month of the calendar year, then return the pro-ration for the single month*/
IF (lc_first_month_flag = 'Y')
THEN
(prorated_accrual = ln_first_month_accrual)
accrual = ROUND(prorated_accrual,2)
RETURN accrual