Skip to content

労働時間制と時間外の判定

KIZAMI が扱う労働時間制ごとに、時間外労働をいつ・何と比べて判定するかをまとめます。 この判定の違いが、月次一覧に出る列の違いにそのまま表れます。

対象読者は実装者とレビュアーです。労務担当者向けの説明は VitePress のガイド側にあります。

制度によって「時間外」の意味が変わる

フレックスタイム制固定時間制
判定の単位清算期間(1ヶ月)1日 と 1週
比べる相手月の総枠1日8時間 / 1週40時間
日別の法定時間外存在しない存在する
根拠労基法32条の3労基法32条

フレックスで1日10時間働いても、清算期間の総枠に収まっていれば時間外ではありません。 日別の法定時間外が出ないのは実装漏れではなく、法律上そうであるということです。 このため月次一覧では、フレックスのとき時間外列を出しません。出すと「今日は時間外0だった」 という誤った理解を与えます。

逆に固定時間制では、月末を待たずにその日のうちに時間外が確定します。

固定時間制の判定順序

二重計上を防ぐため、必ず日次 → 週次の順で計算します。

日ごと:
  日次法定時間外 = max(0, 実労働 − 1日の法定労働時間(480分))
  法定内労働     = 実労働 − 日次法定時間外

週ごと(週起算曜日から7日):
  法定内労働を日付昇順に累積し、週の法定労働時間を超えた分を
  その日の週次法定時間外とする

先に週で判定すると、1日8時間超として既に時間外にした分を週の集計にも入れてしまい、 同じ労働を二度数えます。

所定外だが法定内(いわゆる法定内残業)は割増賃金の対象外ですが賃金は発生するため、 extraWithinStatutoryMinutes として法定時間外と区別して保持します。所定7時間の会社で 7時間30分働いた30分がこれにあたります。

法定休日の労働は日次・週次のどちらの計算からも除外し、legalHolidayMinutes として 別枠で持ちます(割増率が異なるため。労基法37条1項)。

1日8時間は特例措置対象事業場でも変わらない

特例措置対象事業場(商業・映画演劇業・保健衛生業・接客娯楽業のうち常時10人未満)で 緩和されるのは週の法定労働時間だけ(40時間 → 44時間)で、1日8時間は動きません。 労基法40条・労基則25条の2。

このため LawRulesdailyStatutoryMinutesweeklyStatutoryMinutes を別に持ち、 テナント属性 isSpecialProvisionWorkplace は後者にだけ効きます。

週の起算曜日

週40時間の判定には週の区切りが要ります。就業規則に定めがなければ日曜起算が原則 (昭和63年基発第1号)なので、tenant_setting_versions.week_start_weekday の既定は 0(日曜)です。

月をまたぐ週は、その月の期間内にある日だけで判定します。 前月分を引きずりません。 月次集計の独立性(締めた月が後から動かない)を優先した割り切りで、月初の週で週次法定時間外が 実際より少なく出ることがあります。清算を厳密にする場合は週次の締めが必要になるため、 将来の課題として残しています。

有給の扱いが制度で違う

フレックス固定時間制
有給取得日総枠に算入(actualMinutes に足す)時間外判定に関与しない

フレックスでは「働いたことにして総枠と比べる」必要があります。有給を取った日を0分として 扱うと、その月だけ総枠不足になり不当な控除につながるためです。

固定時間制では、有給は所定労働日の欠勤を打ち消すだけで、1日8時間・週40時間という 実労働に対する上限とは無関係です。有給を足して週40時間を超えたことにするのは誤りです。

期間の途中で制度が変わったら

settingsTimeline の span ごとに労働時間制が変わりえます(契約変更など)。 エンジンは期間開始日に有効だった制度で月全体を計算し、期間内に別の制度が混在していれば mixed_work_system 警告を出します。

これは「閾値は期間開始日基準」という既存の流儀(flex.ts の判断点コメント参照)と揃えたものです。 月の途中で制度が切り替わる運用を正しく集計するには、清算期間を分割して2本の集計を 合成する必要があり、現時点では警告で気づかせるにとどめています。

未実装の制度

  • 変形労働時間制(1ヶ月単位・1年単位。労基法32条の2 / 32条の4) — 週の法定労働時間を 期間平均で判定する。所定労働時間をあらかじめ日ごとに特定する必要があるため、 シフト表の入力が前提になる
  • 事業場外みなし労働時間制(労基法38条の2)
  • 裁量労働制(専門業務型・企画業務型。労基法38条の3 / 38条の4)

いずれも WorkSystem の判別可能ユニオンに派生を足す形で入ります。 EngineOutput.workSystem を見て表示を変える作りにしてあるため、UI 側の分岐も同じ場所で済みます。