Sample Formula to Accurately Derive the Qualifying Scheme
You can use this sample formula to accurately derive or fetch the qualifying pension scheme.
FORMULA NAME: PENSION SCHEME FOR AUTOMATIC ENROLMENT
FORMULA TYPE: Oracle Payroll / Calculation Utility
DESCRIPTION :
Change History:
Name Date Comments
-------------------------------------------------------------------------
*************************************************************************/
/* PSFAE */
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: ****** BEGIN')
i_pae_comp_id = GET_CONTEXT(DIR_CARD_COMP_ID,1)
l_effective_date = GET_CONTEXT(EFFECTIVE_DATE,'0001/01/01 00:00:00' (date))
l_date_earned = GET_CONTEXT(DATE_EARNED,'0001/01/01 00:00:00' (date))
l_eligible_scheme = 'X'
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: context : DIR_CARD_COMP_ID :' || to_char(i_pae_comp_id))
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: context : EFFECTIVE_DATE :' || to_char(l_effective_date))
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: context : DATE_EARNED :' || to_char(l_date_earned))
change_contexts( DIR_CARD_COMP_ID = DEDUCTION_COMPONENT_BY_EE )
(
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: DIR_CARD_COMP_ID: '||to_char(DEDUCTION_COMPONENT_BY_EE))
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: PAE Component Terms count : ' || to_char(ALL_TERMS_LINK_TO_DEDUCTION_COMPONENT.count))
/* Find the terms liked to the PAE component */
IF ALL_TERMS_LINK_TO_DEDUCTION_COMPONENT.exists(1) THEN
(
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: ****** 1')
t = ALL_TERMS_LINK_TO_DEDUCTION_COMPONENT.FIRST(-1)
WHILE(ALL_TERMS_LINK_TO_DEDUCTION_COMPONENT.exists(t)) LOOP
(
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: PAE Term ID : ' || to_char(ALL_TERMS_LINK_TO_DEDUCTION_COMPONENT[t]))
change_contexts(PAYROLL_TERM_ID = ALL_TERMS_LINK_TO_DEDUCTION_COMPONENT[t])
(
/* Find the assignment for the current term */
a = RUN_INCLUDED_PAYROLL_ASGS_FOR_TERM.FIRST(-1)
while RUN_INCLUDED_PAYROLL_ASGS_FOR_TERM.exists(a) loop
(
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: PAYROLL_ASSIGNMENT_ID: '||to_char(RUN_INCLUDED_PAYROLL_ASGS_FOR_TERM[a]))
change_contexts(PAYROLL_ASSIGNMENT_ID = RUN_INCLUDED_PAYROLL_ASGS_FOR_TERM[a])
(
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: ASG_HR_ASG_ID: '||to_char(ASG_HR_ASG_ID))
/* Fetch the PPG value */
call_formula('CUSTOM_GET_PPG',
l_effective_date > 'P_EFFECTIVE_DATE',
ASG_HR_ASG_ID > 'P_ASSIGNMENT_ID',
l_eligible_scheme < 'r_segment1' default 'X'
)
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: l_eligible_scheme: '||l_eligible_scheme)
)
IF l_eligible_scheme <> 'X' THEN
(
EXIT
)
a = RUN_INCLUDED_PAYROLL_ASGS_FOR_TERM.NEXT(a, -1)
)
)
IF l_eligible_scheme <> 'X' THEN
(
EXIT
)
t = ALL_TERMS_LINK_TO_DEDUCTION_COMPONENT.NEXT(t, -1)
)
)
/* ******************************************************************
custom code to handle scenarios where no terms are linked.
****************************************************************** */
)
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: ****** 3')
/* ******************************************************************
custom code to fetch the QPS element_type_id goes here.
****************************************************************** */
if l_eligible_scheme <> 'X' then
QPS_ID=4
else QPS_ID=6
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: QPS_ID: '||to_char(QPS_ID))
log = PAY_INTERNAL_LOG_WRITE('PSFAE::: ****** END')
return QPS_ID