FusionAbsenceManagementREL92 SampleFastFormulas
FusionAbsenceManagementREL92 SampleFastFormulas
/******************************************************************************
ln_accrual = 0
ld_effective_date=PER_REL_ORIGINAL_DATE_OF_HIRE
ld_emp_term_date =PER_REL_ACTUAL_TERMINATION_DATE
ld_hire_year = TO_NUMBER(TO_CHAR(ld_effective_date,'rrrr'))
ld_curr_year = TO_NUMBER(TO_CHAR(ld_current_date,'rrrr'))
accrual = 0
1
Fusion Absence Management (Release 9.2) Sample Fast Formulas
RETURN accrual,ceiling,carryover,vestingUnits,vestingUOM
/**************************************************************/
2
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_ACCRUAL_XX_FamilyLeave
FORMULA TYPE: Global Absence Accrual
DESCRIPTION: This formula returns the accrual for employees enrolled Family Leave
Change History:
Name Date Comments
-----------------------------------------------
TAREK IBRAHIM 10-Apr-2015 Initial Version
*******************************************************************************/
ln_accrual = 0
ld_effective_date=PER_REL_ORIGINAL_DATE_OF_HIRE
ld_emp_term_date =PER_REL_ACTUAL_TERMINATION_DATE
ld_hire_year = TO_NUMBER(TO_CHAR(ld_effective_date,'rrrr'))
ld_curr_year = TO_NUMBER(TO_CHAR(ld_current_date,'rrrr'))
accrual = 0
3
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ceiling = 2 carryover=0
vestingUnits=3 vestingUOM='M'
RETURN accrual,ceiling,carryover,vestingUnits,vestingUOM
/*********************************************************************/
4
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_ACCRUAL_XX_ChildCare
FORMULA TYPE: Global Absence Accrual
DESCRIPTION: This formula returns the accrual for employees enrolled in Child Care
Change History:
Name Date Comments
-----------------------------------------------
TAREK 10-Apr-2015 Initial Version
*******************************************************************************/
ln_accrual = 0 ld_effective_date=PER_REL_ORIGINAL_DATE_OF_HIRE
ld_emp_term_date =PER_REL_ACTUAL_TERMINATION_DATE
accrual = 0
IF (ld_curr_year = ld_hire_year)
THEN (
IF (TO_NUMBER(TO_CHAR(ld_effective_date,'MM')) < 7) THEN
(
accrual = 6
)
IF (TO_NUMBER(TO_CHAR(ld_effective_date,'MM')) >= 7 AND TO_NUMBER(TO_CHAR(ld_effective_date,'MM')) <= 12) THEN
(
accrual = 3
)
5
Fusion Absence Management (Release 9.2) Sample Fast Formulas
)
RETURN accrual,ceiling,carryover,vestingUnits,vestingUOM
/******************************************************************/
6
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_GET_OFFLIEU_INDIVIDUAL_LEAVE_BALANCE
FORMULA TYPE: Global Absence Accrual
DESCRIPTION: This formula returns the leave balance for Off-in-Lieu (Individually earned)
Change History:
Name Date Comments
-----------------------------------------------
L_Leave_Balance = 0
L_Term_Id = IV_TERM_ID
L_Person_Id = IV_PERSON_ID
L_Eff_Dt = IV_EFF_DT
7
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_GET_OFFLIEU_PUBLIC_LEAVE_BALANCE
FORMULA TYPE: Global Absence Accrual
DESCRIPTION: This formula returns the leave balance for Off-in-Lieu (Public Holiday) Change History:
Name Date Comments
-----------------------------------------------
TAREK IBRAHIM 20-Apr-2015 Initial Version
*******************************************************************************/ INPUTS ARE
IV_PERSON_ID,IV_TERM_ID,IV_EFF_DT (DATE)
L_Leave_Balance = 0
ln_off_public_plan_id = 300000001752613 /* Accrual Plan Id for Off-in-Lieu (Public Holiday)*/ L_Term_Id =
IV_TERM_ID
L_Person_Id = IV_PERSON_ID
L_Eff_Dt = IV_EFF_DT
CHANGE_CONTEXTS(ACCRUAL_PLAN_ID = ln_off_public_plan_id,HR_ASSIGNMENT_ID = L_Term_Id,PERSON_ID =
L_Person_Id,EFFECTIVE_DATE =L_Eff_Dt ) (
L_Leave_Balance = GET_ACCRUAL_BALANCE()
)
return L_Leave_Balance
8
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_GET_ANNUAL_LEAVE_BALANCE
FORMULA TYPE: Global Absence Accrual
DESCRIPTION: This formula returns the leave balance for Annual Leave - Non Manager
Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 20-Apr-2015 Initial Version
*******************************************************************************/ INPUTS ARE
IV_PERSON_ID,IV_TERM_ID,IV_EFF_DT (DATE)
ln_accrual = 0
ld_current_date = GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00' (date)) L_Leave_Balance = 0
ln_annual_accrual_plan_id = 300000001752602 /*Accrual Plan Id for Annual Leave Plan (Non- Manager) */
(
L_Leave_Balance = GET_ACCRUAL_BALANCE()
)
return L_Leave_Balance
9
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/*******************************************************************
FORMULA NAME: XX_ANC_XX_ACCMAT_Annual
FORMULA TYPE: Global Absence Accrual Matrix
DESCRIPTION: This sample formula will find the weighted average of the Accrual value based on the number of the
days the employee was eligible in a
particular band.
For example, I an employee has changed from Band 1 to Band 2 on 03-Mar-2014 and accrual value for Band 1 and
Band 2 is 100 and 200 respectively. The formula will return:
ستعثر هذه الصيغة النموذجية على المتوسط المرجح لقيمة االستحقاق بناًء على عدد األيام التي كان الموظف فيها مؤهًال في
فرقة خاصة.
هي2 والنطاق1 وقيمة االستحقاق للنطاق2014- مارس-03 في2 إلى النطاق1 لقد تغيرت موظف من النطاق، على سبيل المثال
سترجع الصيغة. على التوالي200 و100:
accrual =
(100*(number of days employee in Band1) + 200*(number of days Employee in Band 2))/365
Change History:
Name Date Comments
----------------------------------------------------------------------------------------------------------------
---- Ashish Harbhajanka 12-May-2015 Initial Version
----------------------------------------------------------------------------------------------------------------
----
***********************************************************************/
/*=========== DATABASE ITEM DEFAULTS BEGIN =====================*/
10
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/*================ FORMULA SECTION BEGIN =======================*/
ld_band1_end_date = ADD_YEARS(PER_ASG_REL_ORIGINAL_DATE_OF_HIRE,3)
ld_band2_end_date = ADD_YEARS(PER_ASG_REL_ORIGINAL_DATE_OF_HIRE,6)
accrual = IV_ACCRUAL
l_log = ess_log_write('***********************START********************************')
l_log = ess_log_write('PERSON_NUMBER : '|| PER_ASG_PERSON_NUMBER)
l_log = ess_log_write('ld_effective_date : '|| TO_CHAR(ld_effective_date,'DD-MM-YYYY'))
l_log = ess_log_write('ld_band1_end_date : '|| TO_CHAR(ld_band1_end_date,'DD-MM-YYYY')) l_log =
ess_log_write('ld_band2_end_date : '|| TO_CHAR(ld_band2_end_date,'DD-MM-YYYY')) l_log =
ess_log_write('IV_BAND_CHG_BEFVAL1 : '|| TO_CHAR(IV_BAND_CHG_BEFVAL1))
l_log = ess_log_write('IV_BAND_CHG_AFTVAL1 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL1))
l_log = ess_log_write('IV_BAND_CHG_AFTVAL2 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL2))
l_log = ess_log_write('Initial Accrual : '|| TO_CHAR(IV_ACCRUAL))
l_log = ess_log_write('Accrual Period Start Date : '|| TO_CHAR(IV_ACCRUALPERIODSTARTDATE,'DD-MON-RRRR'))
l_log = ess_log_write('Accrual Period End Date : '|| TO_CHAR(IV_ACCRUALPERIODENDDATE,'DD-MON-RRRR')) l_log =
ess_log_write('***********************END********************************')
IF (TO_CHAR(ld_effective_date,'YYYY') = TO_CHAR(ld_band1_end_date,'YYYY')) /*
(TO_CHAR(ld_effective_date,'YYYY') = TO_CHAR(IV_BAND_CHG_DT1,'YYYY')) */
THEN (
l_log = ess_log_write('Within Band 1')
l_no_of_ds1 = DAYS_BETWEEN(ld_band1_end_date,ld_term_start_date) + 1
l_log = ess_log_write('l_no_of_ds1 : '|| TO_CHAR(l_no_of_ds1)) l_no_of_ds2 =
DAYS_BETWEEN(ld_term_end_date,ld_band1_end_date) + 1 l_log = ess_log_write('l_no_of_ds2 : '||
TO_CHAR(l_no_of_ds2)) l_no_of_ds3 = 0
l_log = ess_log_write('IV_BAND_CHG_BEFVAL1 : '|| TO_CHAR(IV_BAND_CHG_BEFVAL1))
l_log = ess_log_write('IV_BAND_CHG_AFTVAL1 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL1))
l_log = ess_log_write('IV_BAND_CHG_AFTVAL2 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL2))
accrual=(l_no_of_ds1*IV_BAND_CHG_BEFVAL1 + l_no_of_ds2 * IV_BAND_CHG_AFTVAL1 + l_no_of_ds3*IV_BAND_CHG_AFTVAL2)/
365 l_log = ess_log_write('Accrual : '|| TO_CHAR(accrual))
)
IF (TO_CHAR(ld_effective_date,'YYYY') = TO_CHAR(ld_band2_end_date,'YYYY')) /*(TO_CHAR(ld_effective_date,'YYYY')
= TO_CHAR(IV_BAND_CHG_DT2,'YYYY'))*/
THEN
(
11
Fusion Absence Management (Release 9.2) Sample Fast Formulas
l_log = ess_log_write('Within Band 2')
l_no_of_ds1 = 0
l_no_of_ds2 = DAYS_BETWEEN(ld_band2_end_date,ld_term_start_date) + 1 l_log = ess_log_write('l_no_of_ds2 : '||
TO_CHAR(l_no_of_ds2))
l_no_of_ds3 = DAYS_BETWEEN(ld_term_end_date,ld_band2_end_date) + 1 l_log = ess_log_write('l_no_of_ds3 : '||
TO_CHAR(l_no_of_ds3))
l_log = ess_log_write('IV_BAND_CHG_BEFVAL1 : '|| TO_CHAR(IV_BAND_CHG_BEFVAL1)) l_log =
ess_log_write('IV_BAND_CHG_AFTVAL1 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL1)) l_log =
ess_log_write('IV_BAND_CHG_AFTVAL2 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL2))
accrual=(l_no_of_ds1*IV_BAND_CHG_BEFVAL1 + l_no_of_ds2 * IV_BAND_CHG_AFTVAL1 + l_no_of_ds3*IV_BAND_CHG_AFTVAL2)/
365 l_log = ess_log_write('Accrual : '|| TO_CHAR(accrual))
)
floored_accrual = FLOOR(accrual)
decimal_accrual = accrual - floored_accrual
/******************************************************************/
12
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_XXPC_ACCMAT_LongServiceLeave
FORMULA TYPE: Global Absence Accrual Matrix
DESCRIPTION: This formula returns the accrual for employees enrolled into Long Service Leave
Change History:
Name Date Comments
---------------------------------------------------------------------------- Ashish Harbhajanka 21-May-2015
Initial Version
*******************************************************************************/
ln_los_years = TRUNC(MONTHS_BETWEEN(ld_effective_date,PER_ASG_REL_DATE_START)/12,2)
ln_cons_5years = FLOOR(PER_TERM_REL_LENGTH_OF_SERVICE/5)
ln_cons_years = FLOOR(PER_TERM_REL_LENGTH_OF_SERVICE) - 10
ln_length_of_service = PER_TERM_REL_LENGTH_OF_SERVICE
lc_emp_addr_state = PER_PER_ADD_REGION2
13
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ln_assignment_id = GET_CONTEXT(HR_ASSIGNMENT_ID,0)
ln_person_id = GET_CONTEXT(PERSON_ID,0)
ln_years_between = TO_NUMBER(TO_CHAR(ld_effective_date,'YYYY')) -
TO_NUMBER(TO_CHAR(PER_ASG_REL_DATE_START,'YYYY'))
ln_div_floor = FLOOR(ln_years_between/5)
ln_above10years = ln_years_between - 10
ln_cons_5years_mod = MOD(ln_above10years,5)
ln_cons_5years_div = FLOOR(ln_above10years/5)
accrual = IV_ACCRUAL
ceiling = IV_CEILING
carryover = IV_CARRYOVER
14
Fusion Absence Management (Release 9.2) Sample Fast Formulas
(
)
) ELSE (
accrual = 162.5
l_log = ess_log_write('Step 2 : ' || TO_CHAR(accrual))
l_log = ess_log_write('Accrual : ' || TO_CHAR(accrual))
IF (ln_years_between = 10 ) THEN
accrual = 487.5
IF (ln_years_between > 10) THEN
accrual = 48.75
)
l_log = ess_log_write('After IF LOOP ')
l_log = ess_log_write('Employee Address State : ' || lc_emp_addr_state) l_log = ess_log_write('Years of
Service : ' || TO_CHAR(ln_years_between)) l_log = ess_log_write('ln_cons_years : ' || TO_CHAR(ln_cons_years))
l_log = ess_log_write('ln_cons_5years : ' || TO_CHAR(ln_cons_5years))
l_log = ess_log_write('ln_cons_5years_mod : ' || TO_CHAR(ln_cons_5years_mod)) l_log =
ess_log_write('ln_cons_5years_div : ' || TO_CHAR(ln_cons_5years_div)) l_log = ess_log_write('Accrual : ' ||
TO_CHAR(accrual))
l_log = ess_log_write('End Processing for Person ID : ' || TO_CHAR(ln_person_id))
l_log = ess_log_write('End Processing for Assignment ID : ' || TO_CHAR(ln_assignment_id))
l_log = ess_log_write('End Processing for : ' || PER_ASG_DISPLAY_NAME)
RETURN accrual,ceiling,carryover
15
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
ld_child_birth_date = TO_DATE('1951-01-01','yyyy-MM-dd')
ld_start_date = TO_DATE('1951-01-01','yyyy-MM-dd')
j = 1
l_new_duration = IV_TOTALDURATION
ln_child_count = 0
ln_rem = MOD(IV_TOTALDURATION,0.5) IF (ln_rem <> 0)
THEN (
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_SG_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.Please change absence
start and end dates accordingly' */
16
Fusion Absence Management (Release 9.2) Sample Fast Formulas
RETURN VALID,ERROR_MESSAGE
CHANGE_CONTEXTS(START_DATE=iv_start_date, END_DATE=iv_end_date) (
i=PER_PER_CONTACT_PERSON_ID.FIRST(-1)
WHILE PER_PER_CONTACT_PERSON_ID.exists(i) LOOP
(
if(PER_PER_CONTACT_CONTACT_TYPE[i] = 'C' or PER_PER_CONTACT_CONTACT_TYPE[i] = 'A')
then
(
ln_child_count = ln_child_count + 1
ld_child_birth_date = PER_PER_CONTACT_DATE_OF_BIRTH[i]
i= i+1
)
if(ln_child_count => 3 ) /*ln_child_count > 3*/ THEN
(valid = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_PATERNITY' /*'This leave is only allowed upto 3 childrens'*/
RETURN valid,ERROR_MESSAGE
)
if (ln_child_count = 0) THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_PAT_0KIDS' /* 'You can only avail this leave if you have dependent/adopted
children' */ RETURN VALID,ERROR_MESSAGE
)
else(
valid='Y'
)
)
CHANGE_CONTEXTS(START_DATE=ld_start_date, END_DATE=IV_START_DATE) (
WHILE ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR.exists(j)
LOOP (
CHANGE_CONTEXTS (ABSENCE_ENTRY_ID = ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR[j]) (
17
Fusion Absence Management (Release 9.2) Sample Fast Formulas
IF (ln_pl_type_id = ANC_ABS_ENTRS_ABSENCE_TYPE_ID) THEN
(
IF (DAYS_BETWEEN(IV_START_DATE,ld_child_birth_date) > 365 OR DAYS_BETWEEN(IV_START_DATE,ld_child_birth_date) <
0) THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_FLEX_FROM_CHILDBIRTH' /* This leave needs to be applied within 1 year of chilbirth */
RETURN VALID,ERROR_MESSAGE
)
)
)
j=j+1
)
)
18
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_Marriage
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula returns the Marriage Leave Criteria. Only workers who are single are allowed to use this leave type.This Leave can be
availed just once
Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 07-Apr-2015 Initial Version
*******************************************************************************/
/*=========== DATABASE ITEM DEFAULTS BEGIN =====================*/
19
Fusion Absence Management (Release 9.2) Sample Fast Formulas
l_start_date=to_date(l_cuurent_year+'/01/01')
l_end_date=to_date(l_cuurent_year+'/12/31')
l_absence_type_id=GET_CONTEXT(ABSENCE_TYPE_ID,0)
l_current_duration=days_between(iv_end_date,iv_start_date)+1
l_days=0
l_days_duration =0
ln_occurence = 1
l_total_days = 0
l_new_duration = IV_TOTALDURATION
lc_marital_status = PER_PER_MARITAL_STATUS
ln_rem =
MOD(IV_TOTALDURATION,0.5) IF
(ln_rem <> 0)
THE
N(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.Please change absence start and
end dates accordingly' */
RETURN VALID,ERROR_MESSAGE
)
CHANGE_CONTEXTS(START_DATE=l_start_date,
END_DATE=l_end_date) (
i=ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR.FIRST(-1)
WHILE
ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR.exists(
i) LOOP
(
CHANGE_CONTEXTS(ABSENCE_ENTRY_ID=ANC_PER_ABS_ENTRS_ABSENCE_EN
TRY_ID_ARR[i]) (
20
Fusion Absence Management (Release 9.2) Sample Fast Formulas
then
(
l_days_duration=ANC_ABS_ENTRS_DURATION
ln_occurence = ln_occurence + 1
)
l_days=l_days_duration+l_days
)
i= ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR.NEXT(I,-1)
)
if(ln_occurence > 1)
THEN
(valid = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_FIRST_MARRIAGE' /*'This Leave is allowed only for the First Legal
Marriage' */ RETURN valid,ERROR_MESSAGE
)
l_total_days = l_days + l_new_duration
if(lc_marital_status <> 'S')
then
(valid='N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_MARRIAGE_ELIG' /*'Only Single and unmarried workers can avail this leave'*/
)
else(
valid='Y'
)
21
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_FlexMaternity
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula returns validates the Flex Maternity Leave entry
Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 05-May-2015 Initial Version
*******************************************************************************/
DEFAULT FOR IV_START_DATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_END_DATE IS '4712/12/31 00:00:00' (date)
DEFAULT_DATA_VALUE for
ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR is 0
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_PERSON_ID IS 0
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_CONTACT_TYPE IS ' '
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_DATE_OF_BIRTH IS '4712/12/31
00:00:00' (date) DEFAULT FOR ANC_ABS_ENTRS_ABSENCE_TYPE_ID is 0
DEFAULT FOR ANC_ABS_MTRNT_ACTUAL_CHILD_BIRTH_DATE IS '4712/12/31
00:00:00' (date) DEFAULT FOR ANC_ABS_MTRNT_ACTUAL_RETURN_DATE IS
'4712/12/31 00:00:00' (date) DEFAULT FOR ANC_ABS_MTRNT_ACTUAL_DURATION IS
112
DEFAULT FOR ANC_ABS_ENTRS_DURATION IS 0
DEFAULT FOR ANC_ABS_TYP_NAME IS ' '
DEFAULT FOR ANC_ABS_ENTRS_START_DATE IS '4712/12/31
00:00:00' (date) DEFAULT FOR ANC_ABS_ENTRS_END_DATE IS
'4712/12/31 00:00:00' (date) DEFAULT FOR
ANC_ABS_ENTRS_APPROVAL_STATUS_CD is ' '
DEFAULT FOR
ANC_ABS_ENTRS_ABSENCE_STATUS_CD is ' '
DEFAULT FOR ANC_ABS_ENTRS_PERSON_ID is 0
lc_resource_type = 'ASSIGN'
ld_period_start_date =
IV_START_DATE
22
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ld_period_end_date = IV_END_DATE
lc_use_sch_asg = 'Y'
lc_use_sch_inh = 'Y'
lc_include_noshift = 'N'
lc_include_calevents = 'N'
lc_calc_units = 'D'
ln_curr_fmla_duration = 0
j=1
k=1
CHANGE_CONTEXTS(START_DATE=iv_start_date,
END_DATE=iv_end_date) (
i=PER_PER_CONTACT_PERSON_ID.FIRST(-1)
WHILE
PER_PER_CONTACT_PERSON_ID.exists(i)
LOOP
(
IF
(PER_PER_CONTACT_CONTACT_TYPE[i] =
'C' ) THEN
23
Fusion Absence Management (Release 9.2) Sample Fast Formulas
(
ln_child_count = ln_child_count + 1
IF ( ld_child_birth_date <
PER_PER_CONTACT_DATE_OF_BIRTH[i]) THEN
ld_child_birth_date = PER_PER_CONTACT_DATE_OF_BIRTH[i]
)
ELS
E
(ln_child_count = ln_child_count)
i= i+1
)
if (ln_child_count = 0)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_MAT_0KIDS' /* 'You can only avail this leave if you have dependent
children' */ RETURN VALID,ERROR_MESSAGE
)
)
CHANGE_CONTEXTS(START_DATE=ld_start_date,
END_DATE=ld_end_date) (
WHILE
ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR.exists(
j) LOOP
(
CHANGE_CONTEXTS (ABSENCE_ENTRY_ID =
ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR[j]) (
CHANGE_CONTEXTS (ABSENCE_TYPE_ID =
ANC_ABS_ENTRS_ABSENCE_TYPE_ID) (
IF ((ANC_ABS_TYP_NAME = lc_mat_8weeks OR ANC_ABS_TYP_NAME = lc_mat_16weeks) AND
(ANC_ABS_ENTRS_ABSENCE_STATUS_CD <>
'ORA_WITHDRAWN'))
24
Fusion Absence Management (Release 9.2) Sample Fast Formulas
THEN (
ln_counter = ln_counter + 1
)
)
j=j+1
)
IF (ln_counter = 0)
THEN (VALID =
'N'
ERROR_MESSAGE = 'XX_ANC_XX_FLEX_FROM_MATERNITY' /* You can only avail this leave after availing Maternity Leave (8 weeks /
16 weeks) */ RETURN VALID, ERROR_MESSAGE)
/*
CHANGE_CONTEXTS (ABSENCE_ENTRY_ID = ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR[ln_counter])
(
IF (ANC_ABS_MTRNT_ACTUAL_CHILD_BIRTH_DATE WAS
DEFAULTED) THEN (VALID = 'N'
ERROR_MESSAGE =
'XX_ANC_XX_FLEX_DATEOFBIRTH' RETURN
VALID, ERROR_MESSAGE)
25
Fusion Absence Management (Release 9.2) Sample Fast Formulas
)
k=k+1
)
)
ln_curr_fmla_duration = GET_PAY_AVAILABILITY
(lc_resource_type, ld_period_start_date,
ld_period_end_date,
lc_use_sch_asg,
lc_use_sch_inh,
lc_include_noshift,
lc_include_calevents,
26
Fusion Absence Management (Release 9.2) Sample Fast Formulas
lc_calc_units)
ln_fmla_total= ln_curr_fmla_duration + ln_fml_count /* May need to add the current absence duration as required */ IF
ln_fmla_total > 56
THEN (VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_FLEX_TOTALDAYS' /* You are only entitled to a maximum of 56 Days of Leaves for this
leave type. */ RETURN VALID, ERROR_MESSAGE)
ELSE (VALID = 'Y')
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_Unpaid
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula validates the Unpaid leave entry for APAC region
Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 13-Apr-2015 Initial Version
Ashish Harbhajanka 26-Jun-2015 Added Validation for Annual Leave Plan (Manager) and Annual Leave Plan (DTC Contract)
**********************************************************************************************************************/
DEFAULT FOR IV_START_DATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_END_DATE IS '4712/12/31 00:00:00' (date)
DEFAULT_DATA_VALUE for
ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR is 0
DEFAULT for PER_ASG_REL_ORIGINAL_DATE_OF_HIRE is '1951/01/01 00:00:00' (date)
DEFAULT FOR ANC_ABS_ENTRS_ABSENCE_TYPE_ID is 0
DEFAULT FOR ANC_ABS_TYP_NAME IS ' '
DEFAULT FOR ANC_ABS_ENTRS_END_DATE IS '4712/12/31 00:00:00'
Manager'
27
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ld_effective_date = IV_START_DATE
ln_person_id =
GET_CONTEXT(PERSON_ID,0) ln_term_id
= GET_CONTEXT(HR_TERM_ID,0)
ln_annual_accrual_plan_id = 300000001752602 /*Accrual Plan Id for Annual Leave Plan - Non Manager*/
ln_off_public_plan_id = 300000001752613 /* Accrual Plan Id for Off-in-Lieu (Public Holiday)*/
ln_off_per_plan_id = 300000001752614 /* Accrual Plan Id for Off-in-Lieu (Individually earned)*/
ln_annual_mgr_accrual_plan_id = 300000001752603 /*Accrual Plan Id for Annual Leave Plan (Manager)
*/
ln_annual_dtc_contract_accrual_plan_id = 300000001752605 /*Accrual Plan Id for Annual Leave Plan (DTC Contract) */
ln_annual_leave_balance = 0
ln_off_public_leave_balance = 0
ln_off_per_leave_balance = 0
ln_annual_mgr_leave_balance = 0
ln_annual_dtc_contract_leave_balance = 0
ln_net_balance = 0
ln_rem =
MOD(IV_TOTALDURATION,0.5) IF
(ln_rem <> 0)
THE
N(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.Please change absence start and
end dates accordingly' */
RETURN VALID,ERROR_MESSAGE
)
SET_INPUT('IV_PERSON_ID', ln_person_id)
28
Fusion Absence Management (Release 9.2) Sample Fast Formulas
SET_INPUT('IV_TERM_ID', ln_term_id)
SET_INPUT('IV_EFF_DT', ld_effective_date)
EXECUTE('FX_ANC_GET_ANNUAL_LEAVE_BALANCE')
ln_annual_leave_balance = GET_OUTPUT('L_Leave_Balance',
0)
SET_INPUT('IV_PERSON_ID', ln_person_id)
SET_INPUT('IV_TERM_ID', ln_term_id)
SET_INPUT('IV_EFF_DT', ld_effective_date)
EXECUTE('FX_ANC_GET_OFFLIEU_PUBLIC_LEAVE_
BALANCE')
ln_off_public_leave_balance = GET_OUTPUT('L_Leave_Balance', 0)
SET_INPUT('IV_PERSON_ID',
ln_person_id)
SET_INPUT('IV_TERM_ID', ln_term_id)
SET_INPUT('IV_EFF_DT',
ld_effective_date)
EXECUTE('FX_ANC_GET_OFFLIEU_INDIVIDUAL_LEAVE_BALANCE')
ln_off_per_leave_balance = GET_OUTPUT('L_Leave_Balance', 0)
SET_INPUT('IV_PERSON_ID', ln_person_id)
SET_INPUT('IV_TERM_ID', ln_term_id)
SET_INPUT('IV_EFF_DT', ld_effective_date)
EXECUTE('FX_ANC_GET_ANNUAL_MGR_LEAVE_B
ALANCE')
ln_annual_mgr_leave_balance = GET_OUTPUT('L_Leave_Balance', 0)
SET_INPUT('IV_PERSON_ID',
ln_person_id)
SET_INPUT('IV_TERM_ID', ln_term_id)
SET_INPUT('IV_EFF_DT',
ld_effective_date)
EXECUTE('FX_ANC_GET_ANNUAL_DTC_CONTRACT_LEAVE_BALANCE')
ln_annual_dtc_contract_leave_balance = GET_OUTPUT('L_Leave_Balance', 0)
29
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ln_annual_dtc_contract_leave_balance
30
Fusion Absence Management (Release 9.2) Sample Fast Formulas
IF (IV_END_DATE <=
ADD_MONTHS(PER_ASG_REL_ORIGINAL_DATE_OF_HIRE,1)) THEN
( VALID = 'Y'
ERROR_MESSAGE
=''
)
else
(
IF (ln_net_balance = 0)
THEN
(VALID = 'Y')
ELSE
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_MSG_UNPAID' /* 'You can only apply this leave after you have exhausted Annual and Off-in-Lieu
Leaves' */
)
)
RETURN VALID, ERROR_MESSAGE
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_SharedParental
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula returns the Shared Parental Leave Criteria. Only workers who have at least one children are
eligible. Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 04-May-2015 Initial Version
*******************************************************************************/
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_PERSON_ID IS 0
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_CONTACT_TYPE IS ' '
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_DATE_OF_BIRTH IS '4712/12/31
00:00:00' (date) DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_DISPLAY_NAME is ' '
DEFAULT FOR GLOBAL_PAY_INTERFACE_EXTRACTION_DATE is
'47121231' DEFAULT_DATA_VALUE for
ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR is 0
DEFAULT FOR ANC_ABS_ENTRS_ABSENCE_TYPE_ID is 0
31
Fusion Absence Management (Release 9.2) Sample Fast Formulas
l_new_duration = IV_TOTALDURATION
ln_child_count = 0
ld_effective_date = GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00'(date))
ln_spl_type_id = GET_CONTEXT(ABSENCE_TYPE_ID,0) /*spl stands for Shared Parental Leave */
ld_child_birth_date = TO_DATE('1951-01-01','yyyy-MM-dd')
ld_start_date = TO_DATE('1951-01-01','yyyy-MM-dd')
j=1
IF (ln_rem <>
0) THEN
(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.Please change absence start and
end dates accordingly' */
RETURN VALID,ERROR_MESSAGE
32
Fusion Absence Management (Release 9.2) Sample Fast Formulas
VALID = 'Y'
CHANGE_CONTEXTS(START_DATE=iv_start_date,
END_DATE=iv_end_date) (
i=PER_PER_CONTACT_PERSON_ID.FIRST(
-1) WHILE
PER_PER_CONTACT_PERSON_ID.exists(i)
LOOP
(
if(PER_PER_CONTACT_CONTACT_TYPE[i] = 'C' or PER_PER_CONTACT_CONTACT_TYPE[i] = 'A')
then
(
ln_child_count = ln_child_count + 1
ld_child_birth_date = PER_PER_CONTACT_DATE_OF_BIRTH[i]
IF ( ld_child_birth_date <
PER_PER_CONTACT_DATE_OF_BIRTH[i]) THEN
ld_child_birth_date = PER_PER_CONTACT_DATE_OF_BIRTH[i]
)
i= i+1
)
if (ln_child_count = 0)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_SHRD_PARENTAL' /* 'Please ensure that you have apply via the Shared Parental Leave Allocation
System and
upload the letter to HR.' */
RETURN VALID,ERROR_MESSAGE
)
else
VALID = 'Y'
)
33
Fusion Absence Management (Release 9.2) Sample Fast Formulas
CHANGE_CONTEXTS(START_DATE=ld_start_date,
END_DATE=IV_START_DATE) (
WHILE
ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR.exists(
j) LOOP
(
CHANGE_CONTEXTS (ABSENCE_ENTRY_ID = ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR[j])
(
IF (ln_spl_type_id =
ANC_ABS_ENTRS_ABSENCE_TYPE_ID) THEN
(
IF (DAYS_BETWEEN(IV_START_DATE,ld_child_birth_date) > 365 OR
DAYS_BETWEEN(IV_START_DATE,ld_child_birth_date) < 0) THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_FLEX_FROM_CHILDBIRTH' /* This leave needs to be applied within 1 year of
chilbirth */ RETURN VALID,ERROR_MESSAGE
)
else
VALID = 'Y'
)
)
j=j+1
)
)
return VALID,ERROR_MESSAGE
/*================ FORMULA SECTION END =======================*/
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_ChildCare
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula returns the Child Care Leave Criteria. Only workers who have at least one children with age less than 7 years are
eligible. Change History:
Name Date Comments
34
Fusion Absence Management (Release 9.2) Sample Fast Formulas
-----------------------------------------------
Ashish Harbhajanka 30-Apr-2015 Initial Version
*******************************************************************************/
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_PERSON_ID IS 0
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_CONTACT_TYPE IS ' '
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_DATE_OF_BIRTH IS '4712/12/31 00:00:00' (date)
DEFAULT_DATA_VALUE FOR
PER_PER_CONTACT_DISPLAY_NAME is ' ' DEFAULT FOR
GLOBAL_PAY_INTERFACE_EXTRACTION_DATE is '47121231'
l_new_duration = IV_TOTALDURATION
ln_child_count = 0
ld_effective_date = GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00'(date))
ld_yngst_child_birth_date = TO_DATE('1951-01-01','yyyy-MM-dd')
IF (ln_rem <>
0) THEN
(
35
Fusion Absence Management (Release 9.2) Sample Fast Formulas
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.Please change absence start and
end dates accordingly' */
RETURN VALID,ERROR_MESSAGE
)
lc_eligible = 'N'
CHANGE_CONTEXTS(START_DATE=iv_start_date,
END_DATE=iv_end_date) (
i=PER_PER_CONTACT_PERSON_ID.FIRST(
-1) WHILE
PER_PER_CONTACT_PERSON_ID.exists(i)
LOOP
(
if(PER_PER_CONTACT_CONTACT_TYPE[i] = 'C' or PER_PER_CONTACT_CONTACT_TYPE[i] = 'A')
then
(
ln_child_count = ln_child_count + 1
ld_child_compare_date = ADD_YEARS(PER_PER_CONTACT_DATE_OF_BIRTH[i],7)
ld_child_birth_date = PER_PER_CONTACT_DATE_OF_BIRTH[i]
36
Fusion Absence Management (Release 9.2) Sample Fast Formulas
i= i+1
)
/*Added by Ashish for Debugging */
if (ln_age > 7)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_CHILD_AGE_LESS7' /* You can only avail this leave if your youngest child is less than 7 years of age.'*/
RETURN VALID,ERROR_MESSAGE
)
else(
valid='Y'
)
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_ExtendedChildCare
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula returns the Extended Child Care Leave Criteria.Only workers who have at least one children within age of 7-12 years are
eligible. Change History:
37
Fusion Absence Management (Release 9.2) Sample Fast Formulas
l_new_duration = IV_TOTALDURATION
ln_child_count = 0
ld_effective_date = GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00'(date))
ld_yngst_child_birth_date = TO_DATE('1951-01-01','yyyy-MM-dd')
ln_no_of_days = 0
ln_age = 0
ld_start_date = TO_DATE('1951-01-01','yyyy-MM-dd')
ld_end_date = TO_DATE('4712-12-31','yyyy-MM-dd')
38
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ln_rem = MOD(l_new_duration,0.5)
IF (ln_rem <>
0) THEN
(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.Please change absence start and
end dates accordingly' */
RETURN VALID,ERROR_MESSAGE
)
CHANGE_CONTEXTS(START_DATE=iv_start_date,
END_DATE=iv_end_date) (
i=PER_PER_CONTACT_PERSON_ID.FIRST(
-1) WHILE
PER_PER_CONTACT_PERSON_ID.exists(i)
LOOP
(
if(PER_PER_CONTACT_CONTACT_TYPE[i] = 'C' or PER_PER_CONTACT_CONTACT_TYPE[i] = 'A')
then
(
ln_child_count = ln_child_count + 1
39
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ln_no_of_days = DAYS_BETWEEN(ld_current_date,ld_yngst_child_birth_date)
ln_age = ROUND(ln_no_of_days/365,2)
)
)
i= i+1
)
if (ln_child_count = 0)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_PAT_0KIDS' /* 'You can only avail this leave if you have dependent/adopted
children' */ RETURN VALID,ERROR_MESSAGE
)
/*
if (1=1)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'Age of youngest child is : '||
TO_CHAR(ln_age) RETURN VALID,ERROR_MESSAGE
)
*/
if (ln_age > 7 and ln_age < 12)
THEN
(
VALID = 'Y'
)
else
(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_CHILD_AGE_7TO12' /* You can only avail this leave if your youngest child is between 7 to 12 years
of age.'*/
RETURN VALID,ERROR_MESSAGE
)
)
40
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_Adoption
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula returns the Adoption Leave Criteria. Only workers who have adopted childrens having age less than a year are
eligible. Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 11-May-2015 Initial Version
*******************************************************************************/
/*=========== DATABASE ITEM DEFAULTS BEGIN
=====================*/ DEFAULT_DATA_VALUE FOR
PER_PER_CONTACT_PERSON_ID IS 0
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_CONTACT_TYPE IS ' '
DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_DATE_OF_BIRTH IS '4712/12/31
00:00:00' (date) DEFAULT_DATA_VALUE FOR PER_PER_CONTACT_DISPLAY_NAME is ' '
DEFAULT FOR GLOBAL_PAY_INTERFACE_EXTRACTION_DATE is '47121231'
DEFAULT for ANC_ABS_ENTRS_ABSENCE_TYPE_ID is 0
DEFAULT for
PER_PER_MARITAL_STATUS is ' '
DEFAULT for
ANC_ABS_ENTRS_DURATION is 0
DEFAULT FOR IV_TOTALDURATION is 0
41
Fusion Absence Management (Release 9.2) Sample Fast Formulas
IV_TOTALDURATION
ln_rem =
MOD(IV_TOTALDURATION,0.5) IF
(ln_rem <> 0)
THE
N(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.Please change absence start and
end dates accordingly' */
RETURN VALID,ERROR_MESSAGE
)
42
Fusion Absence Management (Release 9.2) Sample Fast Formulas
CHANGE_CONTEXTS(START_DATE=iv_start_date,
END_DATE=iv_end_date) (
i=PER_PER_CONTACT_PERSON_ID.FIRST(
-1) WHILE
PER_PER_CONTACT_PERSON_ID.exists(i)
LOOP
(
if(PER_PER_CONTACT_CONTACT_TYPE[i] = 'A')
then
(
ln_child_count = ln_child_count + 1
ld_child_birth_date =
PER_PER_CONTACT_DATE_OF_BIRTH[i] IF
i= i+1
)
if (ln_child_count = 0)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_ADOPTION_0KIDS' /* 'You can only avail this leave if you have adopted
children' */ RETURN VALID,ERROR_MESSAGE
)
43
Fusion Absence Management (Release 9.2) Sample Fast Formulas
if (ln_age > 1)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_CHILD_AGE_LESS1' /* You can only avail this leave if your youngest child is less than a
year old.'*/ RETURN VALID,ERROR_MESSAGE
)
else(
valid='Y'
)
/******************************************************************************
FORMULA NAME: XX_ANC_VALID_Duration
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula checks that the absence duration should either be half/full
day. Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 12-May-2015 Initial Version
*******************************************************************************/
44
Fusion Absence Management (Release 9.2) Sample Fast Formulas
IV_TOTALDURATI
ON
l_new_duration = IV_TOTALDURATION
ln_rem = MOD(l_new_duration,0.5)
IF (ln_rem <>
0) THEN
(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL' /* 'Leave Duration should either be Half/Full Day.E.g.: Full Day (8.45am – 5.45pm / 8am –
5pm etc)E.g.: Half Day (8.45am – 12.45pm or 1.45pm – 5.45pm / 8am – 12pm or 1pm – 5pm etc)' */
RETURN VALID,ERROR_MESSAGE
)
ELS
E(
VALID = 'Y'
)
RETURN VALID,ERROR_MESSAGE
/******************************************************************************
FORMULA NAME: XX_ANC_XXPC_VALID_Duration
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula checks that the absence duration should either be half/full day for
FXPC Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 12-May-2015 Initial Version
*******************************************************************************/
45
Fusion Absence Management (Release 9.2) Sample Fast Formulas
l_new_duration = IV_TOTALDURATION
ln_rem = MOD(l_new_duration,0.5)
IF (ln_rem <>
0) THEN
(
VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_DURCAL_FXPC' /* 'Leave Duration should either be
Half/Full Day*/ RETURN VALID,ERROR_MESSAGE
)
ELS
E(
VALID = 'Y'
)
RETURN VALID,ERROR_MESSAGE
/******************************************************************************
FORMULA NAME: XX_ANC_XX_VALID_Maternity
FORMULA TYPE: Global Absence Entry Validation
DESCRIPTION: This formula returns validates the Maternity Leave Criteria. Allowed only if a child is born within 1 year of leave application date
Change History:
46
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ld_period_start_date = IV_START_DATE
ld_period_end_date = IV_END_DATE
47
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ld_child_birth_date = TO_DATE('1951-01-01','yyyy-MM-dd')
j=1
VALID = 'Y'
CHANGE_CONTEXTS(START_DATE=iv_start_date,
END_DATE=iv_end_date) (
i=PER_PER_CONTACT_PERSON_ID.FIRST(
-1) WHILE
PER_PER_CONTACT_PERSON_ID.exists(i)
LOOP
(
IF
(PER_PER_CONTACT_CONTACT_TYPE[i]
= 'C') THEN
(
ln_child_count = ln_child_count + 1
IF ( ld_child_birth_date <
PER_PER_CONTACT_DATE_OF_BIRTH[i]) THEN
ld_child_birth_date = PER_PER_CONTACT_DATE_OF_BIRTH[i]
)
ELS
E
(ln_child_count = ln_child_count)
i= i+1
)
if (ln_child_count = 0)
THEN
(VALID = 'N'
ERROR_MESSAGE = 'XX_ANC_XX_ERR_MAT_0KIDS' /* 'You can only avail this leave if you have dependent children' */
48
Fusion Absence Management (Release 9.2) Sample Fast Formulas
RETURN VALID,ERROR_MESSAGE
)
)
)
j=j+1
)
)
/******************************************************************************
FORMULA NAME: XX_ANC_XX_PARACC_AnnualXXAssignee
FORMULA TYPE: Global Absence Partial Period Accrual Rate
49
Fusion Absence Management (Release 9.2) Sample Fast Formulas
DESCRIPTION: This formula returns the FTE pro-rated partial period accrual for employees enrolled into Annual Leave plan in Singapore
Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 20-Apr-2015 Initial Version
Ashish Harbhajanka 16-Jun-2015 Changed Accrual Calculation Basis From Hire Date to Assignment Start Date
*******************************************************************************/
accrual = ln_accrual
vestingUnits=1
vestingUOM='M'
50
Fusion Absence Management (Release 9.2) Sample Fast Formulas
RETURN accrual,vestingUnits,vestingUOM
/***************************************************************************
FORMULA NAME: XX_ANC_PARACC_Annual
FORMULA TYPE: Global Absence Partial Period Accrual Rate Formula
DESCRIPTION: This formula returns the accrual for mid-period enrollments and un-enrollments for Annual Leave plan
Change History:
Name Date Comments
-------------------------------------------------------------------------
------ Ashish Harbhajanka 25-Feb-2014 Initial Version
Ashish Harbhajanka 16-Jun-2015 Changed Accrual Calculation Basis From Hire Date to Assignment Start Date
*******************************************************************************/
ld_emp_hire_date=PER_REL_ORIGINAL_DATE_OF_HIRE
ld_emp_hire_date=PER_ASG_REL_DATE_START
ld_emp_term_date
=PER_REL_ACTUAL_TERMINATION_DATE
ld_effective_date = GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00' (date))
ld_term_start_date = TO_DATE('01-01-'||TO_CHAR(ld_effective_date, 'rrrr'),'dd-mm-rrrr')
ld_term_end_date = TO_DATE('31-12-'||TO_CHAR(ld_effective_date, 'rrrr'),'dd-mm-rrrr')
ld_term_duration = DAYS_BETWEEN (ld_term_end_date, ld_term_start_date)
IF (TO_CHAR(ld_effective_date,'MM-YYYY') = TO_CHAR(ld_emp_hire_date,'MM-
YYYY')) THEN
(
51
Fusion Absence Management (Release 9.2) Sample Fast Formulas
ld_participation_start_date = ld_emp_hire_date
ld_participation_end_date = TO_DATE('31-12-'||TO_CHAR(ld_emp_hire_date,'rrrr'),'dd-mm-rrrr')
ld_participation_duration = DAYS_BETWEEN(ld_participation_end_date,ld_participation_start_date)
prorated_accrual = ROUND(IV_ACCRUAL * (ld_participation_duration / ld_term_duration),2)
valid = 'N'
floored_accrual = floor(prorated_accrual)
decimal_accrual = prorated_accrual - floored_accrual
IF (decimal_accrual =
0) THEN
final_accrual = floored_accrual
IF (decimal_accrual > 0 and decimal_accrual <=
0.5) THEN
final_accrual = floored_accrual + 0.5
IF (decimal_accrual >
0.5) THEN
final_accrual = floored_accrual + 1
accrual = final_accrual
ld_participation_start_date = ld_emp_term_date
ld_participation_end_date = TO_DATE('31-12'||TO_CHAR(ld_emp_term_date,'rrrr'),'dd-mm-rrrr')
ld_participation_duration =
DAYS_BETWEEN(ld_participation_end_date,ld_participation_start_date) prorated_accrual =
ROUND(IV_ACCRUAL * (ld_participation_duration / ld_term_duration),2)
52
Fusion Absence Management (Release 9.2) Sample Fast Formulas
floored_accrual = floor(prorated_accrual)
decimal_accrual = prorated_accrual - floored_accrual
IF (decimal_accrual = 0)
THEN
final_accrual = prorated_accrual
IF (decimal_accrual >0 and decimal_accrual <= 0.5)
THEN
decimal_accrual = 0
IF (decimal_accrual >
0.5) THEN
decimal_accrual = 0.5
)
RETURN accrual
/************************************************************************************
FORMULA NAME: XX_ANC_MAT_DURCAL
FORMULA TYPE: Global Absence Type Duration
DESCRIPTION: This sample formula returns the calendar days for Maternity
Leave. Change History:
Name Date Comments
-------------------------------------------------------------------------------------
------- Ashish Harbhajanka 28-Apr-2015 Initial Version
************************************************************************************/
INPUTS ARE IV_START_DATE (date),
IV_END_DATE
(date),
IV_START_TIME,
IV_END_TIME,
53
Fusion Absence Management (Release 9.2) Sample Fast Formulas
IV_TOTALDURATI
ON
/*================ FORMULA SECTION BEGIN
=======================*/ DEFAULT for IV_TOTALDURATION is 0
duration = DAYS_BETWEEN(IV_END_DATE,IV_START_DATE) + 1
/********************************************************************
FORMULA NAME: XX_ANC_AssigneeOTPResident_VESTING_1MONTH
FORMULA TYPE: Global Absence Vesting Period
DESCRIPTION: This sample formula removes the vesting period for Assignee/OTP/Resident
Name Date Comments
--------------------------------------------------------------------------------------------------------
--------- Ashish Harbhajanka 15-Jun-2015 Initial Version
Ashish Harbhajanka 06-Jul-2015 Incorporate Changes Required for 'Global Temporary Assignment'
----------------------------------------------------------------------------------------------------------------
********************************************************************/
/*==============DATABASE ITEM DEFAULTS BEGIN
=====================*/ DEFAULT for PER_ASG_REL_DATE_START
is '1951/01/01 00:00:00' (date)
DEFAULT for PER_ASG_REL_ORIGINAL_DATE_OF_HIRE is '1951/01/01
00:00:00' (date) DEFAULT for PER_PERSON_ENTERPRISE_HIRE_DATE is
'1951/01/01 00:00:00' (date) DEFAULT FOR PER_ASG_ATTRIBUTE5 IS ' '
DEFAULT FOR PER_ASG_ACTION_CODE is ' '
/*==============DATABASE ITEM DEFAULTS ENDS======================*/
/*================== FORMULA SECTION BEGIN =======================*/
IF ((PER_ASG_REL_DATE_START = PER_ASG_REL_ORIGINAL_DATE_OF_HIRE) OR (PER_ASG_ACTION_CODE =
'GLB_TEMP_ASG')) THEN
(
If (PER_ASG_ATTRIBUTE5 =
'Assignee') OR
(PER_ASG_ATTRIBUTE5 = 'OTP')
OR (PER_ASG_ATTRIBUTE5 = 'Resident')
54
Fusion Absence Management (Release 9.2) Sample Fast Formulas
then(
vestingUOM = 'M'
vestingUnits= 0
)
else(
vestingUOM = 'M'
vestingUnits=1
)
)
else
(vestingUOM = 'M'
vestingUnits=1
)
/*=================== FORMULA SECTION END =======================*/
return vestingUOM,vestingUnits
/********************************************************************
FORMULA NAME: XX_ANC_AssigneeOTPResident_VESTING_3MONTHS
FORMULA TYPE: Global Absence Vesting Period
DESCRIPTION: This sample formula removes the vesting period for Assignee/OTP/Resident. Conditionally applies vesting period of 3 month for
first assignment record.
Name Date Comments
--------------------------------------------------------------------------------------------------------
--------- Ashish Harbhajanka 18-Jun-2015 Initial Version
Ashish Harbhajanka 06-Jul-2015 Incorporate Changes Required for 'Global Temporary Assignment'
----------------------------------------------------------------------------------------------------------------
********************************************************************/
/*==============DATABASE ITEM DEFAULTS BEGIN
=====================*/ DEFAULT for PER_ASG_REL_DATE_START
is '1951/01/01 00:00:00' (date)
DEFAULT for PER_ASG_REL_ORIGINAL_DATE_OF_HIRE is '1951/01/01
00:00:00' (date) DEFAULT for PER_PERSON_ENTERPRISE_HIRE_DATE is
'1951/01/01 00:00:00' (date) DEFAULT FOR PER_ASG_ATTRIBUTE5 IS ' '
DEFAULT FOR PER_ASG_ACTION_CODE is ' '
55
Fusion Absence Management (Release 9.2) Sample Fast Formulas
/***************************************************************************
FORMULA NAME:
XX_ANC_ELIG_ASGTYPE_MARSTATUS_Married_NOAssignee_OTP_Resident
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: This formula returns a 'Y' if the employee is married and not a Assignee, OTP, Resident
Change History:
Name Date Comments
---------------------------------------------------------------------------
------ Ashish Harbhajanka 8-May-2015 Initial Version
*******************************************************************************/
Fusion Absence Management (Release 9.2) Sample Fast Formulas
DEFAULT FOR
PER_PER_MARITAL_STATUS_MEANING IS ' '
DEFAULT FOR PER_ASG_ATTRIBUTE5 IS ' '
ELIGIBLE = 'N'
'Y') RETURN
ELIGIBLE
/***************************************************************************
FORMULA NAME:
XX_ANC_ELIG_ASGType_MARSTATUS_Married_NoXXAssignee_OTP_Resident
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: This formula returns a 'Y' if the employee is single and not a Assignee, OTP, Resident
Change History:
Name Date Comments
*******************************************************************************/
Fusion Absence Management (Release 9.2) Sample Fast Formulas
---------------------------------------------------------------------------
------ Ashish Harbhajanka 3-June-2015 Initial Version
*******************************************************************************/
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
DEFAULT FOR
PER_PER_MARITAL_STATUS_MEANING IS ' '
DEFAULT FOR PER_ASG_ATTRIBUTE5 IS ' '
ELIGIBLE = 'N'
'Y') RETURN
ELIGIBLE
/***************************************************************************
FORMULA NAME: XX_ANC_ELIG_ASGType_NoAssignee_OTP_Resident
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: Returns a 'Yes' if the employees are not a Assignee, OTP & Resident
Change History:
Name Date Comments
---------------------------------------------------------------------------------
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
ELIGIBLE = 'Y'
IF ((PER_ASG_ATTRIBUTE5 = 'XX
Resident') OR (PER_ASG_ATTRIBUTE5
= 'XX Assignee') OR
(PER_ASG_ATTRIBUTE5 = 'XX OTP')
OR (PER_ASG_ATTRIBUTE5 = 'Assignee')
OR (PER_ASG_ATTRIBUTE5 = 'OTP')
OR (PER_ASG_ATTRIBUTE5 =
'Resident')) THEN(ELIGIBLE = 'N')
RETURN ELIGIBLE
/***************************************************************************
FORMULA NAME: XX_ANC_ELIG_ASGType_NoFXAssignee_OTP_Resident
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: Returns a Yes for employees who have assignment type as 'XX
Assignee' Change History:
Name Date Comments
---------------------------------------------------------------------------
------ Spencer Lin 8-May-2015 Initial Version
*******************************************************************************/
ELIGIBLE = 'Y'
IF ((PER_ASG_ATTRIBUTE5 = 'XX
Resident') OR (PER_ASG_ATTRIBUTE5
= 'XX Assignee') OR
(PER_ASG_ATTRIBUTE5 = 'XX OTP'))
THEN(ELIGIBLE = 'N')
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
RETURN
ELIGIBLE
/***************************************************************************
FORMULA NAME: XX_ANC_ELIG_OTP_ASSIGN_RESIDENT
FORMULA TYPE: Participation and Rate Eligibility
Formula
DESCRIPTION: Returns a Yes for employees who have assignment type as 'Assignee', 'OTP',
'Resident' Change History:
Name Date
Comments
---------------------------------------------------------------------------
------ Ashish Harbhajanka 8-May-2015 Initial Version
*******************************************************************************/
ELIGIBLE =
'N'
IF ((PER_ASG_ATTRIBUTE5 =
'Resident') OR
(PER_ASG_ATTRIBUTE5 =
'Assignee') OR
(PER_ASG_ATTRIBUTE5 = 'OTP')
)
THEN(ELIGIBLE =
'Y') RETURN
ELIGIBLE
/***************************************************************************
FORMULA NAME: XX_ANC_ELIG_ASGTYPE_XXAssign_Resident_OTP
FORMULA TYPE: Participation and Rate Eligibility
Formula
DESCRIPTION: Returns a Yes for employees who have assignment type as 'XX
Assignee' Change History:
Name Date
Comments
---------------------------------------------------------------------------
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
------ Ashish Harbhajanka 8-May-2015 Initial Version
*******************************************************************************/
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
ELIGIBLE = 'N'
IF ((PER_ASG_ATTRIBUTE5 =
'Resident') OR
(PER_ASG_ATTRIBUTE5 =
'Assignee')) THEN(ELIGIBLE = 'Y')
RETURN ELIGIBLE
/***************************************************************************
FORMULA NAME: XX_ANC_ELIG_ASGTYPE_XXOTP
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: Returns a Yes for employees who have assignment Type as 'XX
OTP' Change History:
Name Date Comments
---------------------------------------------------------------------------
------ Ashish Harbhajanka 15-April-2015 Initial Version
*******************************************************************************/
ELIGIBLE = 'N'
IF (PER_ASG_ATTRIBUTE5 = 'XX
OTP ') THEN(ELIGIBLE = 'Y')
RETURN ELIGIBLE
/***************************************************************************
FORMULA NAME: XX_ANC_ELIG_ASGTYPE_NOAssignee_OTP_Resident
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: Returns a 'Yes' if the employees are not a Assignee, OTP & Resident
Change History:
Name Date Comments
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
---------------------------------------------------------------------------
------ Ashish Harbhajanka 8-May-2015 Initial Version
*******************************************************************************/
ELIGIBLE = 'Y'
IF ((PER_ASG_ATTRIBUTE5 =
'Resident') OR
(PER_ASG_ATTRIBUTE5 =
'Assignee') OR
(PER_ASG_ATTRIBUTE5 = 'OTP')
OR (PER_ASG_ATTRIBUTE5 = 'XX Assignee')
OR (PER_ASG_ATTRIBUTE5 = 'XX OTP')
OR (PER_ASG_ATTRIBUTE5 = 'XX
Resident')) THEN(ELIGIBLE = 'N')
RETURN ELIGIBLE
/***************************************************************************
FORMULA NAME:
XX_ANC_ELIG_ASGTYPE_MARSTATUS_Single_NOAssignee_OTP_Resident
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: This formula returns a 'Y' if the employee is single and not a Assignee, OTP, Resident
Change History:
Name Date Comments
---------------------------------------------------------------------------
------ Ashish Harbhajanka 3-June-2015 Initial Version
*******************************************************************************/
DEFAULT FOR
PER_PER_MARITAL_STATUS_MEANING IS ' '
DEFAULT FOR PER_ASG_ATTRIBUTE5 IS ' '
ELIGIBLE = 'N'
THEN(ELIGIBLE = 'N')
IF ((PER_PER_MARITAL_STATUS_MEANING = 'Single') AND
(PER_ASG_ATTRIBUTE5 = 'XX OTP')) THEN(ELIGIBLE = 'N')
IF ((PER_PER_MARITAL_STATUS_MEANING = 'Single') AND (PER_ASG_ATTRIBUTE5 =
'XX Resident')) THEN(ELIGIBLE = 'N')
ELSE IF ((PER_PER_MARITAL_STATUS_MEANING = 'Single') AND (PER_ASG_ATTRIBUTE5 = 'Assignee'))
THEN(ELIGIBLE = 'Y')
ELSE IF ((PER_PER_MARITAL_STATUS_MEANING = 'Single') AND
(PER_ASG_ATTRIBUTE5 = 'OTP')) THEN(ELIGIBLE = 'Y')
ELSE IF ((PER_PER_MARITAL_STATUS_MEANING = 'Single') AND (PER_ASG_ATTRIBUTE5 = 'Resident'))
THEN(ELIGIBLE = 'Y')
ELSE IF ((PER_PER_MARITAL_STATUS_MEANING = 'Single') AND
(PER_ASG_ATTRIBUTE5 = ' ')) THEN (ELIGIBLE = 'Y')
RETURN ELIGIBLE
/***************************************************************************
FORMULA NAME: XX_ANC_ELIG_HomeState_XXPC
FORMULA TYPE: Participation and Rate Eligibility Formula
DESCRIPTION: Returns a Yes for employees who have Address Region as either of 'New South Wales','Queensland','Western
Australia','Vistoria','South
Australia'
Change History:
Name Date Comments
---------------------------------------------------------------------------
------ Ashish Harbhajanka 20-April-2015 Initial Version
*******************************************************************************/
DEFAULT FOR PER_PER_ADD_REGION2 IS ' '
lc_emp_addr_state = PER_PER_ADD_REGION2
ELIGIBLE = 'N'
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
IF (lc_emp_addr_state = 'New South Wales' OR lc_emp_addr_state = 'Queensland' OR lc_emp_addr_state = 'Western Australia' OR lc_emp_addr_state =
'Victoria' OR lc_emp_addr_state = 'South Australia')
THEN(ELIGIBLE = 'Y')
RETURN ELIGIBLE
/******************************************************************************
FORMULA NAME: XX_ANC_GET_ANNUAL_MGR_LEAVE_BALANCE
FORMULA TYPE: Global Absence Accrual
DESCRIPTION: This formula returns the leave balance for Annual Leave Plan
(Manager) Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 24-Jun-2015 Initial Version
*******************************************************************************/
ln_accrual = 0
(date)) L_Leave_Balance = 0
ln_annual_mgr_accrual_plan_id = 300000001752603 /*Accrual Plan Id for Annual Leave Plan (Manager)
*/ L_Term_Id = IV_TERM_ID
L_Person_Id = IV_PERSON_ID
L_Eff_Dt = IV_EFF_DT
(
L_Leave_Balance = GET_ACCRUAL_BALANCE()
Fusion Absence Management (Release 9.2) Sample Fast Formulas Ashish Harbhajanka
)
return L_Leave_Balance
/******************************************************************************
FORMULA NAME: XX_ANC_GET_ANNUAL_DTC_CONTRACT_LEAVE_BALANCE
FORMULA TYPE: Global Absence Accrual
DESCRIPTION: This formula returns the leave balance for Annual Leave Plan (DTC
Contract) Change History:
Name Date Comments
-----------------------------------------------
Ashish Harbhajanka 24-Jun-2015 Initial Version
*******************************************************************************/
ln_accrual = 0
(date)) L_Leave_Balance = 0
ln_annual_dtc_contract_accrual_plan_id = 300000001752605 /*Accrual Plan Id for Annual Leave Plan (DTC Contract)
*/ L_Term_Id = IV_TERM_ID
L_Person_Id =
IV_PERSON_ID L_Eff_Dt =
IV_EFF_DT
CHANGE_CONTEXTS(ACCRUAL_PLAN_ID = ln_annual_dtc_contract_accrual_plan_id,HR_ASSIGNMENT_ID =
L_Term_Id,PERSON_ID = L_Person_Id,EFFECTIVE_DATE =L_Eff_Dt )
(
L_Leave_Balance = GET_ACCRUAL_BALANCE()
)
return L_Leave_Balance