FM16 不在届2 年休時休のカウント
FileMakerによる校務支援システム
今回は年休・時休をどれだけ使用したのかを表示します。
1.年休更新月を設定
多くの人は4月に入職するため年休が付与される月は10月であると思いますが、年度途中で入職した人はその限りではありません。
ですので、年休を付与する月を人ごとに設定します。
テーブル「基本_教員」に新しいフィールド「年休更新月」を作ります。
各教員に対して1から12の値を入力します。
2.年休申請用の年度を計算
テーブル「教員提出_不在届」に新しいフィールド「年休時休申請年度」を作ります。
レイアウト「不在届申請」で「開始日・当該日」を入力したら対応する「年休時休申請年度」を計算し入力するスクリプトを作成します。
スクリプト自体は次の1行だけです。
年休時休申請年度計算スクリプト
フィールド設定 年休時休申請年度
If ( Month(不在届申請::開始日・当該日) ≥ 不在届申請_教員::年休更新月
; Year ( 不在届申請::開始日・当該日 )
; Year ( 不在届申請::開始日・当該日 ) - 1 )
これにより、「開始日・当該日」が「更新月」以上の値なら「その日の年」を入力し、「開始日・当該日」が「更新月」未満の値なら「その日の年 - 1」を入力します。
一般的な年度が4月はじまり3月末終わりであるように、更新月始まり更新月の前の月末終わりで年度を計算しています。
このスクリプトをレイアウト「不在届申請」のフィールド「開始日・当該日」にスクリプトトリガーとして仕込みます。
3.申請した年休・時休の日数・時間を計算
申請した年休・時休の日数・時間を計算します。
テーブル「教員提出_不在届」に新しいフィールド「年休日数」「時休時数」を計算フィールドで作ります。
計算の内容
年休日数:種別が年休⇒終了日 - 開始日 +1
時休時数:種別が時休⇒(終了時刻 - 開始時刻)/3600
※ 時間の計算の返り値は秒での計算結果ですので、3600で割ることで時間を計算しています。
4.年休合計数・時休合計数を計算
年休時休申請年度別で年休日数・時休時数の合計数を計算します。
まず、集計フィールドを作成します。
新しいフィールド「年休合計数」をフィールドタイプ「集計」で作成します。
集計方法を「合計」集計対象に「年休日数」を指定します。
これで関連するレコード全てでの年休日数の合計が計算されます。
計算したいのは教員別かつ年休時休申請年度別での年休日数の合計です。
各レコードに対して教員・年度が一致するレコードが関連するレコードとなるように自己リレーションを作成します。
自己リレーションとは、同じテーブルのテーブルオカレンスをリレーションで結ぶことです。
今回では、レイアウトの主となるテーブルオカレンス「不在届申請(テーブル:不在届)」と集計用のテーブルオカレンス「不在届申請_年休時休合計数(テーブル:不在届)」を結びます。
結び方は、「申請者」と「申請年度」の一致です。
これにより、テーブルオカレンス「不在者申請」のレコードに対して、テーブル「不在届」にある同じ申請者・年度のレコードが関連するレコードとなります。
テーブルオカレンス「不在届申請_年休時休合計数」の「年休合計数」は、現在のレコードの申請者・申請年度が一致するものだけの年休の合計数となります。
レイアウト「不在届申請」に年休合計数・時休合計数のフィールドを設置します。
このフィールドはテーブルオカレンス「不在届申請_年休時休合計数」のものです。
5.時休を年休に換算
時休8時間で年休1日分に換算します。
計算フィールド「年休時休換算日数」を作成します。
「次のコンテキストからこの計算式を評価する」にテーブルオカレンス「不在届申請_年休時休合計数」をしていします。
計算式は「年休合計数+Int( 時休合計数 / 8 )」です。
これにより、時休8時間ごとに年休が1日換算されます。
計算フィールド「年休時休換算時数」も同じ要領で作成します。
計算式は「mod( 時休合計数 , 8 )」です。
レイアウト「不在届申請」に換算後のフィールドを設置します。
このフィールドもテーブルオカレンス「不在届申請_年休時休合計数」のものです。
最後に多少レイアウトを整えて完成です。
以上で申請する画面はすべて完成です。
次回は管理職が承認するための仕組みを作成します。