【簡単】queryを書かずに関連レコードを取得&集計と関連レコードの件数取得や集計を保存時(.submit)ではなく表示時(.show)で行いたいを参考に、同一アプリ内にて、関連レコードの契約数を年間・上半期・下半期ごとに集計し、APIで即時反映するところまでの動作確認ができました。
現状の問題点としては、2020年に作成したレコードを編集した際にも集計条件として「2021」を設定しているため、2021年の集計値が入ってしまうことです。
・実現したいこと⇒作成した年に合わせた集計値のみが反映されるようにしたい
動作はしていますが、作成したスクリプトを十分に理解はできていないため、どこにどのような条件を入れ込めばいいのかを教えていただけませんか?
(function () {
"use strict";
kintone.events.on([
'app.record.create.submit',
'app.record.edit.submit'
], function(event){
RelatedRecordsFieldManager.prototype.getFieldProperties().then(function(){
(new RelatedRecordsFieldManager('履歴')).getRecords(event.record).then(function(records){
var year = '2021';
var amount_total = records.filter(function(record){
return record.年.value === year;}).reduce(function(sum, record){
return sum + Number(record.契約数.value);
}, 0);
var amount_firsthalf = records.filter(function(record){
return record.年.value === year && record.月.value <= 6;}).reduce(function(sum, record){
return sum + Number(record.契約数.value);
}, 0);
var amount_secondhalf = records.filter(function(record){
return record.年.value === year && record.月.value >= 7;}).reduce(function(sum, record){
return sum + Number(record.契約数.value);
}, 0);
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
集計_年間: {
value: amount_total
},
集計_上半期: {
value: amount_firsthalf
},
集計_下半期: {
value: amount_secondhalf
}
}
}).then(function(){
alert('更新します!');
location.reload();
});
});
});
});
})();
フィールドのイメージも添付します。
レコードは月ごとに作成し、テーブルと契約数を受注の度に追記・修正しています。
具体的な記述の仕方をご提示いただけると幸いです。
よろしくお願いいたします。