いつも大変お世話になっております。
[安全に在庫管理を行うテクニック2 - リビジョンを試そう -
](/hc/ja/articles/115002152143-%E5%AE%89%E5%85%A8%E3%81%AB%E5%9C%A8%E5%BA%AB%E7%AE%A1%E7%90%86%E3%82%92%E8%A1%8C%E3%81%86%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF2-%E3%83%AA%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E8%A9%A6%E3%81%9D%E3%81%86-)を参考にアプリを作成しているのですが、
出庫アプリで、サブテーブルを使って商品と出庫数を管理するときに、
サブテーブルの2行目以降の内容を在庫アプリに反映させる方法がわからないため、どなたかご教示いただけませんでしょうか?
出庫アプリ:出庫する商品の種類が一度に2つ以上あった場合のためにサブテーブルを使用したい。複数の商品名と出庫数を一括で在庫アプリに反映させたい。
在庫アプリ:商品ごとにレコードを作成して管理したい(サブテーブルは使用していない)
現状のソースは以下の内容です。よろしくお願いいたします。
(function(){
'use strict';
kintone.events.on(['app.record.create.submit'],
function(event){
const record = event.record;
const tableRecords = event.record.商品数.value; //テーブルのフィールドコード
const destination = record.destination.value; // 出庫先の施設
var pickNum = []; // 出庫数
var version = []; // バージョン
var itemCode = []; // 商品名
var stockRecord = []; // 在庫数
for(var i=0; i<tableRecords.length; i++){
pickNum.push(tableRecords[i].value['pickNum'].value);
version.push(tableRecords[i].value['version'].value);
itemCode.push(tableRecords[i].value['itemCode'].value);
}
// 在庫アプリから在庫数を取得
return kintoneUtility.rest.getAllRecordsByQuery({
app: 362, //在庫アプリのアプリID
query: 'itemCode like"' + itemCode + '"', //←ここで2つ目以降の商品名が拾えない
fields: ['$id', '$revision', 'stockNum']
}).then(function(getRes) {
stockRecord.push(getRes.records[i]);
const recordId = stockRecord.$id.value;
const recordRevision = stockRecord.$revision.value;
const stockNum = Number(stockRecord.stockNum.value); // 現在の在庫数
const newStockNum = stockNum - pickNum; // 出庫後の在庫数
if (newStockNum < 0) {
event['error'] = '在庫が足りません。今の' + itemCode + 'の在庫数は' + stockNum + 'です。';
return event;
}
// 在庫アプリの在庫数を更新し、出庫アプリに出庫情報を登録(bulkRequestを使って複数アプリの更新を実行)
const requestParams = {
requests: [
{
// 在庫アプリの情報を更新
method: 'PUT',
api: '/k/v1/record.json',
payload: {
app: 362,
id: recordId,
// 出庫アプリのデータ取得時と更新時でrevisionが異なる場合はエラーにする
revision: recordRevision,
record: {
itemCode: {
value: itemCode
},
stockNum: {
value: newStockNum
}
}
}
},
{
// 出庫アプリにレコードを追加
method: 'POST',
api: '/k/v1/record.json',
payload: {
app: kintone.app.getId(),
record: {
destination: {
value: destination
},
version: {
value: version
},
商品数: {
value: [
{
value: {
itemCode: {
value: itemCode
},
version: {
value: version
},
pickNum: {
value: pickNum
}
}
}
]
}
}
}
}
]
};
return kintone.api(
kintone.api.url('/k/v1/bulkRequest', true),
'POST',
requestParams
).then(function(postRes){
// bulkRequestで登録した詳細ページに移動
location.href = '/k/' + kintone.app.getId() + '/show#record=' + postRes.results[1].id;
return false;
}).catch(function(error){
// 追加に成功しなかった場合にはエラーを表示
console.log(error);
event['error'] = '出庫に失敗しました。';
return event;
});
}).catch(function(error) {
console.log(error);
event['error'] = '商品を取得できませんでした。';
return event;
});
});
})();