選択後編集
このFormulaタイプは、登録時にルールを強制するために使用できます。 例: 配偶者または子のライフ・プランに登録するときに、基本ライフ・プランに登録します。
コンテキスト
このタイプのFormulaでは、次のようなコンテキストを利用できます。
- BUSINESS_GROUP_ID ( ENTERPRISE_ID)
- EFFECTIVE_DATE
- HR_ASSIGNMENT_ID
- PERSON_ID
- LER_ID
- ORGANIZATION_ID
- JURISDICTION_CODE
- PGM_ID
- PL_ID
- PL_TYP_ID
- OPT_ID
- LER_ID
データベース・アイテム
このタイプのFormulaで使用可能な次のデータベース・アイテムのみを使用します。
- 表の属性列を除くすべての列: ben_ler_f、ben_pgm_f、ben_pl_f、ben_opt_f、ben_pl_typ_f
- 個人のアサイメントに基づくデータベース・アイテム- HR_ASSIGNMENT_IDおよびPERSON_ID
入力変数
このタイプのFormulaでは入力変数を使用できません。
戻り変数
戻り変数には事前定義の名前を使用します。 このタイプのFormulaでは、次のような戻り変数を利用できます。
戻り値 | データ型 | 必須 | 摘要 |
---|---|---|---|
SUCCESSFUL | 文字 | Y | YまたはN |
ERROR_MESSAGE | 文字 | Y | 表示されるエラー・メッセージ |
エラー
他の出力値が返された場合、加入プロセスはBEN_91329_FORMULA_RETURNでエラーになります。
サンプルFormula 1:
Formula名: BEN_POST_ELEC_EDIT
Formulaタイプ: 選択後Formula
説明: 個人が配偶者補足を選択する場合、個人がプラン「基本生命」にも登録されていることを検証します。 このFormulaは、福利厚生シード済Formula関数(ben_fn_get_char_value)に依存します。
default for l_enrld is 'Y'
default for l_dpnt_enrld1 is 'Y'
default for l_dpnt_enrld2 is 'Y'
SUCCESSFUL = 'Y'
ERROR_MESSAGE=' '
l_enrld = ben_fn_get_char_value(
'BEN_PRTT_ENRT_RSLT'
,'ENROLLED'
,'Spousal Supplemental'
,'NA'
)
l_dpnt_enrld1 = ben_fn_get_char_value(
'BEN_PRTT_ENRT_RSLT'
,'ENROLLED'
,'Basic_Life'
,'Lifex1'
)
l_dpnt_enrld2 = ben_fn_get_char_value(
'BEN_PRTT_ENRT_RSLT'
,'ENROLLED'
,'Basic_Life'
,'Lifex2'
)
If ( l_enrld = 'Y' and l_dpnt_enrld1='N' and l_dpnt_enrld2='N' ) then (SUCCESSFUL='N'
ERROR_MESSAGE = 'Election to any option within plan Spousal Supplemental, you should also enroll in plan Basic_Life.')
return SUCCESSFUL,ERROR_MESSAGE
サンプルFormula 2:
Formula名: POSTELECTIONEDIT_GREEN_COMPANY
Formulaタイプ: DB配列アイテムを使用する選択後編集
説明: 個人がプラン名PPO (エリア外)を選択する場合、個人もプランAetna PPOに登録されていることを検証します。 「はい」の場合は、登録保存後の編集に「Y」を返します。 そうでない場合は、「N」(エラー条件)を返します。
DEFAULT_DATA_VALUE for BEN_PEN_PL_NAME_TN is 'My-Default'
default for l_enrolled is 'N'
default for l_dpnt_enrolled is 'N'
default for i is 1
default for SUCCESSFUL is 'Y'
default for ERROR_MESSAGE is ' '
/*---------------------------------*/
SUCCESSFUL='Y'
ERROR_MESSAGE=' '
i=1
l_enrolled='N'
l_dpnt_enrolled='N'
while BEN_PEN_PL_NAME_TN.exists(i) loop
(
if BEN_PEN_PL_NAME_TN[i]='PPO (Out of Area)' then (l_enrolled='Y')
if BEN_PEN_PL_NAME_TN[i]='Aetna PPO' then
(l_dpnt_enrolled='Y')
i=i+1
)
if l_enrolled='Y' and l_dpnt_enrolled='N' then
(SUCCESSFUL='N'
ERROR_MESSAGE='Election to PPO (Out of Area) requires enrt in Aetna PPO.'
)
return SUCCESSFUL,ERROR_MESSAGE
サンプルFormula 3:
Formulaタイプ: 選択後編集
説明: 配偶者/ドメスティック・パートナが同じ組織で働いている場合、個人が参加者または扶養家族として登録されていることを確認します。
DEFAULT_DATA_VALUE FOR PER_PER_CONT_REL_CONTACT_TYPE IS 'NA'
DEFAULT_DATA_VALUE FOR PER_PER_CONT_REL_CONTACT_PERSON_ID IS -99
DEFAULT_DATA_VALUE FOR BEN_EXT_RSLT_PL_NAME IS 'NA'
l_couple_flag = 'N'
l_sp_dp_id = 0
SUCCESSFUL = 'Y'
ERROR_MESSAGE = ' '
i =1
WHILE (PER_PER_CONT_REL_CONTACT_TYPE.EXISTS(i))
LOOP
(
IF ((PER_PER_CONT_REL_CONTACT_TYPE[i] = 'S') OR (PER_PER_CONT_REL_CONTACT_TYPE[i] = 'DP')) THEN
(
l_sp_dp_id = PER_PER_CONT_REL_CONTACT_PERSON_ID[i]
)
i = i + 1
)
i = 1
CHANGE_CONTEXTS(PERSON_ID = l_sp_dp_id)
(
WHILE(BEN_EXT_RSLT_PL_NAME.EXISTS(i))
LOOP
(
IF ( BEN_EXT_RSLT_PL_NAME[i] = 'Dependent Life Insurance - Spouse/DP' )
THEN
( l_couple_flag = 'Y'
)
/* the dependent has enrolled the participant */
i = i + 1
)
)
IF (l_couple_flag = 'Y')
THEN
(
SUCCESSFUL = 'N'
ERROR_MESSAGE = 'You cannot enroll in Life Insurance as you are already covered in Dependent Life Insurance - Spouse/DP under your spouse'
)
RETURN SUCCESSFUL, ERROR_MESSAGE
サンプルFormula 4:
Formulaタイプ: 選択後編集
DEFAULT_DATA_VALUE for BEN_PEN_PL_NAME_TN is 'My-Default'
DEFAULT_DATA_VALUE for BEN_PEN_OPT_NAME_TN is 'My-Default'
DEFAULT FOR BEN_PIL_LF_EVT_OCRD_DT is '1950/01/01 00:00:00'(date)
DEFAULT FOR BEN_LER_NAME is 'abc'
SUCCESSFUL='N'
ERROR_MESSAGE=' '
i=1
l_plan1_enrld='N'
l_plan2_enrld='N'
l_new_effective_date = GET_CONTEXT(EFFECTIVE_DATE,to_date('1951/01/0100:00:00') )
l_person_id = GET_CONTEXT(PERSON_ID,0 )
l_last_day = '1950/01/01 00:00:00'(date)
l_ler_name = BEN_LER_NAME
l_lf_evt_ocrd_dt = BEN_PIL_LF_EVT_OCRD_DT
l_new_effective_date = l_lf_evt_ocrd_dt
l_log_data = ESS_LOG_WRITE( 'Effective Date = '||to_char(l_new_effective_date))
ERROR_MESSAGE = to_text(l_new_effective_date)||' : '
CHANGE_CONTEXTS(EFFECTIVE_DATE = l_new_effective_date)
(
while BEN_PEN_PL_NAME_TN.exists(i) loop
(
if (BEN_PEN_PL_NAME_TN[i] = 'Voluntary Child Life' ) then
(
l_plan1_enrld= 'Y'
ERROR_MESSAGE = 'Vol Life : '
l_log_data = ESS_LOG_WRITE('Employee has elected Voluntary Spouse Life')
)
if (BEN_PEN_PL_NAME_TN[i] = 'Supplemental Employee Life') then
(
l_plan2_enrld= 'Y'
ERROR_MESSAGE = ERROR_MESSAGE||'Supp Life : '
l_log_data = ESS_LOG_WRITE('Employee has elected Supplemental Employee Life')
)
i=i+1
)
)
IF (l_plan1_enrld = 'Y') THEN
(
l_log_data = ESS_LOG_WRITE('Employee has elected Voluntary Child Life')
IF (l_plan2_enrld= 'Y') THEN
(
l_log_data = ESS_LOG_WRITE('Employee has elected Supplemental Employee Life')
SUCCESSFUL='Y'
return SUCCESSFUL,ERROR_MESSAGE
)
ELSE
(
l_log_data = ESS_LOG_WRITE('Employee has NOT elected Supplemental Employee Life')
SUCCESSFUL='N'
ERROR_MESSAGE = ERROR_MESSAGE||'You cannot elected Voluntary Child Life without electing Supplemental Employee Life as well '
return SUCCESSFUL,ERROR_MESSAGE
)
)
ELSE
(
SUCCESSFUL='Y'
return SUCCESSFUL,ERROR_MESSAGE
)
サンプルFormula 5:
問題文: 顧客はHDLを使用して参加者登録をロードしています。 選択後編集Formulaが設定されているため、従業員は選択を送信するために扶養家族を強制的に登録できます。 HDLを使用して加入者登録をロードする場合、このFormulaがトリガーされ、登録はロードされません。
変換ロードの実行中に、プラン設計からFormulaを削除し、参加者および扶養家族のロードを実行してから追加しなおすことができます。
その他のオプションは、次のFormula関数を使用します。
- BEN_GET_PROCESS_NAME_SS()は、スプレッドシート・ローダーに提供されます。
- BEN_GET_PROCESS_NAME()はHDL登録に提供されます
参加者HDLを使用する場合、登録のロード中に次のコードを使用してこれらの検証をスキップできます-
optext= BEN_GET_PROCESS_NAME() if ( optext != ‘PARTICIPANT_ENROLLMENT’) then ( 'your checks go here' )
その他の2つのHDLローダーに使用できる値は、次のとおりです。
- HDLを使用した扶養家族登録 - 'DEPENDENT_DESIGNATION'
- HDLを使用した受取人登録 - 'BENEFICIARY_DESIGNATION'
Formulaタイプ: 選択後編集
説明: プライベート・ヘルス・プランには、少なくとも1人の扶養家族を指定する必要があります。
DEFAULT_DATA_VALUE for BEN_PEN_PL_NAME_TN is 'My-Default'
DEFAULT_DATA_VALUE for BEN_PEN_OPT_NAME_TN is 'My-Default'
DEFAULT_DATA_VALUE for BEN_EXT_DPNT_PL_NAME IS 'XYZ'
DEFAULT_DATA_VALUE for BEN_EXT_BNF_OPT_NAME IS 'ABC'
DEFAULT FOR BEN_PIL_LF_EVT_OCRD_DT IS '1950/01/01 12:00:00' (date)
SUCCESSFUL='Y'
ERROR_MESSAGE=' '
i=1
j=1
l_family = 'N'
l_count = 1
l_lf_evt_ocrd_dt = BEN_PIL_LF_EVT_OCRD_DT
l_phase = BEN_GET_PROCESS_NAME()
/* skip the rule when loading participant enrollments through HDL */
if (l_phase != 'PARTICIPANT_ENROLLMENT')
then
(
CHANGE_CONTEXTS(EFFECTIVE_DATE = l_lf_evt_ocrd_dt)
(
while BEN_PEN_PL_NAME_TN.exists(i) loop
(
if BEN_PEN_PL_NAME_TN[i] like 'Private Health%' then
(
if BEN_PEN_OPT_NAME_TN[i] like 'Couple%' then
(
l_family = 'Y'
EXIT
)
)
i=i+1
) /* end while */
IF l_family = 'Y' THEN
(
j=1
while BEN_EXT_DPNT_PL_NAME.exists(j)
loop
(
if ( BEN_EXT_DPNT_PL_NAME[i] like 'Private Health%' and BEN_EXT_BNF_OPT_NAME[i] like 'Couple%' )
then
(
l_plan =BEN_EXT_DPNT_PL_NAME[i]
l_option=BEN_EXT_BNF_OPT_NAME[i]
l_count = l_count + 1
exit
)
j=j+1
) /* end loop for checking for dependents */
) /* if l_famlily */
) /* end change contexts */
IF l_family = 'Y' and l_count=1 THEN
(
SUCCESSFUL = 'N'
ERROR_MESSAGE='Designate at least one dependent in your Healthcare plans' ||to_char(i)
)
) /* end l_phase */
RETURN SUCCESSFUL, ERROR_MESSAGE