FM17 不在届3 不在の承認
FileMakerによる校務支援システム
前回申請した不在を管理職が承認するための仕組みを作成します。
承認する人は次の4人です。
1.所属長
2.教務部長
3.教頭
4.校長
1.年度別所属・年度別役職を登録
所属長に承認をもらう前提として、申請者の所属と承認者の役職を登録しておく必要があります。
テーブル「基本_年度別所属」「基本_年度別役職」を作成します。
それぞれフィールドは「年度・教員ID・所属・担任組」「年度・教員ID・部署・長副」です。
担任組は学級担任の場合に組の情報も登録しておくために作ります。
長副には「部長」「副部長」などを登録しておきます。
2.テーブル「不在届」に新しいフィールドを作成
次にテーブル「教員提出_不在届」に新しいフィールドを準備します。
承認したひとの名前が入るフィールド「所属長承認」などと、承認がされた日時を記録するフィールド「所属長承認タイムスタンプ」を作成します。
現在の年度とログインしているアカウントを特定するための非保存計算フィールド「c年度」「c教員ID」を作成します。
リレーションを作成するために必要なグローバルフィールド「g教務」「g教頭」「g校長」を作成します。このグローバルフィールドには計算式で「教務」「教頭」「校長」と入力しておきます。
3.リレーションを作成
申請者についてのリレーションは申請で使ったものと同じです。
現在ログインしているアカウントが現在のレコードの所属長であるかの判定用リレーションは少しむずかしいので詳しく解説します。
まず、不在届と年度別所属のリレーションが1つ目にあります。
リレーションは下のようになっています。
不在届 年度別所属
申請者 ー 教員ID
c年度 ー 年度
これにより、関連するレコードは申請者の今年度の所属ひとつだけになります。
次に年度別所属と年度別役職のリレーションを次のように作成します。
年度別所属 年度別役職
所属 ー 部署
c教員ID ー 教員ID
c年度 ー 年度
このリレーションにより、
申請者の今年度の所属と役職側の部署
現在ログインしているアカウントと役職側の教員ID
現在の年度と役職側の年度
この3つが一致しているときのみ関連するレコードが存在します。
逆に1つでも不一致があれば関連するレコードは存在しません。
現在ログインしているアカウントの役職に「教務」「教頭」「校長」があるかの判定を最後のリレーションで行っています。
校長のリレーションで説明します。
リレーションは、不在届の「c年度」「c教員ID」「g校長」と年度別役職の「年度」「教員ID」「役職」とを結んでいます。
これにより、現在ログインしているアカウントの現在の年度の役職が校長である場合のみに関連するレコードが存在します。
それ以外の場合には関連するレコードが存在しないことになります。
このようなほとんどの場合に関連するレコードが存在しないリレーションを作成することはほとんどありませんが、承認するべき人を特定するうまいやり方なのではないかと思っています。
4.レイアウト作成
それではレイアウト「不在届承認」を作成していきます。
レイアウト「不在届申請」をほぼそのまま複製しました。
不在の種別によって日時の項目が表示されたりされなかったりする仕組みもそのまま使っています。
右側には承認ボタンを作成しています。
このボタンを押すと承認のところにボタンを押した人の名前が挿入されるようにします。
ボタンを押すと名前が挿入される(同時にタイムスタンプも作成する)スクリプトは「フィールド設定」だけですので非常にかんたんですが、「所属長」「教務部長」「教頭」「校長」用に4つもスクリプトをつくるのは面倒ですので、ひとつのスクリプトにまとめます。
そのために「スクリプト引数」を使用します。
スクリプト引数はボタンにスクリプトを登録するときに設定できます。
ボタンのスクリプト引数がなにであるかは「Get(スクリプト引数)」でわかります。
スクリプト引数が「所属長」なら所属長のフィールドに名前を挿入するというスクリプトにすればいいのです。
つぎに、現在ログインしているアカウントに応じてボタンを表示したりしなかったりするようにします。
教務部長の承認で説明します。
教務部長承認のボタンを選択し、「次の場合にオブジェクトを隠す」で
「不在届承認_年度別役職_教務の教員IDと現在ログインしてるアカウントが一致しない」と設定します。
これにより、一致するときのみにボタンが表示されます。
この「不在届承認_年度別役職_教務の教員ID」とは先程のリレーションで作成した「現在ログインしているアカウントの現在の年度の役職が教務である場合のみに関連するレコードが存在する」というもので、関連するレコードが存在するならばその教員IDは「現在ログインしているアカウント」にほかなりません。
「FM00000」でログインして、今年度の「FM00000」の役職として「教務」があった場合
役職に「教頭」を追加すると
狙い通りの挙動をしました。
これで権限のないひとが承認ボタンを押すことを防ぎます。
また、承認ボタンが表示されているレコードは承認するべきものだとひと目でわかります。
手前味噌ですが、よくできた作りだと思っております。
5.承認するべきレコードを絞り込む
最後に承認するべきレコードの絞り込みを行うボタンを作成しておきます。
ヘッダーに「所属長」「教務部長」「教頭」「校長」というボタンを作成し、スクリプト引数も設定します。
仕込むスクリプトは
「申請」フィールドに「申請」と入力されていて、「承認」フィールドが空欄のものを検索する
というものです。
作成だけしておいたけれど、まだ申請していないものや、すでに承認したものは表示されません。
トップページから不在届承認のページに遷移するときに、「校長でソート」するように設定しておけば、学校で一番忙しい人のボタンを押す回数を一回減らすことができます。
これで不在届が完成です。