- How do I set up statutory absences for Ireland?
- Set Up Paternity Absences
Set Up Paternity Absences
Create paternity elements, formula result rules for entitlement results, balance feeds, validation formulas based on delivered formulas, entitlement formula, certificates, absence plan and absence type.
To set up calculation of payment for occupational Paternity plan and Paternity benefit:
-
Create an absence element using these details:
- Primary Classification: Absences​
- Secondary Classification: Maternity, Paternity, Parental, Parents or Adoption
-
Create the adoption benefit offset element using these details:
- Primary Classification: Information​
- Input Values: Pay Value, Process Date
Note: This element will capture the calculated value for adoption benefit. This element should have lower processing priority than the absence element for Adoption. -
Create benefit payment element using:
- Primary Classification: Direct Payment​
Note: This element will be used for directly paying the employee the adoption benefit amount in case the employer is entitled to do so. -
Create formula result rules for the <Absence Element> Entitlement
Result.
Create the formula: ORA_HRX_IE_PATERNITY_PAYMENTNote: This is seeded formula for calculating the absence payment and will be invoked from the Entitlement Result formula.
/******************************************************************************** * $Header: * * Formula Name : ORA_HRX_IE_PATERNITY_PAYMENT * * Description : This is seeded formula for calculating the absence payment. * This will be invoked from the Entitlement Result formula. * *********************************************************************************/ DEFAULT FOR PAY_DIR_COMP_MIN_START_DATE IS '0001/01/01 00:00:00' (date) DEFAULT FOR PAY_DIR_COMP_MAX_END_DATE IS '0001/01/01 00:00:00' (date) DEFAULT for PAY_EARN_PERIOD_END is '4712/12/31 00:00:00' (DATE) DEFAULT for PAY_EARN_PERIOD_START is '0001/01/01 00:00:00' (date) DEFAULT for ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER1 is 0 DEFAULT for ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER2 is 0 DEFAULT for ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_DATE1 is '0001/01/01 00:00:00' (date) DEFAULT for ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_DATE2 is '4712/12/31 00:00:00' (date) DEFAULT for ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE1 is 'X' DEFAULT for ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE2 is 'X' INPUTS ARE i_dir_card_id (NUMBER) ,i_dir_comp_id (NUMBER) ,i_factor (NUMBER) ,i_pay_value (NUMBER) ,i_deduction (NUMBER) ,i_unit (NUMBER) paternity_benefit_payment = 0 factor = i_factor pay_value = 0 deduction = i_deduction unit = i_unit L_PROCESS_DATE = '0001/01/01 00:00:00' (date) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_01 - Inside ORA_HRX_IE_PATERNITY_PAYMENT' ) dir_card_id = i_dir_card_id dir_comp_id = i_dir_comp_id l_comp_id = DEDUCTION_COMPONENT_BY_EE l_ded_card_id = DEDUCTION_CARD_BY_EE l_cb_id = GET_CONTEXT(CALC_BREAKDOWN_ID,1) l_person_id = GET_CONTEXT(PERSON_ID,1) l_ORA_HRX_IE_PAT_STD_WKLY_RATE=0 l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_02 - l_cb_id '|| to_char(l_cb_id)) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_03 - l_person_id '|| to_char(l_person_id)) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_04 - dir_card_id '||to_char(dir_card_id)) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_05 - dir_comp_id '||to_char(dir_comp_id)) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_06 - l_comp_id '||to_char(l_comp_id)) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_07 - l_ded_card_id '||to_char(l_ded_card_id)) l_comp_id = DEDUCTION_COMPONENT_BY_EE CHANGE_CONTEXTS(DIR_CARD_COMP_ID = l_comp_id) ( l_abs_min_date = PAY_DIR_COMP_MIN_START_DATE l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_08 l_abs_start_date : ' + to_char(l_abs_min_date) ) ) CHANGE_CONTEXTS(DEDUCTION_CARD_ID = dir_card_id , DIR_CARD_COMP_ID = dir_comp_id) ( l_abs_comp_date = PAY_DIR_COMP_MIN_START_DATE L_PROCESS_DATE = l_abs_comp_date l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_09 l_abs_comp_date : ' +to_char(l_abs_comp_date) ) ) CHANGE_CONTEXTS(DEDUCTION_CARD_ID = dir_card_id , DIR_CARD_COMP_ID = l_comp_id,EFFECTIVE_DATE = l_abs_comp_date) ( l_ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER2 = ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER2 temp = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_09 l_ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER2 : ' +to_char(l_ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER2 )) ) l_eff_date = l_abs_comp_date l_day_of_week = GET_DATE_DAY_OF_WEEK(l_eff_date) if factor > 0 then ( l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_10 l_abs_comp_date : ' +to_char(l_abs_comp_date) ) IF (l_day_of_week = 'SUN') then ( paternity_benefit_payment = 0 l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_11 l_day_of_week : ' +l_day_of_week ) ) else ( if l_ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER2 > 0 then ( l_ORA_HRX_IE_PAT_STD_WKLY_RATE = l_ORA_HRX_IE_ABS_REF_ABS_RECORD_ATTRIBUTE_NUMBER2 l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_12 l_ORA_HRX_IE_PAT_STD_WKLY_RATE OVERRIDE : ' +to_char(l_ORA_HRX_IE_PAT_STD_WKLY_RATE) ) ) else ( CHANGE_CONTEXTS(PART_NAME = 'ORA_HRX_IE_PAT_STD_WKLY_RATE', EFFECTIVE_DATE = l_abs_comp_date) ( SET_INPUT('BASE', 1) EXECUTE('CALL_CALC_VALUE') l_ORA_HRX_IE_PAT_STD_WKLY_RATE = GET_OUTPUT('DED_AMOUNT',0) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_13 l_ORA_HRX_IE_PAT_STD_WKLY_RATE : ' +to_char(l_ORA_HRX_IE_PAT_STD_WKLY_RATE) ) ) ) paternity_benefit_payment = (l_ORA_HRX_IE_PAT_STD_WKLY_RATE/6) paternity_benefit_payment = trunc(paternity_benefit_payment + 0.005, 2) l_wsa_code = 'WSA:'||'ORA_HRX_IE_PAT_STD_DAILY_RATE'||'_'||to_char(l_person_id)||'_'|| to_char(l_cb_id) ||'_'|| to_char(l_eff_date) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_14 l_wsa_code : ' + l_wsa_code ) IF WSA_EXISTS(l_wsa_code,'NUMBER') THEN ( paternity_benefit_payment = 0 ) else ( WSA_SET('WSA:'||'ORA_HRX_IE_PAT_STD_DAILY_RATE'||'_'||to_char(l_person_id)||'_'||to_char(l_cb_id)||'_'||to_char(l_eff_date),paternity_benefit_payment) l_log = PAY_INTERNAL_LOG_WRITE('ORA_HRX_IE_PATERNITY_PAYMENT_15 Set paternity_benefit_payment OUTPUT : ' + to_char(paternity_benefit_payment) ) ) ) pay_value = paternity_benefit_payment ) else ( pay_value = 0 ) RETURN pay_value,L_PROCESS_DATE -
Modify the formula <Absence Element> Entitlement Result to incorporate logic
for occupational payment and benefit payment and add the following code after
this line:
l_log = PAY_INTERNAL_LOG_WRITE('[<Absence Element>_ENTITLEMENT_RESULT] - Absence Override Check Printer OUTPUT : '|| out_ovrd_check_printer)That is,L_paternity_benefit_payment =0 IF IS_EXECUTABLE('GIKUMARI_IE_PATERNITY_PAYMENT') THEN ( L_paternity_benefit_payment =0 SET_INPUT ('i_dir_card_id', dir_card_id) SET_INPUT ('i_dir_comp_id', dir_comp_id) SET_INPUT ('i_factor', factor) SET_INPUT ('i_pay_value', pay_value) SET_INPUT ('i_deduction', deduction) SET_INPUT ('i_unit', unit) EXECUTE('GIKUMARI_IE_PATERNITY_PAYMENT') L_paternity_benefit_payment = GET_OUTPUT('pay_value', 0) l_process_date = GET_OUTPUT('L_PROCESS_DATE', l_dummy_date) ) IF pay_value = 0 THEN ( unit = 0 )Note: Replace the formula IE_PATERNITY_PAYMENT in the above code with the formula created in step 4. Modify Return Statements to include additional variables i.e.:L_paternity_benefit_payment,l_process_dateFor example: RETURN unit ,reduce_type , pay_value ,deduction , net_pay , dir_comp_id,dir_card_id , rate,ded_amount_rate,factor,out_expedite_flag,out_creator_type,out_creator_id,l_pay_unrounded,l_ded_unrounded,L_paternity_benefit_payment,l_process_date - Create formula result rules for the Element <Absence Element> Entitlement Result.
- Create calculation factor for the element <Absence Element> Entitlement Result for the value definition Paternity Benefit Standard Weekly Rate.
- Create a balance feed benefit offset element for the balance Adoption Benefit Offset.
- Create balance feed benefit payment element (Both Regular and Retro) for the balance Adoption Benefit Payment.
-
Create a validation formula based on a delivered seeded formula: IE
Adoption Absence Validation and configure warnings for these
scenarios:
- Minimum Duration
- Maximum Duration
-
Create an entitlement formula based on a documented sample formula for
entitlement.
Note: This sets the entitlement limits and generates a certificate whenever the required Certificate is marked as Not Received.
/************************************************************************ FORMULA NAME: IE_PAT_ENTITLEMENT FORMULA TYPE: Global Absence Plan Entitlement DESCRIPTION : IE Paternity Absence Entitlement Formula ************************************************************************/DEFAULT FOR IV_START_DATE IS '0001/01/01 00:00:00' (DATE) DEFAULT FOR IV_END_DATE IS '4712/12/31 00:00:00' (DATE) DEFAULT for IV_TOTALDURATION is 0 DEFAULT for IV_START_DURATION is 0 DEFAULT for IV_END_DURATION is 0 DEFAULT for IV_ACTUALCHILDBIRTHDATE is '4712/12/31 00:00:00' (date) DEFAULT for IV_ACTUALSTARTDATE is '4712/12/31 00:00:00' (date) DEFAULT for IV_ACTUALENDDATE is '4712/12/31 00:00:00' (date) DEFAULT for IV_EXPECTEDCHILDBIRTHDATE is '4712/12/31 00:00:00' (date) DEFAULT for IV_PLANNEDSTARTDATE is '4712/12/31 00:00:00' (date) DEFAULT for IV_PLANNEDENDDATE is '4712/12/31 00:00:00' (date) DEFAULT FOR IV_MATCHING_DATE IS '0001/01/01 00:00:00' (DATE) DEFAULT FOR IV_NOTIFICATION_DATE IS '0001/01/01 00:00:00' (DATE) DEFAULT FOR IV_UI_PER_CERT_ID is ' ' DEFAULT FOR IV_UI_ABS_CERT_ID is ' ' DEFAULT FOR IV_UI_CERT_TYPE is ' ' DEFAULT FOR IV_UI_CERT_REVPAYSTART_DATE is '4712/12/31 00:00:00' (date) DEFAULT FOR IV_UI_CERT_REVPAYEND_DATE is '4712/12/31 00:00:00' (date) DEFAULT FOR IV_UI_CERT_REVPAY_FACTOR is 0 DEFAULT FOR IV_UI_CERT_CREATION_TYPE is ' ' DEFAULT FOR IV_UI_CERT_STATUS is ' ' DEFAULT FOR ANC_ABS_ENTR_CERTS_STATUS_ARR is EMPTY_TEXT_NUMBER DEFAULT_DATA_VALUE for ANC_ABS_ENTR_CERTS_STATUS_ARR is ' ' DEFAULT FOR ANC_ABS_CERTS_INFORMATION1_ARR is EMPTY_TEXT_NUMBER DEFAULT_DATA_VALUE for ANC_ABS_CERTS_INFORMATION1_ARR is ' ' DEFAULT FOR ANC_ABS_CERTS_NAME_ARR is EMPTY_TEXT_NUMBER DEFAULT_DATA_VALUE for ANC_ABS_CERTS_NAME_ARR is ' ' DEFAULT FOR ANC_ABS_ENTR_CERTS_REV_PAY_START_DT_ARR is EMPTY_DATE_NUMBER DEFAULT_DATA_VALUE for ANC_ABS_ENTR_CERTS_REV_PAY_START_DT_ARR is '4712/12/31 00:00:00' (DATE) DEFAULT FOR ANC_ABS_ENTR_CERTS_REV_PAY_END_DT_ARR is EMPTY_DATE_NUMBER DEFAULT_DATA_VALUE for ANC_ABS_ENTR_CERTS_REV_PAY_END_DT_ARR is '4712/12/31 00:00:00' (DATE) DEFAULT FOR LOC_NUMBER_ARRAY IS EMPTY_NUMBER_TEXT DEFAULT FOR LOC_STRING_ARRAY IS EMPTY_TEXT_TEXT DEFAULT FOR LOC_DATE_ARRAY IS EMPTY_DATE_TEXT DEFAULT FOR LOC_API_SKIP is 'N' DEFAULT FOR IV_ATTRIBUTE_1 is 'X' DEFAULT FOR IV_ATTRIBUTE_2 is 'X' DEFAULT FOR IV_ATTRIBUTE_DATE1 is '4712/12/31 00:00:00' (date) DEFAULT FOR IV_ATTRIBUTE_DATE2 is '4712/12/31 00:00:00' (date) DEFAULT FOR IV_ATTRIBUTE_NUMBER1 is 0 DEFAULT FOR IV_ATTRIBUTE_NUMBER2 is 0 INPUTS ARE IV_START_DATE,IV_END_DATE ,IV_TOTALDURATION,IV_START_DURATION,IV_END_DURATION, IV_ACTUALCHILDBIRTHDATE,IV_ACTUALSTARTDATE,IV_ACTUALENDDATE,IV_EXPECTEDCHILDBIRTHDATE, IV_PLANNEDSTARTDATE,IV_PLANNEDENDDATE,IV_INFORMATION_DATE1,IV_INFORMATION_DATE2,IV_INFORMATION_DATE3,IV_INFORMATION_DATE4,IV_MATCHING_DATE, IV_NOTIFICATION_DATE,IV_UI_PER_CERT_ID,IV_UI_ABS_CERT_ID,IV_UI_CERT_TYPE,IV_UI_CERT_REVPAYSTART_DATE,IV_UI_CERT_REVPAYEND_DATE,IV_UI_CERT_REVPAY_FACTOR,IV_UI_CERT_CREATION_TYPE,IV_UI_CERT_STATUS,IV_ATTRIBUTE_1,IV_ATTRIBUTE_2,IV_ATTRIBUTE_DATE1,IV_ATTRIBUTE_DATE2,IV_ATTRIBUTE_NUMBER1,IV_ATTRIBUTE_NUMBER2 l_dummy = ess_log_write( 'PAT_Entitlement >> Start of Formula') l_trunc_eff_date = TRUNC(GET_CONTEXT(EFFECTIVE_DATE,'0001/01/01' (date))) IF IV_EXPECTEDCHILDBIRTHDATE WAS NOT DEFAULTED THEN ( l_placement_date = IV_EXPECTEDCHILDBIRTHDATE ) IF IV_START_DATE WAS NOT DEFAULTED THEN ( l_start_date = IV_START_DATE ) IF IV_END_DATE WAS NOT DEFAULTED THEN ( l_end_date = IV_END_DATE ) IF IV_ACTUALCHILDBIRTHDATE WAS NOT DEFAULTED THEN ( l_placement_date = IV_ACTUALCHILDBIRTHDATE ) IF IV_ACTUALSTARTDATE WAS NOT DEFAULTED THEN ( l_start_date = IV_ACTUALSTARTDATE ) IF IV_ACTUALENDDATE WAS NOT DEFAULTED THEN ( l_end_date = IV_ACTUALENDDATE ) LOC_API_SKIP = 'N' l_cert_index = 1 band1name = 'Band1Pay' band1payfactor = 100 band1entitlement = 14 band2name = 'Band2Pay' band2payfactor = 0 band2entitlement = 9999 l_cert_id_being_changed = IV_UI_ABS_CERT_ID l_cert_status = IV_UI_CERT_STATUS l_altcd_of_changed_cert = 'XYZ' CERT_NAMES=EMPTY_TEXT_NUMBER CERT_START_DATES=EMPTY_DATE_NUMBER CERT_END_DATES=EMPTY_DATE_NUMBER CERT_COMMENTS=EMPTY_TEXT_NUMBER /* In case certified is being touched then get certificate details */ IF l_cert_id_being_changed != ' ' THEN ( l_altcd_of_changed_cert = GET_VALUE_SET('ORA_HRX_IE_CERT_ALTCD' ,'|=CURRENT_CERT_ID='||l_cert_id_being_changed ) ) /*** Start of section for paternity certificate ***/ l_paternity_certificate_received = 'NO' l_paternity_certificate_received = IV_ATTRIBUTE_1 /* start if clause paternity certificate */ IF l_paternity_certificate_received = 'YES' THEN ( l_dummy = ess_log_write( 'l_paternity_certificate_received '||l_paternity_certificate_received) ) else ( l_create = 'N' l_cert_start_date = l_start_date l_cert_end_date = l_end_date IF ( l_altcd_of_changed_cert = 'XYZ' ) THEN l_create = 'Y' ELSE ( IF ( l_altcd_of_changed_cert = 'CERT300100736707725' ) THEN l_create = 'N' ELSE IF ( l_altcd_of_changed_cert != 'XYZ' ) THEN ( l_create = 'Y' l_array_index=ANC_ABS_CERTS_NAME_ARR.FIRST(-1) while (ANC_ABS_CERTS_NAME_ARR.exists(l_array_index)) loop ( if(TRUNC(ANC_ABS_ENTR_CERTS_REV_PAY_START_DT_ARR[l_array_index])= TRUNC(l_cert_start_date) and (TRUNC(ANC_ABS_ENTR_CERTS_REV_PAY_END_DT_ARR[l_array_index]) = TRUNC(l_cert_end_date)) and (ANC_ABS_ENTR_CERTS_STATUS_ARR[l_array_index] = 'V') and (ANC_ABS_CERTS_NAME_ARR[l_array_index]= 'GIKUMARI_IE_NO_PAT_CERT_IE')) THEN ( l_create = 'N' /* we have found an existing voided cert so don't create */ ) l_array_index=ANC_ABS_CERTS_NAME_ARR.NEXT(l_array_index,-1) ) /** end while **/ ) ) IF ( l_create = 'Y' ) THEN ( CERT_NAMES[l_cert_index] = 'GIKUMARI_IE_NO_PAT_CERT' CERT_COMMENTS[l_cert_index] = 'Non receipt of paternity certificate leads to noneligibility for occupational absence payment.' CERT_START_DATES[l_cert_index] = l_cert_start_date CERT_END_DATES[l_cert_index] = l_cert_end_date l_cert_index = l_cert_index + 1 RETURN band1name, band1payfactor, band1entitlement,band2name, band2payfactor, band2entitlement,CERT_NAMES,CERT_START_DATES,CERT_END_DATES,CERT_COMMENTS ) ) /** end of if clause paternity certificate **/ RETURN band1name, band1payfactor, band1entitlement,band2name, band2payfactor, band2entitlement,CERT_NAMES,CERT_START_DATES,CERT_END_DATES,CERT_COMMENTSNote: Please replace the variable name in the code above with the actual value in the column of the table ANC_ABS_CERTIFICATIONS_f mentioned here for the certificate created: - Create a certificate for Certificate Not Received.
-
Configure ANC_PER_ABS_ENTRIES_DFF to add the fields:
- Certificate Received
- Weekly Rate Override
Note: Currently, there are six database items for retrieving data in Oracle Payroll related to the segments of: ANC_PER_ABS_ENTRIES_DFF i.e. ATTRIBUTE_1, ATTRIBUTE_2, ATTRIBUTE_DATE1, ATTRIBUTE_DATE2, ATTRIBUTE_NUMBER1 and ATTRIBUTE_NUMBER2. It's recommended to use any one of these segments for the configuration. - Create an Absence Plan and attach it with the entitlement formula.
- Create an Absence Type and attach it with the validation formula and certificate.