休暇取得プロセス
このトピックでは、次について説明します。
日次データ。
日次データのシステム エレメントの役割。
休暇取得プロセス (詳細)。
日次処理 (詳細)。
休暇取得プロセスを実行するとき、プログラムで最初に行われることは、受給者について休暇欠勤処理期間 (処理期間が分割されている場合は、現在のセグメント) 中に発生したプロセス リストの各休暇欠勤イベントを展開することです。イベントを展開すると、GP_RSLT_ABS レコードに休暇欠勤イベントの各日についての詳細データ行が作成されます。これらの行は、日次データと呼ばれます。
休暇取得プロセスでは、現在のセグメントの期間に属する日付を持つイベントがそれぞれ展開されます。休暇欠勤イベントの各日について行が作成されます。プロセスの対象期間に含まれない日付についても同様に行が作成されます。受給者が休暇欠勤イベントの前日と翌日に欠勤していない場合、それらの両日に対しても勤務スケジュールと休日スケジュールのシステム エレメントがロードされます。受給者が報告された休暇欠勤の前日または翌日に欠勤している場合は、ルールでの設定に従い、休暇欠勤に関係した他のシステム エレメントがロードされます。
たとえば、処理期間が 5 月 1 日から 5 月 31 日で、分割がないとします。受給者が 5 月 5 日から 5 月 6 日と、5 月 29 日から 6 月 2 日を休んだ場合、休暇取得プロセスでは最初の休暇欠勤について 2 行、2 回目の休暇欠勤について 5 行の日次データが作成されます。
画像: 休暇欠勤イベントの各日に対して作成される日次データ
次の図は、休暇欠勤イベントの各日に対して日次データがどのように作成されるのかを示しています。

休暇欠勤イベントの各日について日次データの行が作成されても、各日が処理されるという意味ではありません。イベント全体が展開されるのは、それぞれの休暇欠勤日を正確に評価するのに必要な情報を全てシステムに認識させるためです。実際に処理されるのは、処理期間中に発生した休暇欠勤日だけになります。上記の例では、5 月の 5 日、6 日、29 日、30 日、31 日が処理されます。
日次データのソース
最初に日次データにロードされるデータのソースは次の 2 つです。
受給者の勤務および休日のスケジュール。曜日、予定勤務時間数、休日タイプの情報が提供されます。
休暇欠勤イベント。休暇取得エレメント、開始日と終了日、時間指定の休暇欠勤などの情報やその他の情報が提供されます。
画像: 日次データのソース
次の図に、日次データのソースを示します。

休暇取得プロセス自体も日次データに情報を提供します。プロセスにより休暇欠勤ルール (休暇欠勤エレメントによって定義) がイベントや予定勤務時間データに適用されると、日次データにロードされる一連の結果値が取得されます。取得される結果値には、開始付与残数、休暇欠勤ユニット数、有給/無給ユニット数、プロセス後の休暇付与残数などのさまざまな情報が含まれています。
日数計算フォーミュラを作成して休暇取得ルールに割り当てますが、このフォーミュラによって結果値が取得されます。このフォーミュラは休暇欠勤の各日で変換され、休暇欠勤日のユニット数 (4 時間、1 日など) を返します。休暇欠勤の日数計算が終わると、その日数と休暇付与残数が照らし合わされます。支給に必要な有給待機期間またはその他の条件が満たされているかどうかが判断され、有給となる休暇欠勤ユニット数が決定します。また、処理後の休暇付与残数も計算されます。
休暇欠勤日次データの多くはシステム エレメントによって保存されます。システム エレメントとは、事前に定義されているエレメントです。
フォーミュラでのシステム エレメントの使い方
休暇取得エレメントを定義するときには日数計算フォーミュラを指定する必要があります。これを使って、受給者が休んだ処理対象日のユニット数が計算されます。このフォーミュラでは日次データに保存されている情報 (場合によっては評価対象日の前後の日のデータも含む) を使うことができます。たとえば、受給者の予定勤務時間の情報を保存するシステム エレメントには、次の 3 つがあります。
SCHED_HRS: 評価対象日の受給者の予定勤務時間数を取得します。
SCHED_HRS_DB: 評価対象日前日の受給者の予定勤務時間数を取得します。
SCHED_HRS_DA: 評価対象日翌日の受給者の予定勤務時間数を取得します。
前日または翌日の値を計算で使う日数計算フォーミュラを作成することもできます。また、SCHED_HRS エレメントの値を使って日数を計算する日数計算フォーミュラを作成することもできます。
使用する休暇欠勤機能によっては、その他のフォーミュラを作成する必要があります。これらのフォーミュラでも、システム エレメントによって取得される日次データを使用できます。
ユーザー定義フィールドの使い方
ユーザー定義のシステム エレメントを使用することにより、組織固有の休暇欠勤データを取得し、使用できます。ユーザー定義のフィールドに入力されたデータはシステム エレメントに格納され、休暇取得プロセスにより日次データのレコードに追加されます。その他のシステム エレメントと同様に、ユーザー定義のシステム エレメントにより取得されたデータも休暇欠勤フォーミュラで使用できます。
ユーザー定義フィールドは、以下のページで使用されます。
休暇欠勤イベント入力。
休暇取得の計算。
シフト。
休暇リクエスト (管理者または従業員)。
休暇取得エレメントの主な機能は、有給/無給ユニットの決定です。[休暇取得] プロセスでは、それぞれの休暇欠勤イベントを日次データに展開し、給与計算実行のためのポジティブ入力を作成します。また、残数累計も更新します。
休暇取得エレメントの検索。
現在のセグメント内にあるイベントについて、休暇取得処理アレイ内から現在の取得エレメントに対するイベント アレイを検索します。イベントが見つからなかった場合は、現在のセグメント内の日次行を検索します。
イベントまたは日次行が見つかった場合は、休暇取得処理アレイの現在の休暇取得エレメントに対して、イベントの検出、日次行の検出、休暇取得処理を「Yes」に設定します。
イベントまたは日次行が見つからなかった場合は、アレイの次の取得に進みます。
ルール定義の取得。
休暇取得処理アレイの現在の休暇取得エレメントについて、以下が行われます。
取得エレメントの定義、および休暇付与の子レコード、支給/控除の子レコード、同一日の取得エレメントの子レコードなどのエレメントの子レコードを取得します。
休暇付与の子レコードごとに休暇付与定義を取得します。
休暇取得処理アレイの取得ポインタを該当の有効日付きの休暇取得定義に設定します。休暇取得定義がロード済みの場合でも、この設定はセグメントごとに行われます。
休暇欠勤の既存の日次データ行を更新します。日次行が見つかっている場合は、休暇取得処理アレイの現在の休暇取得エレメントと一致し、セグメント内に存在する未処理の既存の日次データ行が更新されます。
取得処理ポインタを、該当の取得定義に設定します。また、行が処理されたことも示されます。
休暇取得プロセス ポインタを使って、休暇欠勤タイプ、休暇取得設定フィールドを更新します。
行の関連付け。重複が日次順序または休暇取得のセクション順序で正しく設定されます。
勤務スケジュールがロードされていない場合は、休暇欠勤期間内のセグメントごとに、各雇用レコードに対しそれらをロードします。
現在の期間の勤務スケジュールと休日データを取得します。これには、現在の期間の前後の日付も含まれており、DB (休暇欠勤前) システム エレメントと DA (休暇欠勤後) システム エレメントに値が提供されます。
現在セグメントのイベントを展開します。イベントの検出が「Yes」に設定されている場合、休暇取得処理アレイの現在の休暇取得エレメントのイベントを展開し、そのイベントの各休暇欠勤日に対して休暇欠勤日次データ行を作成します。各日次データ行には、以下のものが含まれます。
勤務スケジュール データ。
代替勤務スケジュール データ。
休日データ。
休暇欠勤イベント情報。
Set Insert-No。
該当の休暇取得エレメントの定義への休暇取得ポインタの設定。その行がどのように処理されるかも指定されます。
休暇取得データ。休暇取得プロセス ポインタを使用した休暇欠勤タイプとユーザー定義フィールドなど。
行の関連付け。重複が日次順序または休暇取得のセクション順序で正しく設定されます。
日次処理の実行 (次のサブセクションで詳しく説明します)
日次処理 (詳細)
以下に示すのは、(上記のステップ 6 の) 日次処理を実行するためのステップの詳細です。
日次データの初期化。
検証が実行中の場合、検証アレイを初期化し、取得エレメントの新しい検証行を作成します。
取得エレメントが変更されていて、前回の取得エレメントに上書き定義 (SOVR) があった場合、その SOVR 値を元の値に再設定します。
取得エレメントが変更されていて、現在の取得エレメントに、有効な上書き定義 (SOVR) がある場合、この取得エレメントの前回の上書き定義 (SOVR) の値を保存し、新しい上書き値を追加します。
取得エレメントが別のエレメントからマッピングされている場合は、現在処理中の日次行に対して、現在の日付、その前後の日付、および取得の親エレメントなどのポインタを使用すると、システム エレメントでデータが使用可能になります。
前日または翌日に休暇欠勤がない場合は、スケジュール データを適切なシステム エレメントにロードします。
複数イベント可を選択した場合、現在の日次行に対する全取得エレメントの時間指定の値を合計します。
イベントの初期化。セグメント内にある各イベントの 1 日目、または最初に処理が行われる日で初期化が実行されます。
その休暇欠勤日が休暇欠勤イベントの開始日の場合は、以下を実行します。
最低休暇日数の条件を確認します。
リンク (休暇欠勤ごとのエレメントの場合) を確認します。
資格取得条件を確認します。
有給待機期間を確認します。
休暇欠勤日が休暇欠勤イベントの開始日ではない場合は、以下を実行します。
前回の日付から現在の日付に、その休暇欠勤イベントに関連するフィールドをコピーします。
資格取得条件を確認します。
有給待機期間を確認します。
日数の取得。
PIN マネージャを呼び出し、日数計算フォーミュラを変換します。
PIN マネージャを呼び出し、(該当する場合) 有給待機カウント フォーミュラを変換します。
各日の評価 (有給/無給ユニットの作成)。通常処理、および予測処理に対して、実行されます。
最低休暇日数を確認します (該当する場合)。
資格取得日を確認します (該当する場合)。
有給待機期間を確認します (該当する場合)。
取得ユニットの結果が 0 (ゼロ) になるか、付与エレメントがなくなるまで、付与アレイをループ処理します。
現在の休暇欠勤付与残数を取得します。
残数が 0 (ゼロ) を超える場合、処理ユニットと照らし合わせます。残数が残りのユニット数を満たす場合は、そのユニットは有給ユニットとして見なされます。残数が不足していて、他に付与エレメントが存在しない場合は、超過取得ルールを適用します。
有給ユニットがある場合は、システムにより自動的に割り当てられる有給ユニットを PIN マネージャの戻り値リストに追加します。
有給日数ユニットと無給日数ユニットを PIN マネージャの戻り値リストの日次データ行に追加します。
予測 PIN 処理。予測と残数の照会に対して、実行します。
PIN マネージャを呼び出し、予測 PIN を変換します。
支給/控除日数計算のループ処理。通常の処理に対してのみ実行されます。
PIN マネージャを呼び出し、ユニット フォーミュラを変換します。
フォーミュラ結果が 0 (ゼロ) の場合、PIN マネージャを呼び出し、パーセント フォーミュラ、レート フォーミュラ、金額フォーミュラを変換します。
フォーミュラ結果が 0 (ゼロ) でない場合、支給/控除エレメント、ユニット、およびパーセントを日次のポジティブ入力に追加します。
マッピングおよびリダイレクトが指定された日次行の追加。
PIN マネージャを呼び出し、マッピングの判別フォーミュラを変換します。
フォーミュラがない場合や、フォーミュラの値が 0 (ゼロ) でない場合は、マップされた取得エレメントに対して、現在の日付の休暇欠勤のデータ行のコピーが挿入されます。
リダイレクトが指定された日付行の場合、その取得に対して、現在の日付の休暇欠勤のデータ行のコピーが挿入されます。
マッピングおよびリダイレクトが指定された取得を取得処理アレイで検索します。取得処理が「No」に設定されている場合、取得処理アレイ ループで実行したように、ルール定義を取得します。取得処理が「Yes」に設定されている場合は、ルール定義は既にロードされています。
マッピングまたはリダイレクトが指定された日付の取得が取得処理アレイで見つかった場合、以下の手順に従います。
取得処理ポインタを、該当の取得定義に設定します。
その休暇取得処理ポインタを使用して [休暇欠勤タイプ] フィールドと [設定取得] フィールドを更新します。
休暇欠勤ポインタを設定すると新しい行が関連付けられ、重複が日次順序または休暇欠勤取得のセクション順序で正しく設定されます。
日次データ処理の終了。
日次データの結果を日次データ行に保存します。
終了日が「Yes」に設定されている場合、予測エレメントの結果値を取得します。
休暇欠勤日がセグメントの終了日と同一日である場合、予測結果を保存します。
処理した日次データ行に、Set Insert-Yes を設定します。
日次プロセス スイッチを処理済に指定します。
検証が実行中の場合、取得エレメントの検証行を更新し、変換チェーンを書き込みます。
有効な上書き定義があり、処理対象のデータ行がない場合、現在の取得上書き定義に対して、前回の上書きエレメントの値 (SOVR) を再設定します。