いつもお世話になっております。
似たような質問があるかもしれませんが、試行錯誤した結果解決できずご相談させていただきます。
発注伝票アプリで一覧表示した複数レコードに、一括登録ボタンで、仕入伝票アプリの
仕入Noの最終値を取得、採番し、仕入伝票アプリへ新規登録(POST)したいと思っております。
・コードは仕入Noを固定値として登録は成功しています。
・仕入Noの最終値は取得出来ています。採番方法が分かりません。
・仕入Noの最終値が"S-2022-0005"だとしたら、"S-2022-0006"から採番します。
・つなぎ合わせでエラーが2か所になってしまっています。。。
ご教示願えればと思います。
(() => {
'use strict';
//レコード一覧画面表示後イベント
kintone.events.on('app.record.index.show', (event) => {
const records = event.records;
// ヘッダースペース要素の取得
const headerSpace = kintone.app.getHeaderMenuSpaceElement();
// ボタン要素の作成
const button = document.createElement("input");
button.value = "一括登録";
button.type = "button";
// ボタンがクリックされた時の処理
const submit = function(){
const recRecords = [];
const postRecords = [];
const url = kintone.api.url('/k/v1/records.json', true)
const query = {
"app": 73,
"query": 'order by 仕入No desc limit 1'
};
return kintone.api(url, 'GET', query).then(function(resp) {
//ここに連番処理
const sNum = resp.records[0].仕入No.value; //S-2022-0001
const num = parseInt(sNum.substring(7), 10) + 1; //1
//const num2 = ( '0000' + num ).slice( -4 ); //仕入No 0埋め
//const autoNo = "S-2022-" + num2; //仕入Noフォーマット
for (let i = 0; i < records.length; i++) {
console.log(num);
}
// 取得したレコード分ループ
records.forEach(function(eachRecord) {
let subTable = eachRecord.発注詳細.value;
// サブテーブル分ループ
subTable.forEach(function(eachRow) {
let tableA = eachRow.value.商品名.value;
let tableB = eachRow.value.数量.value;
let tableC = eachRow.value.単位.value;
let tableD = eachRow.value.単価.value;
let tableE = eachRow.value.摘要.value;
recRecords.push({
"value": {
"商品名": { "value": tableA },
"数量": { "value": tableB },
"単位": { "value": tableC },
"単価": { "value": tableD },
"摘要": { "value": tableE }
}
});
})
postRecords.push({
"仕入先": {value: eachRecord.発注先.value},
"仕入日": {value: eachRecord.発注日.value},
"仕入No": {value: "S-2022-0008"}, //ここを連番にしたい
"発注No": {value: eachRecord.発注No.value},
"担当者": {value: eachRecord.担当者.value},
"仕入詳細": {value: recRecords},
"工番": {value: eachRecord.工番.value},
"科目名": {value: eachRecord.科目名.value}
});
});
const postParams = {
app: 73,
records: postRecords
};
console.log(postParams);
kintone.api(kintone.api.url('/k/v1/records.json', true), 'POST', postParams, (resp) => {
// success
console.log(resp);
}, (error) => {
// error
console.log(error);
});
}).catch(function(e) {
alert("エラーが発生しました - error: " + e.message);
console.log(e);
return false;
});
};
// ボタンをヘッダースペースに追加
headerSpace.appendChild(button);
// ボタンのクリックイベントに処理を登録
button.onclick = submit;
});
})();