在庫管理について

いつも大変お世話になっております。

安全に在庫管理を行うテクニック2 - リビジョンを試そう -

を参考にアプリを作成しています。

①出庫管理アプリに登録したら、履歴が在庫管理アプリの方ではテーブルとなって自動反映していく。

②「在庫数」も出庫数-テーブルの出庫数の合計となる。

こうような自動動きをできるようにすることは可能でしょうか?

初心者のため、どこからどう始めてればいいか彷徨っております。どなたかご教示いただけませんでしょうか?

ご指導のほど、どうぞよろしくお願いいたします。

こんにちは。

① 出庫管理アプリに登録したら、履歴が在庫管理アプリの方ではテーブルとなって自動反映していく。

こちらですが、目的が出庫記録の参照だけであれば、サブテーブルに反映するのではなく、関連レコードで同一商品の

出庫データを表示するほうが楽かなと思います(JS書かない)

②「在庫数」も出庫数-テーブルの出庫数の合計となる。

こちらは、安全に在庫管理を行うテクニック2 - リビジョンを試そう - のサンプルがまさにその挙動かと思いますので、そちらに沿って進めて頂くとよいかと。

上海レンユアー 松村

お世話になっております。

アドバイスいただき、ありがとうございます。

①おっしゃる通り「在庫管理アプリ」に出庫のデータを関連レコードで表示します。

②「在庫数」について知識不足で詰まっております。

「入庫数」フィールドコード: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;
});

});
})();

ここを直せば上手く動くかどうかは、わかりませんが、下記の部分が気になります。

var stockNum3 = Number(stockRecord.stockNum3.value);

この1行の左側 var stockNum3 の部分はJS内部の変数名なので、ここは、var stockNum が正しい表記の様な気がします。