メインコンテンツまでスキップ

休暇申請

休暇申請は、休暇管理ワークフローの中核です。従業員が休暇のリクエストを提出し、承認プロセスを経ます。システムは、提出から承認または却下までの完全なライフサイクルを追跡し、各ステップで自動的に残高を更新します。


休暇申請の提出

従業員として(ポータル)

  1. サイドバーから休暇申請に移動します。
  2. 作成をクリックします。
  3. 休暇タイプを選択します。
  4. 開始日終了日を入力します。
  5. 日数を入力します(半日単位をサポート、例:0.5、1.5)。
  6. 必要に応じて理由を追加します。
  7. 保存をクリックします。

従業員フィールドはログイン中の従業員に自動設定されます——フォームには表示されません。

管理者として

管理者は同じフォームを見ますが、申請対象の従業員を選択するための追加の従業員フィールドがあります。また、管理者メモフィールド(従業員には非表示)に入力することもできます。

従業員詳細ビューから

管理者は、従業員の詳細ページから休暇申請を作成アクションを使用して直接休暇申請を作成できます。従業員は事前入力され、便利な半日トグルが利用できます。


バリデーションルール

システムは、休暇申請の提出または編集時に複数のバリデーションルールを適用します:

日数のバリデーション

日数は日付範囲と一致する必要があります:

  • 全日:日数は end_date - start_date + 1 と等しくなければなりません
  • 半日:日数は (end_date - start_date + 1) * 0.5 と等しくなければなりません

その他の値はエラーメッセージとともに拒否されます。

重複検出

システムは同一従業員の重複する休暇申請をチェックします。日付範囲が既存の承認済みまたは保留中の申請と重複する場合、申請はブロックされます。

2つの日付範囲が重複する条件:start_date_1 <= end_date_2 AND start_date_2 <= end_date_1

既存の申請を編集する場合、重複チェックは現在のレコードを除外します。


申請ステータス

ステータスバッジ説明
保留中黄色承認待ち。残高は pending_days に予約されています。
承認済み緑色マネージャーにより承認。日数が pending_days から used_days に移動。
却下済み赤色マネージャーにより却下。日数が pending_days から削除。
取消済み灰色従業員または管理者により取り消し。日数が復元。

承認ワークフロー

標準フロー

従業員が申請を提出
|
ステータス:保留中
(pending_days 増加)
|
マネージャーが申請を確認
|
+--- 承認 ---> ステータス:承認済み
| (pending_days -> used_days)
| 従業員に通知
|
+--- 却下 ---> ステータス:却下済み
| (pending_days 削除)
| 却下理由を記録
| 従業員に通知
|
+--- (従業員) 取消 --> ステータス:取消済み
(pending_days 削除)

自動承認フロー

自動承認に設定された休暇タイプの場合(設定 > 休暇管理内):

従業員が申請を提出
|
オブザーバーが自動承認設定を検出
|
ステータス:即座に承認
(used_days 増加)
マネージャーへの通知なし

承認ワークフロー設定

設定 > HRM設定 > 休暇管理に移動してワークフローを設定します:

設定オプションデフォルト
承認ワークフロー単一レベル / マルチレベル / 自動承認単一レベル
自動承認休暇タイプ特定の休暇タイプを選択なし

休暇申請の承認

approve leave requests 権限が必要です。

  1. 休暇申請に移動するか、保留中の申請ダッシュボードカードから開きます。
  2. 1つ以上の保留中の申請を選択します。
  3. 承認アクションをクリックします。
  4. 必要に応じて管理者メモを追加します。
  5. 確認します。

発生する処理:

  • ステータスが承認済みに変更
  • approved_by が現在のユーザーに設定
  • approved_at が現在のタイムスタンプに設定
  • 休暇残高:pending_days が減少、used_days が増加
  • 従業員に通知が送信

休暇申請の却下

approve leave requests 権限が必要です。

  1. 1つ以上の保留中の申請を選択します。
  2. 却下アクションをクリックします。
  3. 却下理由を入力します(必須)。
  4. 必要に応じて管理者メモを追加します。
  5. 確認します。

発生する処理:

  • ステータスが却下済みに変更
  • rejection_reason が記録され、従業員に表示
  • 休暇残高:pending_days が減少
  • 従業員に通知が送信

休暇申請の取消

cancel leave requests 権限が必要です。従業員と管理者の両方が申請を取り消せます。

  1. 保留中または承認済みの申請を選択します。
  2. 取消アクションをクリックします。
  3. 確認します。

発生する処理:

  • ステータスが取消済みに変更
  • 申請が保留中だった場合:pending_days が減少
  • 申請が承認済みだった場合:used_days が減少(日数が返却)
備考

保留中と承認済みの申請のみ取消可能です。却下済みおよび既に取消済みの申請は取り消せません。


テーブルビュー

休暇申請リストには4つの事前設定ビューがあります:

ビューフィルター
全休暇申請フィルターなし
保留中の申請ステータス = 保留中
承認済みの申請ステータス = 承認済み
却下済みの申請ステータス = 却下済み

利用可能なフィルター

  • ステータス — 保留中、承認済み、却下済み、取消済み
  • 開始日 — 日付範囲
  • 終了日 — 日付範囲
  • 日数 — 数値範囲

通知

システムは休暇申請ライフサイクルの重要なポイントでメール通知を送信します:

申請が提出された時

approve leave requests 権限を持つすべてのユーザーに通知が送信されます。メールには以下が含まれます:

  • 従業員の名前とメールアドレス
  • 休暇タイプ、開始/終了日、合計日数
  • 理由(提供された場合)
  • 申請を表示するリンク

申請ステータスが変更された時

申請が承認、却下、または取り消された場合、従業員に通知が送信されます。メールには以下が含まれます:

  • 休暇タイプ、日付、合計日数
  • 新しいステータス
  • 却下理由(却下された場合)
  • 承認者の名前
  • 申請を表示するリンク

メールテンプレートは設定 > メールアカウント > テンプレートからカスタマイズできます。


ダッシュボードカード

休暇管理システムは3つのダッシュボードカードを提供します:

カードタイプ説明
ステータス別休暇申請円グラフステータス別の申請分布
タイプ別休暇申請棒グラフ休暇タイプ別にグループ化された申請数
保留中の休暇申請テーブルアクションが必要な最新の保留中申請15件

承認・却下ワークフロー

休暇承認ワークフローは、休暇申請が提出から解決までどのように進むかを制御します。HRMモジュールは、設定ページから構成可能な3つのワークフローモードをサポートしています。


ワークフローモード

設定 > HRM設定 > 休暇管理でワークフローモードを設定します。

単一レベル(デフォルト)

最もシンプルなワークフロー。1人の認可ユーザーが申請を確認し、承認または却下します。

従業員 -> 提出 -> マネージャー/HR が承認または却下 -> 完了

approve leave requests 権限を持つすべてのユーザーが申請を承認または却下できます。

マルチレベル

申請は複数の承認段階を経ます。直属のマネージャーとHRの両方の承認を必要とする組織に適しています。

従業員 -> 提出 -> マネージャーが承認 -> HRが承認 -> 完了

自動承認

すべての休暇申請は提出時に自動的に承認されます。人による確認は不要です。

従業員 -> 提出 -> 自動承認 -> 完了

ヒント

ワークフローモードと自動承認休暇タイプ設定を組み合わせて、特定のタイプ(例:在宅勤務)を自動承認しながら、他のタイプ(例:年次休暇)には承認を要求できます。


特定の休暇タイプの自動承認

すべての申請を自動承認する代わりに、承認をバイパスする特定の休暇タイプを選択できます:

  1. 設定 > HRM設定 > 休暇管理に移動します。
  2. 自動承認休暇タイプで、タイプを選択します(例:在宅勤務、代休)。
  3. 保存します。

従業員が自動承認休暇タイプの申請を提出した場合:

  • ステータスは即座に承認済みに設定されます。
  • 休暇残高が更新されます(used_days が直接増加、pending_days のステップなし)。
  • マネージャーへの通知は送信されません。
  • 従業員は承認通知を受け取りません(即時のため)。

自動承認以外の休暇タイプの申請は、この設定に関係なく標準の承認ワークフローに従います。


アクション別残高更新

アクション保留中日数使用済み日数利用可能日数
申請提出+日数減少
申請承認-日数+日数変更なし
申請却下-日数増加
取消(保留中だった場合)-日数増加
取消(承認済みだった場合)-日数増加

誰が承認できるか

承認アクションは approve leave requests 権限によって制御されます。この権限はロールに明示的に付与する必要があります——デフォルトの従業員ロールには含まれていません

この権限を持つべき典型的なロール:

  • HR マネージャー
  • 部門長
  • チームリーダー
  • 任意の管理者ロール

スーパー管理者は常に申請を承認できます(Gate::before でバイパス)。


却下理由

休暇申請を却下する場合、却下理由は必須です。この理由は:

  • 休暇申請レコードに保存されます
  • 従業員の休暇申請詳細ビューで従業員に表示されます
  • ステータス変更通知メールに含まれます

管理者は承認または却下時に管理者メモを追加することもできます。管理者メモは他の管理者にのみ表示され、従業員には表示されません。


休暇申請の取消

従業員と管理者は、保留中または承認済みステータスの休暇申請を取り消すことができます。取消により、消費済みまたは予約済みの休暇日数が従業員の残高に復元されます。


誰が取り消せるか

取消には cancel leave requests 権限が必要です。デフォルトでは、従業員はこの権限を持ち、自身の申請を取り消すことができます。

ユーザー自分の申請を取消可能他者の申請を取消可能
従業員はい(権限あり)いいえ(データスコープにより他者を閲覧不可)
管理者はいはい(権限がある場合)
スーパー管理者はいはい(すべてのチェックをバイパス)

取消方法

  1. 休暇申請に移動します。
  2. 取り消す申請を見つけます(保留中または承認済みである必要があります)。
  3. 休暇取消アクションをクリックします(アクション列にインラインで表示)。
  4. 取消を確認します。

取消時の処理

保留中の申請の取消

取消前:pending_days = 5, used_days = 10, available_days = 3 2日間の保留中申請を取消 取消後:pending_days = 3, used_days = 10, available_days = 5

  • pending_days が申請の日数分減少
  • available_days がそれに応じて増加
  • 申請ステータスが取消済みに変更

承認済みの申請の取消

取消前:pending_days = 3, used_days = 12, available_days = 3 2日間の承認済み申請を取消 取消後:pending_days = 3, used_days = 10, available_days = 5

  • used_days が申請の日数分減少
  • available_days がそれに応じて増加
  • 申請ステータスが取消済みに変更

制限事項

  • 却下済みの申請は取り消せません(既に解決済み)。
  • 既に取消済みの申請は再度取り消せません。
  • 取消アクションボタンは、保留中または承認済みステータスの申請にのみ表示されます。

重複バリデーション

HRMモジュールは、従業員が既存の承認済みまたは保留中の申請と重複する休暇申請を提出することを防止します。これにより、正確な休暇追跡が保証され、休暇の二重予約が防止されます。


仕組み

休暇申請が作成または更新される際、システムは日付範囲の重複をチェックします:

  1. 同一従業員のすべての休暇申請を照会します。
  2. 承認済み保留中の申請のみにフィルタリングします(却下済みと取消済みは無視)。
  3. 編集時は、現在の申請をチェックから除外します。
  4. 以下の式で重複をテストします:existing_start <= new_end AND new_start <= existing_end

重複が見つかった場合、申請はバリデーションエラーで拒否されます。


ブロック(重複)

既存の申請新しい申請結果
1月10-12日(承認済み)1月11-14日ブロック — 1月11-12日で重複
1月15-15日(保留中)1月15-15日ブロック — 完全に同じ日付
1月1-31日(承認済み)1月10-10日ブロック — 既存の範囲内に含まれる

許可(重複なし)

既存の申請新しい申請結果
1月10-12日(承認済み)1月13-15日許可 — 隣接しているが重複なし
1月10-12日(却下済み)1月10-12日許可 — 却下済みの申請は無視
1月10-12日(取消済み)1月10-12日許可 — 取消済みの申請は無視

タイプ間の重複

重複バリデーションはすべての休暇タイプにわたって適用されます。従業員は年次休暇と病気休暇の重複する申請を持つことはできません——休暇タイプに関係なく、日付が競合してはなりません。


休暇繰越

休暇繰越により、ある会計年度の未使用休暇日数を次の年度に繰り越すことができます。この機能は、グローバルレベル(設定)および個別の休暇タイプレベルの両方で設定可能です。


繰越の仕組み

各会計年度末に、システムはすべての従業員の繰越を処理します:

  1. 終了年度の各従業員の休暇残高について:
    • 休暇タイプで繰越が有効かチェックします。
    • 未使用日数を計算します:total_days - used_days - pending_days
    • 繰越上限を適用します(休暇タイプの最大繰越日数とグローバルの最大繰越日数設定のうち小さい方)。
    • 次年度の休暇残高を繰越日数で作成または更新します。
  2. 繰越日数には繰越有効期限設定に基づく有効期限があります。

設定

グローバル設定

設定 > HRM設定 > 休暇管理に移動します:

設定デフォルト説明
繰越有効はい繰越機能のマスタースイッチ
最大繰越日数10すべての休暇タイプにわたるグローバルな繰越日数上限
繰越有効期限(月)3繰越日数は新会計年度開始からこの月数後に期限切れ

休暇タイプごとの設定

各休暇タイプには独自の繰越設定があります:

フィールド説明
繰越この特定の休暇タイプの繰越を有効/無効にする
最大繰越日数このタイプで繰り越せる最大日数

有効な繰越上限は、休暇タイプの制限とグローバル制限の小さい方です。

:休暇タイプは10日の繰越を許可していますが、グローバル最大値は5です。5日のみが繰り越されます。


繰越処理

繰越は、会計年度開始月の初日に実行されるスケジュールコマンドにより自動処理されます:

php artisan hrm:process-leave-carryover

繰越有効期限

繰越日数は永続的ではありません——設定可能な期間の後に期限切れとなります。期限切れ後は、利用可能残高に計上されなくなります。