月報

勤怠管理システムの自作-月報承認画面

概要

月報の内容を閲覧し、承認・却下を行う画面です。
月報を却下する場合は、コメントを入力しておくと後々月報を修正するときの参考になります。

仕様

却下の通知

月報が却下された場合、申請者宛てに通知を行います。当時はメールの送信機能がうまく実現できなかったため、メニュー画面で通知を表示するだけです。

自身の最高権限で承認

労務管理部門に所属するユーザーの場合、1回目は上長として、2回目は労務管理部門として承認するという手間が発生します。自身の最高権限で承認すると、上長としての承認はスキップして、労務管理部門としての承認を行うことができます。

下位の承認をスキップすることで実現しているため、月報を紙に印刷した場合、スキップした分の押印欄が空欄になって見えます。

承認関連の仕様

全体として、中小企業でありがちな柔軟な運用を想定しています。

・社員の所属グループに関係なく、誰の月報でも承認できます。
直属の管理者が出張などで不在の場合に、別の管理者が代理で承認できる仕組みです。
承認対象の月報を検索するとき、普段は「部下のみ」を対象に検索しますが、検索条件を変更することで部下以外の月報も閲覧・承認できるようになります。

・下位の承認者をスキップして承認できます。
こちらも直属の管理者が不在の場合の代理承認機能です。
極端な話、主任や部長が承認する前でも、社長が承認すれば全ての承認業務が完了した事になります。
現状ではチェック処理を実装していないため、操作ミスの場合でも下位の承認者をスキップできてしまいます。
普段は下位の承認枠が埋まっている場合のみ承認できるようにチェック処理を加え、「下位の承認者をスキップする」という選択肢を設けて、ONの場合はチェック処理を迂回できるような挙動にすべきでした。

・自身が行った承認を却下に、却下を承認に変更できます。
操作ミスが発生したときの回復用の仕様です。
自身より上位レベルの承認者が未承認の場合のみ操作可能です。
後になって気が付きましたが、承認フラグのtrue←→false切り替えだけでなく、承認フラグをnullにする「承認取消」機能があっても良かったと思いました。

・申請が却下されている場合、それ以降は承認不可能になります。
月報の申請が却下された場合、月報を修正して申請をやり直すことで、承認・却下のデータはリセットされ、再び承認できるようになります。

・自身の承認レベルよりも高いレベルで承認・却下が行われている場合、何もできません。

・承認レベルが同じユーザーが既に承認・却下している場合、何もできません。
関連して、一つの承認欄に複数のハンコを押すような運用は再現できません。
代わりに「主任1」「主任2」のように承認用の役割を複数用意しておくことで、似たような運用ができる可能性はあります。

・締め処理済み(給与計算システムへの連携準備済み)であれば何もできません。

・月報を作った本人が「申請」を行うまでの間は、何もできません。
後述の通り、申請するまでは「枠」が無いのでハンコを押せないという理屈です。
当システムでは、一定の期日になったときに月報を自動作成する機能はなく、ユーザーが月報作成→申請を明示的に行う仕組みです。
もし、打刻データを厳密に管理するタイプのシステムであれば、月報を自動作成して、そのまま申請するという仕組みも実現可能かもしれません。

承認データの扱い

単純に承認・却下の実績データを持つだけでは、「次は誰が承認するべきか」が分からなくなってしまいます。
承認者の階層は事業場ごとに異なる場合があり、システム固定で持つのは避けたいです。
そこで、月報を最初に申請するタイミングで、ハンコを押す「枠」に相当するデータを作ることにしました。
枠を見ることで、次に承認すべき人が誰なのか分かるようになります。
承認・却下の際は、枠に対して値を書き込むようになります。

月報を最初に申請した状態
事業場マスタに登録された承認序列データをもとに、枠を作り上げます。
最初の1枠には申請者自身の押印に相当するデータを書き込みます。

月報
ID
承認
レベル
承認
ユーザーID
承認者
役割
承認
フラグ
説明
10018userstrue承認レベル1は月報を作った本人を表します。
100100jochonullこの後承認すべき人達のデータを事前に作ります。
承認フラグの意味は下記のとおりです
null:未承認
true:承認
false:却下
100500soumunull
100600buchonull
100990maximumnull

管理者が月報を承認した状態

月報
ID
承認
レベル
承認
ユーザーID
承認者
役割
承認
フラグ
説明
10018userstrue
100100jochonullスキップされた人のデータ例
100505soumutrue下位の承認者をスキップして承認することができます。Lv.10の承認者がスキップされ、Lv.50の承認者によって承認されていることを示します。
100600buchonull
100990maximumnull
タイトルとURLをコピーしました