いつも大変お世話になっております。
安全に在庫管理を行うテクニック2 - リビジョンを試そう -
を参考にアプリを作成しています。
①出庫管理アプリに登録したら、履歴が在庫管理アプリの方ではテーブルとなって自動反映していく。
②「在庫数」も出庫数-テーブルの出庫数の合計となる。
こうような自動動きをできるようにすることは可能でしょうか?
初心者のため、どこからどう始めてればいいか彷徨っております。どなたかご教示いただけませんでしょうか?
ご指導のほど、どうぞよろしくお願いいたします。
いつも大変お世話になっております。
安全に在庫管理を行うテクニック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 が正しい表記の様な気がします。