kintoneを始めて1カ月の初心者です。現在kintoneUtilityforJavascriptを使用し
出庫アプリで注文した数を在庫アプリから減らす在庫管理アプリを制作しています。
その際にbulkrequestを使い在庫アプリと出庫アプリを同時に操作しているのですが
可能であればこれらの動作をkintoneRESTAPIのbulkrequestではなくkintoneUtilityforJavascriptのレコード操作で行いたいです。恐らく非同期処理かAPIの知識・kintoneUtilityforJavascriptの知識が至らないという点しかわからず現在復習をしています。この変更をしたいのは下記コードでの39行目(// 商品アプリの在庫数を更新し、出庫アプリに出庫情報を登録)からの処理です。宜しくお願い致します。
(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’]
}).then(function(getRes) {
if (getRes.records.length !== 1) {
event[‘error’] = ‘商品が特定できません。’;
return event;
}
//商品の出庫数が0の場合エラー
if(pickNum === 0){
event[‘error’] = ‘出庫数が0になっています。’;
return event;
}
var stockRecord = getRes.records[0];
var recordId = stockRecord.$id.value;
var recordRevision = stockRecord.$revision.value;
var stockNum = Number(stockRecord.stockNum.value); // 現在の在庫数
var newStockNum = stockNum - pickNum; // 出庫後の在庫数
if (newStockNum < 0) {
event[‘error’] = ‘在庫が足りません。今の在庫数は’ + stockNum + ‘です。’;
return event;
}
39 // 商品アプリの在庫数を更新し、出庫アプリに出庫情報を登録
var requestParams = {
requests: [
{
method: ‘PUT’,
api: ‘/k/v1/record.json’,
payload: {
app: itemAppId,
id: recordId,
// 商品アプリのデータ取得時と更新時でrevisionが異なる場合はエラーにする
revision: recordRevision,
record: {
stockNum: {
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;
});
});
})();