概要
当システムでは遅刻や早退などの実績を「チケット」という単位で管理しますが、その「チケット」への時刻入力を予約する機能です。
例えば
「遅刻するのは確実だが、実際に出社できる時刻は分からない。」という状況で使用します。
チケット予約画面で「遅刻」の予約データを登録します。
出社してから打刻すると、通常の打刻処理と同時に、遅刻チケットの終了時刻にも自動的に打刻が行われます。
仕組み
チケットデータを保持するテーブルと、打刻予約データを保持するテーブルの2テーブルで実現しています。
予約段階にあるチケットは通常のチケットとは別のテーブルで管理します(テーブルの構造は同じ)。
予約チケットの利用時間From、利用時間To両方に値が入った場合、正式なチケットとして登録を行います。具体的にはチケット予約テーブルから、チケットテーブルへデータを移動するだけです。
打刻予約データは以下のような構造です。
ユーザーID | チケットID | 予約タイプ |
---|---|---|
1 | 1 | 1(開始打刻) |
1 | 1 | 2(終了打刻) |
打刻処理時に予約されたチケットへの打刻も行います。
ユーザーID、チケットIDでグループ化して、
各グループから予約タイプの数値が最も小さい1件のデータを抽出。
抽出結果のチケットIDを対象に、予約タイプで指定された通りの打刻を行います。