You are on page 1of 6

1) Create a formula of type “Global Absence Accrual Event”.

The name of the formula must match


the name of the Accrual Plan. A sample formula that captures all FTE changes is listed below:

INPUTS ARE IV_CALEDARSTARTDATE(date)

DEFAULT_DATA_VALUE for PER_HIST_ASG_ASSIGNMENT_ID is 0


DEFAULT_DATA_VALUE for PER_HIST_ASG_EFFECTIVE_START_DATE IS '4712/12/31' (DATE)
DEFAULT_DATA_VALUE for PER_HIST_ASG_EFFECTIVE_END_DATE IS '4712/12/31' (DATE)
DEFAULT for IV_CALEDARSTARTDATE IS '4712/12/31' (DATE)
DEFAULT_DATA_VALUE for PER_HIST_ASG_NORMAL_HOURS IS 40
DEFAULT FOR PER_ASG_PERSON_ID IS 0
DEFAULT for IV_EVENT_DATES is EMPTY_DATE_NUMBER
DEFAULT FOR PER_ASG_NORMAL_HOURS is 40

workHours = 40
J=1

change_contexts(EFFECTIVE_DATE=IV_CALEDARSTARTDATE)
(
workHours = PER_ASG_NORMAL_HOURS
)

J=J+1
IV_EVENT_DATES[J] = IV_CALEDARSTARTDATE

HOURS_ARRAY = PER_HIST_ASG_NORMAL_HOURS
K = HOURS_ARRAY.FIRST(-1)

WHILE HOURS_ARRAY.EXISTS(K) LOOP


(
IF (HOURS_ARRAY[K] <> workHours) THEN
(
IV_EVENT_DATES[J] = PER_HIST_ASG_EFFECTIVE_START_DATE[K]
J = J+1
workHours = HOURS_ARRAY[K]
)
K = HOURS_ARRAY.NEXT(K, -1)
)

return IV_EVENT_DATES
2) Create a formula of type “Global Absence Accrual Matrix”. Event dates from the previous formula
and accrual rate for each of those dates is made available to this formula as inputs. A sample
formula that handles FTE changes is listed below:

/*=========== DATABASE ITEM DEFAULTS BEGIN =====================*/


DEFAULT for PER_ASG_REL_ORIGINAL_DATE_OF_HIRE is '4712/12/31 00:00:00' (date)
DEFAULT FOR PER_ASG_NORMAL_HOURS IS 40
DEFAULT for IV_ACCRUAL is 0
DEFAULT for IV_CEILING is 0
DEFAULT for IV_CARRYOVER is 0
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_ACCRUALPERIODSTARTDATE is '4712/12/31 00:00:00' (date)
DEFAULT for IV_ACCRUALPERIODENDDATE is '4712/12/31 00:00:00' (date)
DEFAULT for ANC_ABS_PLN_NAME is 'A'
DEFAULT for ANC_ABS_PLN_PLAN_UOM is 'H'
DEFAULT for adjustmentvalues is EMPTY_NUMBER_NUMBER
DEFAULT for adjustmentdates is EMPTY_DATE_NUMBER
DEFAULT for adjustmenttypes is EMPTY_TEXT_NUMBER
DEFAULT for IV_EVENT_DATES is EMPTY_DATE_NUMBER
DEFAULT for L_VALUES is EMPTY_NUMBER_NUMBER

/*=========== DATABASE ITEM DEFAULTS ENDS======================*/


Inputs are IV_ACCRUAL,
IV_CEILING,
IV_CARRYOVER,
IV_CALEDARSTARTDATE (DATE),
IV_CALEDARENDDATE (DATE),
IV_ACCRUALPERIODSTARTDATE (DATE),
IV_ACCRUALPERIODENDDATE (DATE),
IV_EVENT_DATES,
IV_ACCRUAL_VALUES

/*================ FORMULA SECTION BEGIN =======================*/


l_no_of_days=days_BETWEEN(GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00'
(date)),PER_ASG_REL_ORIGINAL_DATE_OF_HIRE) l_length_of_service=(l_no_of_days/365)
l_month=to_char(GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00' (date)), 'mm')

accrual =IV_ACCRUAL ceiling


= IV_CEILING
carryover=IV_CARRYOVER
adjustment=0
l_no_of_days_in_current_ft
e = 365 prev_fte = 1.0
current_fte = 1.0
k = IV_EVENT_DATES.FIRST(-1)

WHILE IV_EVENT_DATES.EXISTS(K) LOOP


( if ( (k >1)
and
(IV_EVENT_DATES[k] != IV_CALEDARSTARTDATE) and
(IV_EVENT_DATES[k] >= IV_ACCRUALPERIODSTARTDATE) and
(IV_EVENT_DATES[k] <=IV_ACCRUALPERIODENDDATE)) then
(

l_prev_date = add_days(IV_EVENT_DATES[k], -1)


change_contexts(EFFECTIVE_DATE=l_prev_date)
(
prev_fte = PER_ASG_NORMAL_HOURS/40
)

change_contexts(EFFECTIVE_DATE=IV_ACCRUALPERIODENDDATE)
(
current_fte = PER_ASG_NORMAL_HOURS/40
)

adjustmentvalues[k]= l_no_of_days_in_current_fte*accrual*(current_fte -prev_fte)/365


adjustmentdates[k]= IV_EVENT_DATES[k] adjustmenttypes[k]='FTEADJ'
)
k = IV_EVENT_DATES.NEXT(k, -1)
)

return accrual,ceiling,carryover,adjustmentvalues,adjustmentdates,adjustmenttypes

3) Create an Accrual Plan. Name must match the Formula name defined for “Global Absence
Accrual Event”
4) Enroll an employee as of 1/1/2014. Employee FTE is 1.0. Employee is granted full entitlement of
180 hours as per plan setup

5) As of 6/1/2014, update working hours to 20 from 40 thus making the FTE 0.5.
6) Run accrual for 6/30/2014 and verify an adjustment is made for the change in working hours

You might also like