いつも大変お世話になっております。
一括で別のアプリに登録する
を応用したいですが、行き詰まっております。
項目を追加して、一年分のデータが登録したら、一覧画面でボタンをクリックし、同じアプリ内に来年度データの自動作成をしたいです。その際:
・年度=今の年度+1年 ;契約開始日:今の契約開始日+1年 ;残数⇒来年度の「前年残数」に反映される。
初心者のもので、どなたかコード作成の修正をご指導いただけますと幸いです。どうぞよろしくお願いいたします。
今作っているコード(コードを一つにまとめたいですが、できなくて、2個になっております・・・):
①契約終了日の自動計算
(function() {
"use strict";
kintone.events.on([
'app.record.create.show',
'app.record.edit.show',
'app.record.index.edit.show',
'app.record.detail.show',
'app.record.create.change.契約開始日',
'app.record.edit.change.契約開始日',
'app.record.create.change.契約期間',
'app.record.edit.change.契約期間'
], function(event) {
var record = event.record;
// フィールド制御
record['契約終了日']['disabled'] = true;
if(record['契約開始日'].value){
record['契約終了日'].value
= moment(record['契約開始日'].value)
.add(parseInt(record['契約期間'].value), 'year')
.subtract(1, 'day')
.format('YYYY-MM-DD');
}
// 契約年数が未定義になった時
if(!record['契約期間'].value){
record['契約終了日'].value = null;
}
return event;
});
})();
②一括登録ボタン
(function() {
‘use strict’;
kintone.events.on(‘app.record.index.show’, function(event) {
var records = event.records;
// ヘッダースペース要素の取得
var headerSpace = kintone.app.getHeaderMenuSpaceElement();
// ボタン要素の作成
var button = document.createElement(‘input’);
button.value = ‘一括登録’;
button.type = ‘button’;
// ボタンがクリックされた時の処理
var submit = function() {
// PUTするRecordsを用意する。
var put_records = [];
// レコード一覧のイベントで取得したレコードそれぞれに対して登録の処理を行う
records.forEach(function(data) {
var record = {
‘年度’: { ‘value’: parseInt(‘年度’, 10) - 1 },
‘残数’: { ‘value’:(typeof 残数 === “undefined”) ? 0 : parseInt(record[‘残数’].value) },
‘契約開始日’: { ‘value’:moment(‘契約開始日’).add(1, ‘year’).format(‘YYYY-MM-DD’)},
};
// レコードそれぞれに対して決定するフィールドを定義
record[‘顧客コード’] = data[‘顧客コード’];
record[‘契約NO’] = data[‘契約NO’];
record[‘支払方法’] = data[‘支払方法’];
record[‘商品’] = data[‘商品’];
record[‘数量’] = data[‘数量’];
record[‘単価’] = data[‘単価’];
record[‘年度’] = data[‘年度’];
record[‘前年残数’] = data[‘残数’];
//record[‘残数’] = data[‘残数’];
record[‘契約開始日’] = data[‘契約開始日’];
record[‘契約終了日’] = data[‘契約終了日’];
put_records.push(record);
});
var param = {
‘app’: 849,//このアプリ
‘records’: put_records
};
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘POST’, param, function(resp) {
// success
alert(‘来年度へ登録成功しました。’);
console.log(resp);
}, function(error) {
// error
console.log(error);
});
};
// ボタンをヘッダースペースに追加
headerSpace.appendChild(button);
// ボタンのクリックイベントに処理を登録
button.onclick = submit;
});
})();