シフト表作成ページ
【ページの説明】
朝6時〜翌朝6時表記のシフト表を15分単位で作成するページです。
下のフォームに入力した情報でシフト表を作成します。

(動作確認だけならSample → 表示 ですぐできます)
※サーバーサイドで作成するため、各ボタンでリロードします。

制作過程はこちらの「Hatena Blog」で

◆入力規制:
 表示名4文字、時給4桁まで、スタッフ登録人数10から60名です。

◆操作パネル説明:
 操作パネルの◆にカーソルをあわせると説明が出ます。
 (スマホの方:表示後、別のところをタッチしてください)

◆データ入力、もしくはアップロード後、表示を押してください。

【入力補助操作パネル】


スタッフ人数変更 

数字変更後、人数変更を押すと人数の変更ができます。
ただし、先に入力した情報は消えます。ご注意ください。


サンプルデータ呼び出し 

Sampleを押すとサンプル情報が20人分自動入力されます。
自動入力情報は、後で追加・変更ができます。


概算人件費は休憩考慮する 

チェックを入れると法定休憩時間を考慮して計算されます。


CSVファイルの読込み  

csvデータをアップロードできます。
データの形はファイル仕様を押してご確認ください。
csvデータをアップロードした場合、人数制限はありません。


※CVSファイルデータの仕様

スタッフデータ入力フォーム

表示名 時給 シフト色
開始終了開始終了開始終了開始終了開始終了開始終了開始終了

【CSVファイルの形式について】
CSVファイルの容量
150KBまで

ファイル形式
拡張子がcsv(text/plainのcsvはOK)

データ形式について
行の形式(32データ)
No,名前,時給,シフト色,「出勤時間,出勤分,退勤時間,退勤分」を月〜日まで繰返して改行
名前は4文字まで、時給の数字はカンマなし4桁までにしてください。
出勤、退勤の時間は、24時間表記で「時間だけ」を半角数字(6や10など)、分は0,15,30,45の半角数字にし、 勤務がない場合は,,で空データを作ってください。0を入れると0時と判定します。通常と同じ用に24時は存在しなく、0時判定です。
また、時間だけ、分だけとどちらかしか数字が入ってない場合はエラーを返します。
色は、
red1,blue1,purple1,green1,yellow1,red2,blue2,purple2,green2,yellow2
の10色で、表記はこのとおりに半角アルファベット数字で入れてください。
登録人数が多くなると、用紙の調整が必要になります。ライブラリの改ページ機能はオフにしてますので、上手に調整してください。 需要があれば2枚出しに変更できるようにします。
また、データの1行目(項目)と1列目(No)はつかいません。ご自身の管理用に使ってください。
(注意:データの形が少しでも違うとエラーになり表示されません。)

【シフト表の解説】

表示の工夫
データがどの順番でも、表の隙間を上から順に埋めて表示し、同じ時間で勤務が重なっても行数は自動で増え、 深夜勤務者が翌日6時以降で勤務した場合、翌日に表示されます。日曜日の深夜勤務者の場合、月曜に反映されます。 ただし、24時間以上のシフトは対応していません。必要なら実装方法はありますが、スタッフ個別管理が必要です。

時間単位について
1時間単位でサンプル表示してましたが、15分単位表示に変更しました。1分でも理論上は可能ですが表示に工夫は必要です。 また、1時間4単位に分割しての作成なので、PDF出力時の横幅設定は0.1単位と小さくなってます。(出力を4倍する都合上) 設定数を4倍するなどで対処できますが、いまのところは生のサイズで使っています。

登録人数について
スタッフデータの入力する人数上限を決めているのは、すべてブラウザで入力するのは考えにくいかと思いますので制限してます。 プログラム自体はデータベースにつなぐ前提で作ったものなので制限なく自由にできます。そのためCSVデータがあれば人数制限なく 表示させてます。

概算給与計算について
休憩考慮チェックを入れると法定休憩を加味した計算になり、残業、深夜勤務も考慮して計算します。 深夜勤務者が翌6時以降も勤務した場合、勤務開始日に計算されます。ただし、連続勤務でも別々に入力した場合は 別の日として計算します。 また、月概算の計算根拠は【週×4.35 → 年365日÷12÷7】となっています。 スタッフ別に年間概算を出しているのは、扶養内金額をオーバーしないか?をざっと知るためのものです。

【仕様の解説】

作成言語
PHPで集計、HTML、CSSで表示し、表示コントロールにJavascriputを少し使っています。 PDF出力はライブラリのTCPDFを利用しています。 これはMySQLのデータベースとつないでいませんが、データベースとつなげて使う想定で作成されたものです。

発展させた使い道
このサイトはブラウザからデータを入力、もしくはCSVデータを読み込んで表示してますが、 もともとはMySQL上にスタッフデータベースを作成して、契約書発行や更新、連絡などの業務管理をしながら、 基本シフトを確認できるものとして作成したものです。複数店舗管理をする上で、各店のシフト状況、アルバイトの契約更新状況がタイムリーで把握できるものは重宝します。
例えば、シフトの人時(1時間あたりの人数)を2名と管理者が設定しておけば、店長がデータを更新したときに、1名以下しかいないのであれば不足、 3名以上になっていれば余剰と判断材料になります。必ずしもその数字で画一判断できませんが、現地に行かなくてもある程度管理できるようになれば、 業務軽減は大きなものになります。そんな複数店舗管理者向けのシステムのサンプルは サンプル集 にございます。