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 | 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.
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