グローバル休暇欠勤エントリ検証
グローバル休暇欠勤エントリ検証FastFormulaは、休暇欠勤エントリの作成時にカスタム・データ検証またはビジネス・ルール検証を実行する必要がある場合に使用できます。
組織によっては、通常の産前産後休業の休暇欠勤エントリがある場合にのみ、「産前産後休業 - 無給」タイプの休暇欠勤エントリを従業員に記録できるようにするルールがあります。このような場合、従業員の休暇欠勤履歴を参照して、産前産後休業 - 無給の休暇欠勤エントリの直前日に終了する産前産後休業があるかどうかを確認する検証Formulaを作成できます。
HCM Cloudの構成ポイント
このFormulaを作成した場合は、このFormulaを休暇欠勤タイプ定義に関連付けることができます。
ナビゲーション
- 「休暇欠勤管理」作業領域で、「休暇欠勤タイプ」をクリックして「休暇欠勤タイプ」ページを開きます。
- 「検索結果」セクションのツールバーで、「作成」をクリックして「休暇欠勤タイプの作成」ダイアログ・ボックスを開きます。
- 「続行」をクリックします。
- 「休暇欠勤タイプの作成」ページの「タイプ属性」タブの「一般属性」セクションで、「検証Formula」フィールドに定義済のFormulaを選択します。
コンテキスト
このFormulaタイプでは、次のコンテキストを使用できます。
コンテキスト名 | データ型 |
---|---|
ABSENCE_AGREEMENT_ID | 数値 |
ABSENCE_CERTIFICATION_ID | 数値 |
ABSENCE_ENTRY_ID | 数値 |
ABSENCE_REASON_ID | 数値 |
ABSENCE_TYPE_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_AGREEMENT_ID | 数値 |
PERSON_ID | 数値 |
START_DATE | 日付 |
入力値
変数名 | データ型 | 摘要 |
---|---|---|
IV_START_DATE | 日付 | 休暇欠勤エントリの開始日 |
IV_END_DATE | 日付 | 休暇欠勤エントリの終了日 |
IV_TOTALDURATION | 数値 | 休暇欠勤エントリの期間 |
IV_START_DURATION | 数値 | 休暇欠勤エントリの開始日期間。休暇欠勤エントリが経過時間ベースの勤務スケジュールに対して記録されている場合に適用されます。 |
IV_END_DURATION | 数値 | 休暇欠勤エントリの終了日期間。休暇欠勤エントリが経過時間ベースの勤務スケジュールに対して記録されている場合に適用されます。 |
IV_START_TIME | テキスト | 休暇欠勤エントリの開始日における開始時間。時間ベースの勤務スケジュールに休暇欠勤エントリが記録されている場合に適用されます。経過勤務スケジュールの場合は、00:00となります。 |
IV_END_TIME | テキスト | 入力中の休暇欠勤の終了日時。時間ベースの勤務スケジュールに休暇欠勤エントリが記録されている場合に適用されます。経過勤務スケジュールの場合は23:59となります。 |
IV_ACTUALCHILDBIRTHDATE | 日付 | 休暇欠勤に対して入力された実際の出産日。出産/養子縁組休暇欠勤パターンに適用可能 |
IV_ACTUALSTARTDATE | 日付 | 休暇欠勤の実績開始日。出産/養子縁組休暇欠勤パターンに適用可能 |
IV_ACTUALENDDATE | 日付 | 実際の休暇欠勤終了日。出産/養子縁組休暇欠勤パターンに適用可能 |
IV_EXPECTEDCHILDBIRTHDATE | 日付 | 休暇欠勤に対して入力された予定出産日。出産/養子縁組休暇欠勤パターンに適用可能 |
IV_PLANNEDSTARTDATE | 日付 | 予定休暇欠勤開始日。出産/養子縁組休暇欠勤パターンに適用可能 |
IV_PLANNEDENDDATE | 日付 | 休暇欠勤の予定終了日。出産/養子縁組休暇欠勤パターンに適用可能 |
IV_ABSENCE_REASON | テキスト | 現在のセッションの言語での休暇欠勤事由 |
IV_ATTRIBUTE_CATEGORY | テキスト | 休暇欠勤記録DFFのDFF行のコンテキスト |
IV_ATTRIBUTE_1* | テキスト | 休暇欠勤記録DFFの最初のテキスト・セグメント |
IV_ATTRIBUTE_NUMBER1* | 数値 | 休暇欠勤記録DFFの最初の番号セグメント |
IV_ATTRIBUTE_DATE1* | 日付 | 休暇欠勤記録DFFの最初の日付セグメント |
IV_ATTRIBUTE_ARR | Text_Number | 休暇欠勤記録DFFのテキスト・セグメントの配列。索引はセグメント番号を示します。例: IV_ATTRIBUTE_ARR[1]は、ANC_PER_ABS_ENTRIES表のセグメントATTRIBUTE1の値を保持します。索引は1で始まり、30で終了します。特定の索引が使用され、データが存在しない場合、アプリケーションはエラーをスローします。したがって、入力値を使用する前に、まずデータが存在するかどうかを確認することをお薦めします。これは、existsコマンドを使用して実行できます。例: if(IV_ATTRIBUTE_ARR.exists(1)) |
IV_ATTRIBUTE_NUMBER_ARR | Number_Number | 休暇欠勤記録DFFの数値セグメントの配列。索引はセグメント番号を示します。例: IV_ATTRIBUTE_NUMBER_ARR[1]は、ANC_PER_ABS_ENTRIES表のセグメントATTRIBUTE_NUMBER1の値を保持します。索引は1で始まり、30で終了します。特定の索引が使用され、データが存在しない場合、アプリケーションはエラーをスローします。したがって、入力値を使用する前に、まずデータが存在するかどうかを確認することをお薦めします。これは、existsコマンドを使用して実行できます。例: if(IV_ATTRIBUTE_NUMBER_ARR.exists(1)) |
IV_ATTRIBUTE_DATE_ARR | Date_Number | 休暇欠勤記録DFFの日付セグメントの配列。索引はセグメント番号を示します。例: IV_ATTRIBUTE_DATE_ARR[1]は、ANC_PER_ABS_ENTRIES表のセグメントATTRIBUTE_DATE1の値を保持します。索引は1で始まり、30で終了します。特定の索引が使用され、データが存在しない場合、アプリケーションはエラーをスローします。したがって、入力値を使用する前に、まずデータが存在するかどうかを確認することをお薦めします。これは、existsコマンドを使用して実行できます。例: if(IV_ATTRIBUTE_DATE_ARR.exists(1)) |
IV_INFORMATION_CATEGORY | テキスト | ANC_PER_ABS_ENTRIES DDFのDDF行のコンテキスト |
IV_INFORMATION_1* | テキスト | ANC_PER_ABS_ENTRIES DDFの最初のテキスト・セグメント |
IV_INFORMATION_NUMBER1* | 数値 | ANC_PER_ABS_ENTRIES DDFの最初の数値セグメント |
IV_INFORMATION_DATE1* | 日付 | ANC_PER_ABS_ENTRIES DDFの最初の日付セグメント |
IV_INFORMATION_ARR | Text_Number | ANC_PER_ABS_ENTRIES DDFのテキスト・セグメントの配列。索引はセグメント番号を示します。例: IV_INFORMATION_ARR[1]は、ANC_PER_ABS_ENTRIES表のセグメントINFORMATION1の値を保持します。索引は1で始まり、30で終了します。特定の索引が使用され、データが存在しない場合、アプリケーションはエラーをスローします。したがって、入力値を使用する前に、まずデータが存在するかどうかを確認することをお薦めします。これは、existsコマンドを使用して実行できます。例: if(IV_INFORMATION_ARR.exists(1)) |
IV_INFORMATION_NUMBER_ARR | Number_Number | ANC_PER_ABS_ENTRIES DDFの数値セグメントの配列。索引はセグメント番号を示します。例: IV_INFORMATION_NUMBER_ARR[1]は、ANC_PER_ABS_ENTRIES表のセグメントINFORMATION_NUMBER1の値を保持します。索引は1で始まり、30で終了します。特定の索引が使用され、データが存在しない場合、アプリケーションはエラーをスローします。したがって、入力値を使用する前に、まずデータが存在するかどうかを確認することをお薦めします。これは、existsコマンドを使用して実行できます。例: if(IV_INFORMATION_NUMBER_ARR.exists(1)) |
IV_INFORMATION_DATE_ARR | Date_Number | ANC_PER_ABS_ENTRIES DDFの日付セグメントの配列。索引はセグメント番号を示します。例: IV_INFORMATION_DATE_ARR[1]は、ANC_PER_ABS_ENTRIES表のセグメントINFORMATION_DATE1の値を保持します。索引は1で始まり、30で終了します。特定の索引が使用され、データが存在しない場合、アプリケーションはエラーをスローします。したがって、入力値を使用する前に、まずデータが存在するかどうかを確認することをお薦めします。これは、existsコマンドを使用して実行できます。例: if(IV_INFORMATION_DATE_ARR.exists(1)) |
IV_PAYMENT_DTL_BAND | 数値 | 契約にリンクされた休暇欠勤に選択された支払区分の識別子 |
IV_NOTIFICATION_DATE | 日付 | 疾病/負傷通知日 |
IV_MATCHING_DATE | 日付 | 養子縁組のために子が就業者と照合される日付 |
*この入力値の順序は5まで拡張できます
戻り変数
変数名 | データ型 | 摘要 |
---|---|---|
VALID | テキスト | 休暇欠勤エントリの有効性を決定します。「N」はエラー・メッセージをスローし、トランザクションが送信されないようにします |
ERROR_MESSAGE | テキスト | 無効な休暇欠勤エントリのカスタム・エラー・メッセージです。エラー・メッセージは、Formulaに書き込むか、メッセージの管理を介して定義してここで起動できます。 |
ERROR_CODE | テキスト | メッセージがエラーか警告かを識別します。有効な値は、エラーの場合は「E」、警告の場合は「W」です。 |
TOKEN_NAME | Text_Number | メッセージの管理を介して構成されたメッセージ内のトークン名の配列(ある場合) |
TOKEN_VALUE | Text_Number | メッセージの各トークン名に渡される値の配列 |
DEBUG_MESSAGE | テキスト | アプリケーション・ロギングが有効な場合、この出力変数に渡されるテキストはログに記録されます。デバッグに役立ちます。 |
サンプルFormula
要件: 組織には、疾病休暇付与ポリシーがあります。このポリシーに従って、就業者は、前回の「Unpaid Sickness」エントリから365日後にのみ通常の疾病休暇エントリを記録できます。
解決策: 次のようなグローバル休暇欠勤エントリ検証Formulaを使用できます。
Formula名: ANC_VALID
Formulaタイプ: グローバル休暇欠勤エントリ検証
説明: このFormulaは疾病休暇欠勤エントリを検証します
DEFAULT FOR IV_START_DATE IS '4712/12/31 00:00:00' (date)
DEFAULT FOR IV_END_DATE IS '4712/12/31 00:00:00' (date)
DEFAULT_DATA_VALUE for ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR is 0
DEFAULT FOR ANC_ABS_ENTRS_ABSENCE_TYPE_ID is 0
DEFAULT FOR ANC_ABS_ENTRS_ABSENCE_STATUS_CD IS ' '
DEFAULT FOR ANC_ABS_TYP_NAME IS ' '
DEFAULT FOR ANC_ABS_ENTRS_END_DATE IS '4712/12/31 00:00:00' (date)
INPUTS ARE IV_END_DATE (date), IV_START_DATE (date)
lc_sickness_unpaid_name = 'Sickness - Unpaid'
ld_start_date = TO_DATE('1951-01-01','yyyy-MM-dd')
ld_sickness_end_date = TO_DATE('4712-12-31','yyyy-MM-dd')
i=1
CHANGE_CONTEXTS(START_DATE=ld_start_date, END_DATE=IV_END_DATE)
(
WHILE ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR.exists(i)
LOOP
(
CHANGE_CONTEXTS (ABSENCE_ENTRY_ID = ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR[i])
(
CHANGE_CONTEXTS (ABSENCE_TYPE_ID = ANC_ABS_ENTRS_ABSENCE_TYPE_ID)
(
IF (lc_sickness_unpaid_name = ANC_ABS_TYP_NAME AND ANC_ABS_ENTRS_ABSENCE_STATUS_CD = 'SUBMITTED')
THEN
(
IF (365 > DAYS_BETWEEN(TRUNC(IV_START_DATE), ANC_ABS_ENTRS_END_DATE) + 1)
THEN
(
VALID = 'N'
ERROR_MESSAGE = 'ORA_CUSTOM_ERROR_MESSAGE'
RETURN VALID, ERROR_MESSAGE
)
)
)
)
i=i+1
)
)
VALID = 'Y'
RETURN VALID