概要
労働基準法に出てくる「事業場」に対応するデータを扱うための画面です。
「事業所」とは必ずしも一致しないかもしれません。
労使協定や就業規則は基本的に事業場単位で作ることになるため、一つの勤怠管理システムの中に複数の事業場データが存在する状態になります。
当システムの場合、月報全体の集計に関する設定は事業場マスタで、日々の労働時間に関する設定は契約マスタで保持しています。
事業場データと月報作成処理は密接に関係しているため、所属する事業場が変わるタイミングで、一旦月報を作る必要があります。
事業場として分離する単位について、参考になりそうな資料がありました。
昭和47年9月18日 発基第91号
https://www.mhlw.go.jp/web/t_doc?dataId=00tb2042&dataType=1&pageNo=1
仕様
特例事業場専用
このフラグをONにすると、1週間の法定労働時間の限度が40時間→44時間に変化します。
契約形態が以下の場合のみ、このフラグを参照します。
- 通常勤務
- 1か月単位の変形労働時間制
- フレックスタイム制(清算期間が1か月以内の場合のみ)
契約データ・カレンダーデータ側にも同じフラグを持っており、週の所定労働時間を最大で44時間まで設定できるようになります。特例事業場専用フラグがONのデータ同士でしか紐付けられない仕組みになっています。
特例事業場とは何ぞや?という定義は、労働基準法施行規則 第25条の2 に書かれています。
https://elaws.e-gov.go.jp/document?lawid=322M40000100023#Mp-At_25_2
解釈ロジック
月報作成処理に使うクラス名を選択します。
ユーザーが判断しやすいように、クラス名とは別に定義した日本語名称を表示しています。
当システムでは、法改正による仕様変更や、企業ごとに微妙に違う処理の実装が必要になった場合に備えて、月報作成ロジックを差し替えられるようにしています。
複雑な分岐処理の実装を諦めて、別のクラスを作ってしまおうという発想です。
事業場マスタでは、月報全体の集計処理に関わるクラスを指定します。
クラス内では以下のような処理をしています。
- 日々の労働時間を集計
- 実動時間が1週間で40時間を超えた場合の残業扱い
- フレックスタイム制において不足した実働時間を繰り越す処理
- 変形期間、清算期間単位での超過労働時間を算出
- 限度時間を超える超過労働時間の値を算出
- 月報全体の整合性チェック
- 有給休暇の買い上げ処理
締日
月報の締日を指定します。事業場の中で別々の締日になる事は無いだろうと予想しています。
(C#)DateTime値の日要素を書き換え、実在しない日付を指定した場合は月末日に書き換える。
/// <summary>
/// 「日」部分に値をセットする。
/// 31日を指定した場合は自動的に月末日に変換する。
/// </summary>
/// <param name="dt">日付</param>
/// <param name="day">日</param>
/// <returns>「日」部分を書き換えた値</returns>
public static DateTime SetDayOrLastDay(this DateTime dt, int day = 31)
{
var d = day;
// 2/30といった指定も強制的に月末日へ変換
if (day > DateTime.DaysInMonth(dt.Year, dt.Month))
{
d = DateTime.DaysInMonth(dt.Year, dt.Month);
}
// 日付部分を書き込み
var clsDate = new DateTime(dt.Year, dt.Month, d);
return clsDate;
}
限度時間の適用
労働基準法 第36条 ⑪ で”適用しない”とされている条件に当てはまる場合のみ、falseにします。
初期値はtrueです。
trueの場合は、月報作成処理内で限度時間のカウントを行います。
チケットの買上
チェックをONにすると、有給休暇や季節休暇の買い上げ機能を有効にできます。
事業の種類
当システムでは「日本標準産業分類」というデータを元に入力する方式にしました。
3つのドロップダウンで、大分類→中分類→小分類の順に選択していきます。
小分類を選択すると、付随するテキストボックスに分類名が入力されます。
ドロップダウンは入力補助機能であり、DBにはテキストボックスの値が文字列として格納されます。テキストボックスの値を任意の文字列に書き換えることもできます。
日本標準産業分類の元データは、総務省のサイトからCSV形式でダウンロードできます。
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/index.htm
上記とは別の方法もありそうです。
どのような方法であっても最終的には人間の目でチェックするため、それっぽい事が書いてあれば大丈夫なはずです。
スタートアップ労働条件
https://www.startup-roudou.mhlw.go.jp/index.html
上記のサイトから辿っていった先のページ
https://www.startup-roudou.mhlw.go.jp/new_agreement/basic/input.php
こちらのページでは、日本標準産業分類とは別の何かを使って入力できるようになっています。
何を元データにしているのか分かりませんでした。
法人名
協定届帳票に表示するための値を入力します。帳票出力の際は、会社設定マスタの値よりも事業場マスタの値の方が優先的に表示されます。
月報承認者
チェックをONにした役割の数だけ、月報の承認欄の枠が作られるイメージです。
事業場ごとに月報承認者の階層が違うかもしれないので、事業場単位で設定できるようにしました。