- 締切済み
ファイルメーカーで給与計算
教えてください。ファイルメーカーでバイトの給与計算をしたいのですが、複雑でわかりません。どなたか教えてください。お願いします。 (午前8時~午後6時まで) 1時間30分まで1時間あたり1,200円 1時間30分を越えた時点からそれ以降 1時間あたり1,000円(30分単位で計算) (午後6時~午前8時まで) 1時間30分まで1時間あたり1,500円 1時間30分を越えた時点からそれ以降 1時間あたり1,300円(30分単位で計算) ※15分未満切り捨て、15分以上切り上げ
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- fabu
- ベストアンサー率40% (2/5)
ここが便利です。 時給月給・バイト給与計算アプリ - オンライン http://pim.jpn.org/_payment/
#2です。補足します。 勤務時間:wTime 夜勤時間:nTime の算出は下記のアルゴリスムの方が良さそうです ・開始時刻(日時分)から終了時刻(日時分)まで、日時分を1分ずつ増加させループする。この間 ・wTime:=wTime+1 ・時刻(時分)だけを切り取る ・if 18:00<時刻<=24:00 or 0:00<時刻<=8:00 then nTime:=nTime+1 この方式の利点は 1.if文が一カ所で明快 2.24時間超勤務にも対応 3.昼→夜→昼、夜→昼→夜も問題ない 4.休憩時間や深夜割り増しにも対応できる 5.一時間半割り増しが夜勤に応用されても構わない などです。計算量は増えますが、現在のコンピュータパワーを考えれば、千人ぐらいの計算は瞬時に終わるでしょう
考えてみると詳細不明な点も出てきましたが、以下のような条件で。 ・徹夜勤務が続いていても、月初、月末でいったん打ち切る ・24時間を超える連続勤務はない ・15分で切り上げ切り下げは取り敢えず無視する ・ファイルメーカーの言語仕様は判らないので、一般的なプログラムの考え方で説明 考え方としては、勤務時間から基礎給与計算。それに夜間割り増しを足すことで良さそうです。 勤務時間:wTime 夜勤時間:nTime 計算式:1.5*1200+(wTime-1.5)*1000+nTime*300 たとえば a.14:00-16:00:\2300 b.16:00-18:30:\2950 c.17:00-18:30:\1950 d.7:00-8:30:\2100 e.17:00-8:30:\20000 出勤簿に出・退時刻が記録されているとしますと 出:sTime 退:eTime パスカル風に書くと if sTime>=18 and (eTime>18 or eTime=<8) then begin //すべて夜勤 wTime:=eTime-sTime; if wTime<0 then wTime:=wTime+24; nTime:=wTime end else if sTime<18 and (eTime>18 or eTime=<8) then begin //昼勤から夜勤 wTime:=eTime-sTime; if wTime<0 then wTime:=wTime+24; nTime:=eTime-18; if nTime<0 then nTime=nTime+24; end else if sTime>=18 and (eTime<18 and eTime>8) then begin //夜勤 から昼勤 wTime:=eTime-sTime; if wTime<0 then wTime:=wTime+24; nTime:=24+8-sTime end else if sTime>=8 and eTime<18 then begin //すべて昼勤 wTime:=eTime-sTime; nTime:=0; end; これを出退勤の数だけ足してやる。 あと勤務時間が12時間を超えて 昼→夜→昼、夜→昼→夜 のパターンを検討してありませんが、同じような考え方で出来るでしょう
ファイルメーカーは使用していないので、補足いただいても適当な回答が出来るか、不明です(^^; その前提で ・勤務時間が細切れに複数ありうるか 例:11時~17時 + 19時~21時 ・「15分未満切り捨て、15分以上切り上げ」は記録時点か、計算時点か
補足
説明不足で申し訳ありません。 どうぞよろしくお願いします。 ・勤務時間が細切れに複数ありうるか →あります。しかし、一勤務毎の給与が算出できればOKです。よって、例のように足し算をしていただかなくて結構です。 ・「15分未満切り捨て、15分以上切り上げ」は記録時点か、計算時点か →計算時点です。