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