Default to Assign Pending Action

This formula type is used to identify an interim choice in case of a suspension.

Contexts

The following contexts are available:

  • BUSINESS_GROUP_ID ( ENTERPRISE_ID)
  • EFFECTIVE_DATE
  • HR_ASSIGNMENT_ID
  • PGM_ID
  • PL_ID
  • PL_TYP_ID
  • OPT_ID
  • PERSON_ID
  • LER_ID
  • BENEFIT_RELATION_ID
  • ELIG_PER_ELCTBL_CHC_ID
  • ORGANIZATION_ID

Database Items

Use only the following database items that are available to formulas of this type:

  • Database items based on person’s assignment: HR_ASSIGNMENT_ID AND PERSON_ID

Input Variables

Input variables are available to formulas of this type.

Input variables table

Input Data Type Required Description
BEN_PEN_IV_PRTT_ENRT_RSLT_ID Number N Result ID of the choice that is suspended

Return Variables

The formula can return either:

  • Interim code
  • Interim choice
  • Amount corresponding to the coverage along with an interim electable choice

Please see samples for illustration.

Return variables table

Out Variable Name Data Type Remarks
L_OUTPUT Character

Interim code which can be used arrive at the interim choice.

Possible values are listed below.

CDND : Current - default; new - default

CDNL : Current - default; new - next lower

CDNM : Current - default; new - minimum

CDNN : Current - default; new - nothing

CLND : Current - next lower; new - default

CLNL : Current - next lower; new - next lower

CLNM : Current - next lower; new - minimum

CLNN : Current - next Lower, new - nothing

CMND : Current - minimum; new - apply default

CMNL : Current - minimum; new - next lower

CMNM : Current - minimum; new - minimum

CMNN : Current - minimum, new - nothing

CNND : Current - nothing; new - default

CNNL : Current - nothing; new - next lower

CNNM : Current - nothing; new - minimum

CNNN : Current - nothing; new - nothing

CSND : Current - same; new - default

CSNL : Current - same; new - next lower

CSNM : Current - same; new - minimum

CSNN : Current - same; new – nothing

L_BNFT_AMOUNT NUMBER Benefit amount
L_EPE_ID NUMBER Electable choice

Sample Formula 1:

Formula Name : STU_DEFAULT_TO_ASSIGN_PENDING_ACTION

Formula Type : Default to Assign Pending Action

DEFAULT_DATA_VALUE FOR BEN_EXT_RSLT_BNFT_AMT is 0
DEFAULT_DATA_VALUE FOR BEN_EXT_RSLT_PER_IN_LER_ID is 0
DEFAULT_DATA_VALUE FOR BEN_EXT_RSLT_PRTT_ENRT_RSLT_ID is 0
DEFAULT_DATA_VALUE FOR BEN_EXT_RSLT_PL_NAME is 'NA'
l_eff_dt = GET_CONTEXT(EFFECTIVE_DATE,'1900/01/01 00:00:00'(date))
l_bnft_amt_num_o=0
l_bnft_amt_num_n=0
l_pil_o=0
l_pil_n=0
l_prtt_o=0
l_prtt_n=0
l_pndg_actn='CLNL'
l_debug='NA'
/* main() */
/* get the old benefit amount and pil */
l_eff_dt=add_days(l_eff_dt,-1)
l_debug=ESS_LOG_WRITE(' l_eff_dt: '||to_char(l_eff_dt))
l_debug=ESS_LOG_WRITE(' l_iv_pil: '||to_char(l_iv_pil))
i=1
CHANGE_CONTEXTS(EFFECTIVE_DATE=l_eff_dt)
(
while (BEN_EXT_RSLT_PL_NAME.exists(i) )
loop
(
if (BEN_EXT_RSLT_PL_NAME[i] = 'STU3_Stuller Supplemental Life - Employee')
then
(
l_bnft_amt_num_o=BEN_EXT_RSLT_BNFT_AMT[i]
l_pil_o=BEN_EXT_RSLT_PER_IN_LER_ID[i]
l_prtt_o=BEN_EXT_RSLT_PRTT_ENRT_RSLT_ID[i]
) /* end if */
i=i+1 /* increment loop counter */
) /* end loop */
) /* end change contexts*/
l_debug=ESS_LOG_WRITE(' l_bnft_amt_num_o: '||to_char(l_bnft_amt_num_o))
l_debug=ESS_LOG_WRITE(' l_pil_o: '||to_char(l_pil_o))
l_debug=ESS_LOG_WRITE(' l_prtt_o: '||to_char(l_prtt_o))
/* get the new benefit amount and pil */
l_eff_dt=add_days(l_eff_dt,90)
l_debug=ESS_LOG_WRITE(' l_eff_dt: '||to_char(l_eff_dt))
i=1
CHANGE_CONTEXTS(EFFECTIVE_DATE=l_eff_dt)
(
while (BEN_EXT_RSLT_PL_NAME.exists(i) )
loop
(
if (BEN_EXT_RSLT_PL_NAME[i] = 'STU3_Stuller Supplemental Life - Employee')
then
(
l_bnft_amt_num_n=BEN_EXT_RSLT_BNFT_AMT[i]
l_pil_n=BEN_EXT_RSLT_PER_IN_LER_ID[i]
l_prtt_n=BEN_EXT_RSLT_PRTT_ENRT_RSLT_ID[i]
) /* end if */
i=i+1 /* increment loop counter */
) /* end loop */
) /* end change contexts*/
l_debug=ESS_LOG_WRITE(' l_bnft_amt_num_n: '||to_char(l_bnft_amt_num_n))
l_debug=ESS_LOG_WRITE(' l_pil_n: '||to_char(l_pil_n))
l_debug=ESS_LOG_WRITE(' l_prtt_n: '||to_char(l_prtt_n))
/* conditional logic */
if ( (l_bnft_amt_num_o > 150000)
and (l_bnft_amt_num_n > 150000)
) then
(
if ( l_pil_o <> l_iv_pil ) then
(l_pndg_actn = 'CLNL')
else
(l_pndg_actn ='CSENLNNL')
)
else if ( (l_bnft_amt_num_o < 150000)
and (l_bnft_amt_num_n > 150000)
) then
(
l_pndg_actn = 'CLNL'
)
return l_pndg_actn

Sample Formula 2:

FORMULA Name : MMO_INTERIM_RULE1

FORMULA TYPE : Default to Assign Pending Action

DEFAULT_DATA_VALUE FOR BEN_EPE_ELIG_PER_ELCTBL_CHC_ID_NN is 0
DEFAULT_DATA_VALUE FOR BEN_EPE_PL_NAME_TN is 'NA'
DEFAULT_DATA_VALUE FOR BEN_EPE_OPT_NAME_TN is 'NA'
/* initialization */
L_ELIG_PER_ELCTBL_CHC_ID=345
i=1
/*main()*/
while (BEN_EPE_ELIG_PER_ELCTBL_CHC_ID_NN.exists(i)) loop
(
if ( (BEN_EPE_PL_NAME_TN[i] = 'MMO_SUPP_LIFE_P')
and (BEN_EPE_OPT_NAME_TN[i] = 'MMO_GUARANTEE_ISSUE' )
)
then
( L_ELIG_PER_ELCTBL_CHC_ID = BEN_EPE_ELIG_PER_ELCTBL_CHC_ID_NN[i]
)
/* increment the counter */
i=i+1
) /* end loop */
return L_ELIG_PER_ELCTBL_CHC_ID

Sample Formula 3:

FORMULA NAME : AGIOS_SUPP_EMP_LIFE_INTERIM_LIMIT_FF

FORMULA TYPE : Default to Assign Pending Action

DESCRIPTION : Validates the Employee supplemental life increases for Increment without a certification as long as the increase does not exceed the guaranteed issue.

DEFAULT FOR BEN_PIL_LF_EVT_OCRD_DT is '1951/01/01 00:00:00'(date)
DEFAULT_DATA_VALUE FOR BEN_EPE_ELIG_PER_ELCTBL_CHC_ID_NN is 0
DEFAULT_DATA_VALUE FOR BEN_EPE_PL_NAME_TN is 'WAIVE'
DEFAULT_DATA_VALUE FOR BEN_EPE_CRNTLY_ENRD_FLAG_TN is 'N'
DEFAULT_DATA_VALUE FOR BEN_EPE_CVRD_FLAG_TN is 'N'
DEFAULT_DATA_VALUE FOR BEN_EPE_INTERIM_FLAG_TN is 'N'
DEFAULT_DATA_VALUE FOR BEN_EPE_OPT_NAME_TN is 'NA'
DEFAULT_DATA_VALUE FOR BEN_EPE_ELCTBL_FLAG_TN is 'NA'
DEFAULT_DATA_VALUE FOR PER_HIST_ASG_ASSIGNMENT_ID is 0
DEFAULT_DATA_VALUE FOR PER_HIST_ASG_EFFECTIVE_START_DATE is '1951/01/01 00:00:00'(date)
DEFAULT_DATA_VALUE FOR PER_HIST_ASG_EFFECTIVE_END_DATE is '1951/01/01 00:00:00'(date)
DEFAULT_DATA_VALUE FOR PER_HIST_ASG_ASSIGNMENT_TYPE is 'NA'
DEFAULT_DATA_VALUE FOR PER_HIST_ASG_STATUS_TYPE is 'NA'
DEFAULT_DATA_VALUE FOR PER_HIST_ASG_PRIMARY_FLAG is 'NA'
DEFAULT_DATA_VALUE FOR PER_HIST_ASG_EFFECTIVE_LATEST_CHANGE is 'NA'
Default for l_sal_amount is 0
Default for l_sal_fctr is 0
Default for l_max is 0
default for l_enrld_flag is 'Y'
L_MN_CVG_RQD_AMT = 0 /*Minimum coverage amount*/
L_MX_CVG_ALWD_AMT = 150000 /*Maximum coverage amount*/
L_MX_CVG_INCR_ALWD_AMT = 50000 /*Maximum coverage increment*/
L_MX_CVG_INCR_WCF_ALWD_AMT = 500000 /*Maximum coverage increment with certification*/
L_MX_CVG_WCFN_AMT = 500000 /*Maximum coverage amount with certification*/
l_prev_enrld_amt = '0'
l_prev_enrld_amt1 = '0'
l_prev_enrld_amt_num1 = 0
l_curr_enrld_amt = '0'
l_curr_enrld_amt_num1 = 0
l_new_effective_date = '1951/01/01 00:00:00'(date)
l_actual_eff_date = '1951/01/01 00:00:00'(date)
l_asg_id=1234
l_sal_amount=0
l_sal_fctr=0
l_max = 500000
l_sal_amount1=BEN_FN_GET_CHAR_VALUE(
'CMP_SALARY'
,'SALARY_AMOUNT'
)
l_sal_fctr1=BEN_FN_GET_CHAR_VALUE(
'CMP_SALARY'
,'SALARY_ANNUALIZATION_FACTOR'
)
IF l_sal_amount1 <> 'NO_DATA_FOUND' AND l_sal_amount1 <> ' ' AND l_sal_amount1 <> 'N'
THEN
(
l_sal_amount=to_num(l_sal_amount1)
)
ELSE
(
l_sal_amount = 0
)
IF l_sal_fctr1 <> 'NO_DATA_FOUND' AND l_sal_fctr1 <> ' ' AND l_sal_fctr1 <> 'N'
THEN
(
l_sal_fctr=to_num(l_sal_fctr1)
)
ELSE
(
l_sal_fctr=0
)
IF ( 5 * l_sal_amount * l_sal_fctr ) > 500000
THEN
(
L_MX_CVG_ALWD_AMT = 500000
)
ELSE
(
L_MX_CVG_ALWD_AMT = trunc((5*l_sal_amount * l_sal_fctr)/10000)*10000
)
l_actual_eff_date = GET_CONTEXT(EFFECTIVE_DATE, to_date('1951/01/01 00:00:00'))
l_new_effective_date = ADD_DAYS (l_actual_eff_date, - 1)
l_log_data = ESS_LOG_WRITE ('Start of the formula after initial ')
ret = HR_TRACE('Start Debugging AGIOS_SUPP_EMP_LIFE_INTERIM_LIMIT_FF')
/* get Previous Coverage Amount - Change the contexts since coverage is starting as of the processing end
date */
CHANGE_CONTEXTS(EFFECTIVE_DATE = l_new_effective_date )
(
l_enrld_amt1 = ben_fn_get_char_value( 'BEN_PRTT_ENRT_RSLT'
,'BNFT_AMT'
,'Supplemental Employee Life'
,'Elected'
)
l_enrld_flag = ben_fn_get_char_value(
'BEN_PRTT_ENRT_RSLT'
,'ENROLLED'
,'Supplemental Employee Life'
,'Elected')
l_log_data = ESS_LOG_WRITE (' Previous Supp Life Insured Coverage Amount :' ||l_enrld_amt1)
IF (l_enrld_amt1 <> ' ' AND l_enrld_amt1 <> 'NO_DATA_FOUND' AND l_enrld_amt1 <> 'N')
THEN
(
l_prev_enrld_amt_num1 = to_number(l_enrld_amt1)
)
ELSE
(
l_prev_enrld_amt_num1 = 0
)
)
l_log_data = ESS_LOG_WRITE (' Previous Supp Life Insured Coverage Amount l_prev_enrld_amt_num1: ' ||to_char(l_prev_enrld_amt_num1))
l_new_effective_date = GET_CONTEXT(EFFECTIVE_DATE,to_date('1951/01/01 00:00:00'))
CHANGE_CONTEXTS(EFFECTIVE_DATE = ADD_DAYS(l_new_effective_date,120))
(
l_curr_enrld_amt1 = ben_fn_get_char_value( 'BEN_PRTT_ENRT_RSLT'
,'BNFT_AMT'
,'Supplemental Employee Life'
,'Elected'
)
l_enrld_flag = ben_fn_get_char_value(
'BEN_PRTT_ENRT_RSLT'
,'ENROLLED'
,'Supplemental Employee Life'
,'Elected')
l_log_data = ESS_LOG_WRITE (' Current Supp Life Insured Coverage Amount :' ||l_curr_enrld_amt1)
IF (l_curr_enrld_amt1 <> ' ' AND l_curr_enrld_amt1 <> 'NO_DATA_FOUND' AND l_curr_enrld_amt1 <> 'N')
THEN
(
l_curr_enrld_amt_num1 = to_number(l_prev_enrld_amt1)
)
ELSE
(
l_curr_enrld_amt_num1 = 0
)
)
/* reasign 1 to i */
i=1
l_asg_id = GET_CONTEXT(HR_ASSIGNMENT_ID,1)
CHANGE_CONTEXTS(HR_ASSIGNMENT_ID=l_asg_id)
(
while (BEN_EPE_ELIG_PER_ELCTBL_CHC_ID_NN.exists(i)) loop
(
if ( (BEN_EPE_PL_NAME_TN[i]='Supplemental Employee Life')
and (BEN_EPE_OPT_NAME_TN[i]='Elected')
and (BEN_EPE_ELCTBL_FLAG_TN[i]='Y')
) then
(
/* this will hold the choice id of the (elected) option */
l_elig_per_elctbl_chc_id = BEN_EPE_ELIG_PER_ELCTBL_CHC_ID_NN[i]
)
i=i+1
)
)
if (l_curr_enrld_amt_num1 > 150000)
then
(
if (l_prev_enrld_amt_num1 < 100000) then
(
l_b_bnft_amt = 150000
)
else if (l_prev_enrld_amt_num1 > 100000) then
(
l_b_bnft_amt = l_prev_enrld_amt_num1
)
)
else if (l_curr_enrld_amt_num1<150000) then
(
if (l_prev_enrld_amt_num1>100000) then
(
l_b_bnft_amt = l_curr_enrld_amt_num1
)
else if (l_prev_enrld_amt_num1<100000) then
(
l_b_bnft_amt = 150000
)
)
return l_b_bnft_amt,l_elig_per_elctbl_chc_id