グローバル休暇欠勤一部期間有給休暇レート

グローバル休暇欠勤一部期間有給休暇レートFastFormulaは、登録年および登録解除年の有給休暇バランスの按分に必要なロジックを入力する必要がある場所です。

就業者が毎年適格である年間有給休暇が20日で、就業者が年度途中にプランに登録されている場合、就業者は半年のみ適格であるため、組織は登録年に対して10日間就業者に付与することを希望しています。同様に、従業員が年度の途中でプランから登録抹消された場合、その従業員は年度の半分しかプランに登録されていなかったため、その年の有給休暇の合計を20から10に減らす必要があります。

このFormulaは、登録日または登録解除日が、有給休暇が処理される繰返し期間内にある場合に起動されます。

HCM Cloudの構成ポイント

このFormulaを作成した場合は、このFormulaを休暇欠勤プラン定義に関連付けることができます。

ナビゲーション

  1. 「休暇欠勤管理」作業領域で、「休暇欠勤プラン」をクリックして「休暇欠勤プラン」ページを開きます。
  2. 「検索結果」セクションのツールバーで、「作成」をクリックして「休暇欠勤プランの作成」ダイアログ・ボックスを開きます。
  3. 「プラン・タイプ」フィールドで、「有給休暇」を選択します。
  4. 「続行」をクリックします。
  5. 「休暇欠勤プランの編集」ページの「有給休暇」タブの「有給休暇属性」セクションで、「一部有給休暇期間Formula」フィールドに目的のFormulaを選択します。

コンテキスト

このFormulaタイプでは、次のコンテキストを使用できます。

コンテキスト名 データ型
ABSENCE_ENTRY_ID 数値
ABSENCE_TYPE_ID 数値
ACCRUAL_PLAN_ID 数値
DATE_EARNED 日付
EFFECTIVE_DATE 日付
END_DATE 日付
ENTERPRISE_ID 数値
HR_ASSIGNMENT_ID 数値
HR_RELATIONSHIP_ID 数値
HR_TERM_ID 数値
JOB_ID 数値
LEGAL_EMPLOYER_ID 数値
LEGISLATIVE_DATA_GROUP_ID 数値
ORGANIZATION_ID 数値
PAYROLL_ASSIGNMENT_ID 数値
PAYROLL_ID 数値
PAYROLL_RELATIONSHIP_ID 数値
PAYROLL_TERM_ID 数値
PERSON_ID 数値
START_DATE 日付

入力値

変数名 データ型 摘要
IV_ACCRUAL 数値 有給休暇マトリックスから受け取った有給休暇値
IV_CARRYOVER 数値 有給休暇マトリックスから受け取った繰越限度
IV_CEILING 数値 有給休暇マトリックスから受け取った上限
IV_ACCRUALPERIODSTARTDATE 日付 有給休暇期間の開始日
IV_ACCRUALPERIODENDDATE 日付 有給休暇期間の終了日
IV_CALEDARSTARTDATE 日付 有給休暇カレンダ年の開始日
IV_CALEDARENDDATE 日付 有給休暇カレンダ年の終了日
IV_PLANENROLLMENTSTARTDATE 日付 登録の開始日
IV_PLANENROLLMENTENDDATE 日付 登録の終了日
IV_BAND_CHG_DT1* 日付 有給休暇マトリックス区分定義が勤続期間または年齢の等級または導出要因で構成されている場合、この入力値では、期間内のこれらの要因のいずれかで就業者が変更した日付がフェッチされます。
IV_BAND_CHG_BEFVAL1* 数値 IV_BAND_CHG_DT1より前のマトリックスに基づく有給休暇値
IV_BAND_CHG_AFTVAL1* 数値 IV_BAND_CHG_DT1の後のマトリックスに基づく有給休暇値
IV_ACCRUAL_CEILING 数値 有給休暇マトリックスからの年間有給休暇限度

*これらの入力値の順序は5に拡張できます。

戻り変数

変数名 データ型 摘要
accrual 数値 特定の部分繰返し期間に対して返された一部期間の按分済有給休暇値。値が返されると、有給休暇明細として追加されます。前面ロード・プランの登録終了を処理する場合、変数は負の値を返し、既存の年間有給休暇値から按分済金額を控除する必要があります。

サンプルFormula

要件: 組織には、プランに登録された月に基づいて有給休暇が按分される部分期間ルールがあります。

解決策: 次のようなグローバル休暇欠勤一部期間有給休暇レートFormulaを使用できます。

Formula名: ANC_PARACC

Formulaタイプ: グローバル休暇欠勤一部期間有給休暇レートFormula

説明: このFormulaは、休暇欠勤プランの中間期間登録および登録解除の有給休暇を返します

DEFAULT FOR IV_ACCRUAL IS 0
DEFAULT FOR IV_ACCRUALPERIODSTARTDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_ACCRUALPERIODENDDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_CALEDARSTARTDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_CALEDARENDDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_PLANENROLLMENTSTARTDATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_PLANENROLLMENTENDDATE IS '4712/12/31 00:00:00' (date)

INPUTS ARE IV_ACCRUAL, IV_ACCRUALPERIODSTARTDATE (date), IV_ACCRUALPERIODENDDATE (date), IV_CALEDARSTARTDATE (date), IV_CALEDARENDDATE (date), IV_PLANENROLLMENTSTARTDATE (date), IV_PLANENROLLMENTENDDATE (date)

ln_same_year_duration = 0
lc_first_month_flag = 'N'
ln_first_month_accrual = 0
ln_participation_duration = 0
ln_term_duration = 1 + (TO_NUMBER(TO_CHAR(IV_CALEDARENDDATE, 'yy')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'yy'))) * 12 + (TO_NUMBER(TO_CHAR(IV_CALEDARENDDATE, 'mm')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'mm')))
ld_start_date = GREATEST (IV_PLANENROLLMENTSTARTDATE,IV_CALEDARSTARTDATE)
ld_end_date = LEAST (IV_PLANENROLLMENTENDDATE, IV_CALEDARENDDATE)

/*Calculating the duration for which the enrollment was active*/
ln_participation_duration = (TO_NUMBER(TO_CHAR(ld_end_date, 'yy')) - TO_NUMBER(TO_CHAR(ld_start_date, 'yy'))) * 12 + (TO_NUMBER(TO_CHAR(ld_end_date, 'mm')) - TO_NUMBER(TO_CHAR(ld_start_date, 'mm'))) + 1

/*Capturing this in case un-enrollment occurred in the same month as  calendar start month*/
ln_first_month_accrual = IV_ACCRUAL * (ln_participation_duration / ln_term_duration) 

/*Checking if un-enrollment happend before end of calendar year*/
IF IV_PLANENROLLMENTENDDATE < IV_CALEDARENDDATE
THEN
(
/*Checking if enrollment also happened within the same year as unenrollment*/
IF (IV_PLANENROLLMENTSTARTDATE > IV_CALEDARSTARTDATE)
THEN 
	(
	/*If enrollment happened in the same year as the un-enrollment, calculating the duration from calendar start date to enrollment start date so that this can be subtracted from total*/
	ln_same_year_duration = (TO_NUMBER(TO_CHAR(IV_PLANENROLLMENTSTARTDATE, 'yy')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'yy'))) * 12 + (TO_NUMBER(TO_CHAR(IV_PLANENROLLMENTSTARTDATE, 'mm')) - TO_NUMBER(TO_CHAR(IV_CALEDARSTARTDATE, 'mm')))
	)
/*The termination pro-ration has to return a negative value - the amount that needs to be subtracted from the current balance*/
ln_participation_duration = -1 * (ln_term_duration - ln_participation_duration - ln_same_year_duration)
/*Checking if un-enrollment happened in the first month of the calendar year*/
IF ( (TO_CHAR(IV_CALEDARSTARTDATE, 'mm') = TO_CHAR(IV_PLANENROLLMENTENDDATE, 'mm')) AND (TO_CHAR(IV_CALEDARSTARTDATE, 'yyyy') = TO_CHAR(IV_PLANENROLLMENTENDDATE, 'yyyy')) )
THEN
(lc_first_month_flag = 'Y')
)

prorated_accrual = IV_ACCRUAL * (ln_participation_duration / ln_term_duration)
/*If un-enrollment happened in the first month of the calendar year, then return the pro-ration for the single month*/
IF (lc_first_month_flag = 'Y')
THEN
(prorated_accrual = ln_first_month_accrual)

accrual = ROUND(prorated_accrual,2)

RETURN accrual