カテゴリー

勤怠管理で行ってみよう! Part5(タイムカードの集計1)

FileMaker(ファイルメーカー)の実践(Tips) 実践編

タイムカードを集計するための準備

今回は、タイムカードのデータを一か月分まとめて集計していきます。一か月分をまとめることによって、給与計算として使う元のデータとなっていきます。まとめるデータは下記の通りです。

  • 勤務時間の合計
  • 勤務日数、休日日数の合計
  • 残業時間の計算

集計の準備(テーブルの用意)

集計といってもファイルメーカーの集計(レポート)機能は使いません。この機能を使用すれば、新しくテーブルを作る必要がありませんが、データとして利用するのが少し難しくなるからです。例えば、集計されたデータを見るには必ずソートが必要になります。またこの集計データ自体は、保存されないので、利用するのに少し面倒なわけです。また、レコード数が多くなったり、FileMaker Serverを利用してインターネット経由で見る場合など、遅く感じたりすることもあるので、この方法は使いません。

タイムカードの締め日

集計用のテーブルを作る前にタイムカードのデータにいつの給与計算に必要なレコードなのかを判別するためのフィールドを作ります。そのために必要なのが、「締め日」です。

月末締め15日払い、10日締め25日払い、15日締め月末払いなど会社によって採用される物は違います。月末締めであれば、シンプルですが、月の途中に締め日があると少しややこしくなります。

この判別用のフィールドは「支払月」という名称にしておきます。給与を支払う月という意味です。これを「タイムカード」のテーブルに追加します。

月末締め15日払い

この場合は、シンプルで「2017年3月15日」のタイムカードのデータは「4月」というデータを「支払月」に入力させたいわけです。ただ「4月」だけだとどの年かわからなくなるので「201704」にしましょう。計算値自動入力オプションで下記のように設定しましょう。

Let ( [ #date = Date ( Month ( 日付 ) + 1 ; 1 ; Year ( 日付 ) )]; Year ( #date ) & Right ( 0 & Month ( #date ) ; 2 ))

計算式の内容としては、翌月を求めて、そこから日付フィールドが「2017/03/15」の場合「201704」が返るように日付関数「Year」を使って年を日付関数「Month」を使って月を取り出します。日付関数「Date」を使っているのは、翌月を計算するためです。月に「+1」しただけではダメで、12月の場合は13になってしまいます。Date関数を使用すれば、勝手に翌年の1月になります。

また、テキスト関数「Right」を使っているのは、1月~9月は1ケタの数字が返り、昇順で並び替えをしたときに2月より11月が上に来てしまうので、それを避けるために、1ケタの場合に0が付くようになります。

10日締め25日払い

この場合は例えば「2017年3月11日~4月10日までのタイムカードを4月分として」計算します。

Let ( [ #date = Case ( Day ( 日付 ) > 10 ; Date ( Month ( 日付 ) + 1 ; 1 ; Year ( 日付 ) ) ; 日付 )
];
Year ( #date ) & Right ( 0 & Month ( #date ) ; 2 )
)

11日以降は翌月になるので、「+1」、10日以前はその月になるので、「+1」をしません。また、計算式が少し複雑(長く)になる場合は、このように適度に改行しておきましょう。見やすくなります。

15日締め月末払いの場合も基本はこれと同じで、16日以降は「+1」、それより前は「+1」をしないようにすればいいでしょう。

テーブルはこのようになっています。

10日締めの例。

次回は、集計用のテーブルの作成です。