「残業申請」を使用し、項目タイプ「日付」(「残業開始時間」と「残業終了時間」)で勤務時間の自動計算を行いたいと考えております。
ヘルプデスクに問い合わせたところ、機能としては未実装だがworkflow.request.approve.show イベントで、イベントオブジェクトを利用することで、項目の値を書き換えることが可能と提案をいただきました。
【項目コード】
・ 開始時間:start
・ 終了時間:end
・ 勤務時間計(合計):view_kinmu_kei
・ 端数調整後(30分単位で切り上げ、切り捨て):view_shikyuu_kei
【Javascript ファイル】
(() => {
"use strict";
const events = ["workflow.request.approve.show"];
garoon.events.on(events, (event) => {
const requests = event.request;
const start = requests.items.start.value;
const end = requests.items.end.value;
const startDate = new Date(start.date + "T" + start.time + "+09:00");
const endDate = new Date(end.date + "T" + end.time + "+09:00");
const diffInMilliseconds = endDate - startDate;
// 残業時間を計算
const diffInMinutes = diffInMilliseconds / 60000; // ミリ秒を分に変換
const diffInHours = diffInMinutes / 60; // 分を時間に変換
// 端数調整
vconstar roundedTime = Math.round(diffInHours);
requests.items.view_kinmu_kei.value = diffInHours.toFixed(2);
requests.items.view_shikyuu_kei.value = roundedTime;
return event;
});
})();
上記は、実行したところ「日付」の自動計算を行うことが可能とご提示いただいた内容です。
初歩的な質問となってしまうのですが、申請者が入力する日付以外の「 勤務時間計」と「端数調整後」の項目はそれぞれ「数値」として設定すれば良いのでしょうか。
それとも「 JavaScriptカスタマイズ用項目の追加」で該当の項目コードのみ設定すれば良いのでしょうか。