勤務票登録スクリプト

ASP*1による自社の勤務票システムの使い勝手が悪く、ブラウザ経由でポチポチ入力するのが苦痛なので、バッチでローカルのテキストファイルからPOSTデータを生成して登録するスクリプトPerl)を書いて愛用している。

今日は時間が空いたので休憩時間のバリデーションルールも書いてみた。


# レコード内容チェックsub validateRecord {
my ( $targetYYYYMMDD, $workType, $startTimeHHMM, $endTimeHHMM, $breakTimeHHMM,
$nightBreakTimeHHMM, $workDetail )
= @_;

$needRestNight = $endTimeHHMM ge '00:15' && $endTimeHHMM le '09:00';
$needRest = $endTimeHHMM ge '21:00' || $needRestNight;

if ($needRest) {
if ( $breakTimeHHMM ne '00:30' ) {
die( REC_ERR_MSG . "30分休憩するように!!" . $targetYYYYMMDD );
}

if ( $needRestNight && $breakTimeHHMM ne '01:00' && $nightBreakTimeHHMM ne '00:30' ) {
die( REC_ERR_MSG . "深夜休憩するように!!" . $targetYYYYMMDD );
}
} elsif ( $breakTimeHHMM gt '00:00' ) {
die( REC_ERR_MSG . "残業が少ないから休憩しない!!" . $targetYYYYMMDD );
}
}

労働基準法上定められた時間内の休憩はとらなければならないので、

  • 休憩時間をとるべきところで、とるべき量をとらないのはNG

というのはいいが、同時に

  • 休憩時間をとらなくてよいところでとっているのもNG
  • 30分刻み以外はNG

というヒステリックにすら思えるルールにしてあるのは、上司がやかましい人で、痛くもない腹をさぐられるのがうっとうしいからだ。