上海レンユアー 松村 様
お世話になっております。
アドバイスいただき、ありがとうございます。
①おっしゃる通り「在庫管理アプリ」に出庫のデータを関連レコードで表示します。
②「在庫数」について知識不足で詰まっております。
「入庫数」フィールドコード:stockNum
「在庫数」フィールドコード:stockNum3とすると「在庫数」の計算が誤ってしまっております。コードについてアドバイスいただけることが可能であれば幸いです。
(function() {
‘use strict’;
kintone.events.on(‘app.record.create.submit’, function(event) {
var record = event.record;
var pickNum = Number(record.pickNum.value); // 出庫数
var destination = record.destination.value; // 出庫先
var itemCode = record.itemCode.value; // 商品コード
var itemAppId = kintone.app.getLookupTargetAppId(‘itemCode’); // 商品アプリのアプリID
// 商品アプリから在庫数を取得
return kintoneUtility.rest.getAllRecordsByQuery({
app: itemAppId,
query: ‘itemCode = "’ + record.itemCode.value + ‘"’,
fields: [‘$id’, ‘$revision’, ‘stockNum’,‘stockNum3’]
}).then(function(getRes) {
if (getRes.records.length !== 1) {
event[‘error’] = ‘商品が特定できません。’;
return event;
}
var stockRecord = getRes.records[0];
var recordId = stockRecord.$id.value;
var recordRevision = stockRecord.$revision.value;
var stockNum3 = Number(stockRecord.stockNum3.value); // 現在の在庫数
var newStockNum = stockNum - pickNum; // 出庫後の在庫数
if (newStockNum < 0) {
event[‘error’] = ‘在庫が足りません。今の在庫数は’ + stockNum + ‘です。’;
return event;
}
// 商品アプリの在庫数を更新し、出庫アプリに出庫情報を登録
var requestParams = {
requests: [
{
method: ‘PUT’,
api: ‘/k/v1/record.json’,
payload: {
app: itemAppId,
id: recordId,
// 商品アプリのデータ取得時と更新時でrevisionが異なる場合はエラーにする
revision: recordRevision,
record: {
stockNum3: {
value: newStockNum
}
}
}
},
{
method: ‘POST’,
api: ‘/k/v1/record.json’,
payload: {
app: kintone.app.getId(),
record: {
destination: {
value: destination
},
itemCode: {
value: itemCode
},
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;
});
});
})();