設定

勤怠管理システムの自作-カレンダー編集画面

概要

個々の日付が労働日, 所定休日, 法定休日のどれにあたるかを設定する画面です。
カレンダー風のレイアウトで日付タイプの設定を行います。

通常勤務の場合は日付タイプの設定のみ、
変形労働時間制の場合は日付タイプに加えて、日々の始業時刻・終業時刻・休憩時間帯、
フレックスタイム制の場合は日付タイプに加えて、日々のコアタイム・フレキシブルタイム・休憩時間を設定します。

振替休日について

当システムには振替休日という概念はありません。面倒くさそうなので設計の時点で無視したのが原因です。振替休日が必要になった場合は、この画面で日付タイプを変更する想定です。

仕様

操作

カレンダー上でドラッグすると複数の日付を選択でき、日付タイプなどを一括入力できます。
ドラッグ操作で選択という挙動を実現するために、jQuery UIの「Selectable」を使いました。

デザインについて

カレンダーの選択状態や日付タイプは色で区別します。
色覚が原因で操作できないという問題が発生しないように、文字列で表現する機能も付いています。
カレンダーの日付が選択状態になっている場合「●」の文字を表示します。
日付タイプであれば「所」「法」の文字を表示します。

1年単位の変形労働時間制の場合は、特定期間を表すために「特」の文字を表示します。

データの取得

起算日から1年分の日付を表示します。1年後の応当日が変形期間・清算期間の途中になってしまう場合、期間の最終日まで表示します。変形期間・清算期間内での労働時間のチェックをするために期間が途切れないようにしています。

一括設定機能

例えば「土曜日は所定休日、日曜日は法定休日、祝日は所定休日」と一括設定できます。

実験的な機能として、祝日データはGoogleカレンダーからAPI経由で取得した結果を使っています。本格的なシステムとするなら、祝日データは自分で用意する必要があるはずです。

コピー機能

画面上に表示しているカレンダーデータをコピーして、新たなデータを作成する機能です。
交替勤務制で運用する場合、この機能を使って別々のカレンダーを作り、別々の曜日を労働日として指定します。

所定労働日数の計算

有給休暇付与の時に、この値をもとにして付与する休暇の数を決定します。

帳票出力項目の自動計算

1年単位の変形労働時間制では、旧協定が存在する場合は1日の労働時間や変形期間内の労働日数に制限がかかることがあります。旧協定としてシステム内に存在するデータを参照する場合に備えて、1日の労働時間の最大値や労働日数などを自動計算してDBに保持しています。

入力チェック

休日の頻度

変形労働種別休日の頻度参考情報
通常勤務1週間に1度 or 4週間で4日労働基準法 第35条
1か月単位の変形労働時間制1週間に1度 or 4週間で4日労働基準法 第35条
1年単位の変形労働時間制7日に1度
特定期間中は1週間に1度
労働基準法施行規則 第12条の4 ⑤
1週間単位の変形労働時間制1週間に1度 or 4週間で4日労働基準法 第35条
フレックスタイム制1週間に1度 or 4週間で4日労働基準法 第35条

「1週間」や「4週間」の定義について
起算日から1週間・4週間ごとにグループ化した結果を指します。

フレックスタイム制で完全週休二日制フラグをtrueにした場合、総労働時間の総枠の計算式が変わります(総枠が拡大して労働時間の最大値が増えます)。違法な状態での運用を防ぐため、本当に休日が2日確保されているかチェックを行います。

休憩時間の長さ

変形労働時間制・フレックスタイム制の場合は、この画面で休憩時間を指定できます。
労働基準法 第34条 にある休憩時間が確保されていることをチェックします。

労働日数の限度

労働基準法施行規則 第12条の4 ③
1年単位の変形労働時間制の場合のみ該当します。
関連資料
https://www.mhlw.go.jp/new-info/kobetu/roudou/gyousei/kantoku/dl/040324-6a.pdf

計算式
労働日数の限度 = A * B / C
※小数点以下切り捨て

A
初期値は280日
ただし、下記①と②が両方ともtrueを返した場合、
③の結果.AddDays(-1) と 280日 どちらか小さい方の値を返す。

①下記条件全てを満たす旧協定が存在する場合、trueを返す
・1年単位の変形労働時間制についての労使協定
・対象期間が3か月を超える
・新協定の対象期間の初日.AddYears(-1) ~ 新協定の対象期間の初日.AddDays(-1) の間を一部でも対象期間に含んでいる

②下記条件いずれか1つでもtrueとなる場合、trueを返す
・新協定の1日の最長労働時間 > 旧協定の1日の最長労働時間
・新協定の1日の最長労働時間 > 9時間
・新協定の1週間の最長労働時間 > 旧協定の1週間の最長労働時間
・新協定の1週間の最長労働時間 > 48時間

③旧協定の1年あたりの労働日数
return 旧協定の対象期間中の総労働日数 * 旧協定の対象期間中の暦日数 / 旧協定の1年間の日数(※)
※基本は365。旧協定の対象期間中の暦日数が366日の場合のみ366とする
計算結果は小数点以下切り捨て

B
対象期間の暦日数

C
1年の日数。
基本は365を返すが、対象期間の暦日数が366の場合のみ、こちらも366を返す。

変形期間・清算期間内での労働時間の限度

最初から割増賃金の支払いを前提として法定労働時間を超えるような設定をすることは想定していません。所定労働時間やコアタイムの設定が法定労働時間を超える場合はエラーとしています。

変形労働種別限度参考情報
通常勤務なし
1か月単位の変形労働時間制1週間あたり40時間※1労働基準法 第32条の2
労働基準法施行規則 第25条の2 ②
1年単位の変形労働時間制1週間あたり40時間
1週間単位の変形労働時間制なし変形期間==1週間
フレックスタイム制清算期間 <= 1か月の場合
1週間あたり40時間※1
上記以外の場合
1週間あたり40時間
労働基準法 第32条の3
労働基準法 第32条の3の2
労働基準法施行規則 第25条の2 ③
労働基準法施行規則 第25条の2 ④
追加の制限あり※2

※1
特例事業場の場合は44時間。
当システムでは特例事業場専用フラグがtrueの場合44時間になります。

※2
労働基準法 第32条の3 ②
清算期間が1か月を超える場合
清算期間を1か月ごとにグループ化し、各グループごとの労働時間が1週間あたり50時間を超えないこと。
当システムの場合、総労働時間を「1日n時間×所定労働日数」形式で定める場合に上記のチェックを行います。また、コアタイムの合計が上記の制限を超えないことをチェックしています。

「1週間あたり」の計算式
限度 = 週法定労働時間(40時間 or 44時間) * (変形期間の暦日数 / 7)
(小数点以下切り捨て)
ただし、フレックスタイム制かつ完全週休二日制の場合のみ
限度 = 所定労働日数 * 8時間
とすることができます。

1年単位の変形労働時間制の場合のみ下記の制限があります(労働基準法施行規則 第12条の4 ④)

  • 労働時間が48時間を超える週は連続3週間まで
  • 対象期間を1週間ごとにグループ化 → グループの先頭の1件をキーにして3か月ごとに分割 → 分割した各グループ内で労働時間が48時間を超える週は最大3件まで。

1週間の労働時間の限度

変形労働種別限度参考情報
通常勤務40時間※1労働基準法 第32条
1か月単位の変形労働時間制なし
1年単位の変形労働時間制52時間労働基準法 第32条の4
労働基準法施行規則 第12条の4
労働基準法施行規則 第25条の2 ④
1週間単位の変形労働時間制40時間労働基準法 第32条
労働基準法施行規則 第25条の2 ④
フレックスタイム制なし

※1
特例事業場の場合は44時間。
当システムでは特例事業場専用フラグがtrueの場合44時間になります。

1日の労働時間の限度

変形労働種別限度参考情報
通常勤務8時間労働基準法 第32条 ②
1か月単位の変形労働時間制なし労働基準法施行規則 第25条の2 ②
1年単位の変形労働時間制10時間労働基準法施行規則 第12条の4
1週間単位の変形労働時間制10時間労働基準法 第32条の5
フレックスタイム制なし
タイトルとURLをコピーしました