補償範囲額計算
この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では、次のような戻り変数を利用できます。
戻り値 | データ型 | 必須 | 摘要 |
---|---|---|---|
L_CVG | 数値 | 必須 | 補償範囲額 |
エラー
他の出力値が返された場合、加入プロセスはBEN_91329_FORMULA_RETURNでエラーになります。
サンプルFormula 1:
Formula名: BEN_CVG_CALC
Formulaタイプ: 補償範囲額計算
説明: 補償範囲額は個人DOBに基づいて決定されます。
/ DEFAULT for PER_PER_DATE_OF_BIRTH is '01-Jan-1951' (date)
l_start_date = PER_PER_DATE_OF_BIRTH
l_cvg = 0
if ( l_start_date >= TO_DATE('01-Jan-1961') and l_start_date <= TO_DATE('31-Dec-1974') ) then (l_cvg = 800 )
if ( l_start_date >= TO_DATE('01-Jan-1975') and l_start_date <= TO_DATE('31-Dec-1989') ) then (l_cvg = 1000 )
if ( l_start_date >= TO_DATE('01-Jan-1990') and l_start_date <= TO_DATE('31-Dec-2010') ) then ( l_cvg = 1500 )
return l_cvg
サンプルFormula 2:
Formula名: BEN_CVG_CALC2
Formulaタイプ: 補償範囲額計算
説明: Formulaは個人の年齢の要因として補償範囲を導出します。
Default for PER_PER_DATE_OF_BIRTH is '01-JAN-1901' (date)
l_dob = PER_PER_DATE_OF_BIRTH
l_effective_date = GET_CONTEXT(EFFECTIVE_DATE,to_date('01-JAN-2012'))
if not PER_PER_DATE_OF_BIRTH was defaulted then (
l_age = trunc(ROUNDUP(months_between(l_effective_date , l_dob)/12))
l_cvg = l_age * 2500 )
else
( l_cvg = 10000 )
return l_cvg
サンプルFormula 3:
Formulaタイプ: 補償範囲額計算
説明: 退職者の補償範囲を退職期間に基づいて計算します。
DEFAULT for CMP_ASSIGNMENT_SALARY_ANNUAL_AMOUNT is 0
DEFAULT for PER_PER_LATEST_TERMINATION_DATE is '1951/01/01 00:00:00' (date)
l_sal = 0
l_yrs = 0
l_fctr = 0
l_val = 0
l_eff_date = GET_CONTEXT(EFFECTIVE_DATE, to_date('1951/01/01 0:00:00'))
IF PER_PER_LATEST_TERMINATION_DATE WAS NOT DEFAULTED
THEN
(
l_term_dt = PER_PER_LATEST_TERMINATION_DATE
l_sal_dt = add_days(l_term_dt,-1)
/* get the salary as of the term date -1 */
CHANGE_CONTEXTS (EFFECTIVE_DATE=l_sal_dt)
(
l_sal = CMP_ASSIGNMENT_SALARY_ANNUAL_AMOUNT
) /* end change contexts */
/* calculate the time passed since the employee retired */
l_yrs = Round(MONTHS_BETWEEN(l_eff_date,l_term_dt)/12)
if (l_yrs>=0 and l_yrs < 5) then
( l_fctr = 1 )
else if (l_yrs >= 5 ) then
( l_fctr = 0.5 )
l_val = ROUND(l_sal * l_fctr)
) /* end defaulted */
return l_val