いつもお世話になっております。
前回投稿テーブル計算についての続きでまだ改造に当たってスムーズに進まなくて再度質問させていただきました。ぜひアドバイスいただければ幸いです。
やりたいこと:月が1月・2月の場合:時間外とされるのは勤務時間が8時間を超えた場合。それ以外の月は10時間を越えた場合にして、さらにユーザーにはテーブルに「時間外T」を非表示にし(上長には表示させたい)、「時間外」は求めたい。
以下のようなコードで一応動きはしてますが、テーブルの「時間外T」を非表示にできず、また「時間外」が計算式でSUM(時間外T)になっているので、これもどうすればいいかわからなくなっております。アドバイスお願い致します。
(function() {
“use strict”;
kintone.events.on([“app.record.create.show”, “app.record.index.edit.show”, “app.record.edit.show”, “app.record.create.change.Table”, “app.record.edit.change.Table”], function(event) {
event.record.会議合計.disabled = true;
event.record.研修合計.disabled = true;
event.record.質問対応合計.disabled = true;
event.record.時間外.disabled = true;
event.record.実務日数.disabled = true;
var table = event.record.Table.value;
table.forEach(function(row) {
row.value.勤務時間.disabled = true;
row.value.時間外T.disabled = true;
});
return event;
});
kintone.events.on([
“app.record.create.show”, “app.record.edit.show”, “app.record.create.change.Table”, “app.record.edit.change.Table”,
“app.record.create.submit”, “app.record.edit.submit”,
“app.record.create.change.日付”, “app.record.edit.change.日付”,
“app.record.create.change.区分”, “app.record.edit.change.区分”,
“app.record.create.change.開始”, “app.record.edit.change.開始”,
“app.record.create.change.終了”, “app.record.edit.change.終了”,
“app.record.create.change.休憩”, “app.record.edit.change.休憩”,
], function(event) {
var record = event.record;
var mwork = {‘会議合計’: moment.duration(0), ‘研修合計’: moment.duration(0), ‘質問対応合計’: moment.duration(0),‘時間外’: moment.duration(0) };
var dailyWHours = {};
var table = record.Table.value;
table.forEach(function(row, index) {
if (row.value.開始.value && row.value.終了.value && row.value.休憩.value) {
var whours = moment.duration(row.value.終了.value).subtract(moment.duration(row.value.開始.value)).subtract(Number(row.value.休憩.value), ‘hours’);
row.value.時間外T.value = 0;
if (whours.as(‘hours’) > 0) {
row.value.勤務時間.value = whours.as(‘hours’);
var dt1 = row.value.日付.value;
if (dt1) {
if (!dailyWHours.hasOwnProperty(dt1)) {
dailyWHours[dt1] = { whours: whours.as(‘hours’), index: index };
} else {
dailyWHours[dt1].whours += whours.as(‘hours’);
dailyWHours[dt1].index = index;
}
}
var kubun = row.value.区分.value + ‘合計’;
if (mwork.hasOwnProperty(kubun)) {
mwork[kubun] = mwork[kubun].add(whours);
}
} else {
row.value.終了.error = ‘開始 > 終了’;
}
} else {
row.value.勤務時間.value = ‘’;
}
});
Object.keys(mwork).forEach(function(key) {
record[key].value = mwork[key].as(‘hours’);
});
record[‘実務日数’].value = Object.keys(dailyWHours).length;
Object.keys(dailyWHours).forEach(function(dt) {
var dInfo = dailyWHours[dt];
var past = record.月.value;
if (past === ‘1月’ || past === ‘2月’) {
if (dInfo.whours > 8) {
table[dInfo.index].value.時間外T.value = dInfo.whours - 8;
} else {
table[dInfo.index].value.時間外T.value = 0;
}
}else{
if (dInfo.whours > 10) {
table[dInfo.index].value.時間外T.value = dInfo.whours - 10;
} else {
table[dInfo.index].value.時間外T.value = 0;
}
}
});
return event;
});
})();