保存時に合計値を算出してチェックをかけたい

アプリで作業日ごとに時間を登録しています。
1日にできる作業時間に上限を設けており、既存レコードから作業日で抽出し、合計した時間が上限を超えたらエラーとすることはできますか?

例、上限 8h
作業日B タスク1 2h
作業日A タスク1 3h
作業日A タスク2 4h
作用日A タスク3 2h ※3+4+2 > 8h なのでエラー

Naoki Tamuraさん
cstapの瀧ヶ平です。

作業日フィールドが日付フィールドであれば、REST APIのレコードの一括取得にてクエリを 作業日 = TODAY()のように指定して当該レコードの値をすべて取得し、加算すればよいかと思います。

kintone.events.on(["app.record.create.submit", "app.record.edit.submit"], function(event){
return kintone.api(kintone.api.url("/k/v1/records"), {app: kintone.app.getId, query: "作業日 = TODAY()"}).then(function(res){
var sum = parseInt(event.record.作業時間.value);
res.records.forEach(function(record){
sum += parseInt(record.作業時間.value);
});
if(sum > 8){
event.error = "Error";
}
return event;
});
});

のような形で良いのではないでしょうか?

cstap 瀧ヶ平様

ご教授ありがとうございます。問題なく動作しましたが、編集時に上限を超過するような場合は、加算する際にレコードIDを条件に除くようにすればよいのでしょうか?

Naoki Tamuraさん

すいません「編集時に上限を超過するような場合」というのがよくわからないのですが、どういうことでしょうか?

レコード編集時の計算という意味であればおっしゃるようにレコードIDを除外条件とするようにクエリを設定すれば問題ないかと思います。

cstap 瀧ヶ平様
説明不足失礼しました。

例、上限8h
作業日B タスク1 2h
作業日A タスク1 3h
作業日A タスク2 3h
作業日A タスク3 1h ※

一度、上記内容で登録し、※が間違えていたので、1hから2hに変更しようとした場合にどうするべきかという質問でしたが、除外するように対応します。