実現したいこと
サンプルコードのままでは追加したルックアップフィールドの情報がレコードに反映されないので
反映されるようにしたい。
追加したいのはProjectCode(案件管理番号)で、itemCode(商品コード)とは別のアプリです。
エラー情報
商品を取得できませんでした
利用したソースコード
試したこと
太字部分を追加しましたが、正しい記述方法がわかりません。
(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 itemPrice = record.itemPrice.value; // 販売価格
var itemAppId = kintone.app.getLookupTargetAppId(‘itemCode’); // 商品アプリのアプリID
var projectCode = record.projectCode.value; // 案件管理番号
var projectAppId = kintone.app.getLookupTargetAppId(‘projectCode’); // 案件管理アプリのアプリID
// kintone JS SDK
var con = new kintoneJSSDK.Connection();
var kintoneRecord = new kintoneJSSDK.Record(con);
// 商品アプリから在庫数を取得
return kintoneRecord
.getRecords(itemAppId, ‘itemCode = "’ + record.itemCode.value + ‘"’, [‘$id’, ‘$revision’, ‘stockNum’], false)
.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 stockNum = Number(stockRecord.stockNum.value); // 現在の在庫数
var newStockNum = stockNum - pickNum; // 出庫後の在庫数
if (newStockNum < 0) {
event.error = ‘在庫が足りません。今の在庫数は’ + stockNum + ‘です。’;
return event;
}
// 在庫アプリのアプリID
var warehouseAppId = kintone.app.getId();
// 商品アプリの在庫数を更新し、出庫アプリに出庫情報を登録
var stock = {
stockNum: { value: newStockNum }
};
var warehouse = {
destination: { value: destination },
itemCode: { value: itemCode },
itemPrice : { value: itemPrice },
pickNum: { value: pickNum }
};
var warehouse2 = {
projectCode: { value: projectCode }
};
var warehouseAppId = kintone.app.getId();
var kintoneBulkRequest = new kintoneJSSDK.BulkRequest(con);
var responseBulkRequest = kintoneBulkRequest
.updateRecordByID(itemAppId, recordId, stock, recordRevision)
.addRecord(warehouseAppId, warehouse)
.updateRecordByID(projectAppId, projectCode)
.addRecord(WarehouseAppid, warehouse2)
.execute();
// 実行
return responseBulkRequest
.then(function(postRes) {
// bulkRequestで登録した詳細ページに移動
location.href = ‘/k/’ + warehouseAppId + ‘/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;
});
});
})();
再現条件
- 画面・イベント:
- カスタマイズに関連するフィールド(フィールド種類/フィールド名/フィールドコード):
- 権限設定:
- デバイス(PC or モバイル):
- OS・ブラウザ:
- IP制限などネットワークに特殊なことがあれば: