カテゴリー内の他の記事

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

フォローする

(著者:サイボウズ 竹内 能彦)

はじめに

今回は以前紹介させていただいた「安全に在庫管理を行うテクニック」を kintone アプリに実装します。

理解しやすいように在庫アプリと出庫アプリの2つを利用します。
「出庫アプリからXX個出庫すると在庫アプリの在庫がXX個減る」というカスタマイズを行います。

また、kintone Utility Library for JavaScript を使うことでREST API部分のコードを簡素化しています。
非常に便利ですのでこれからコードを書く人は是非使ってくださいね。

 

デモ環境

https://dev-demo.cybozu.com/k/276/

※デモ環境についての説明、アカウントとパスワードはこちら

 

結果

まずは結果から行きましょう!
在庫アプリはこのような状態です。

success01.jpg

 

出庫アプリに出庫数を登録すると・・・

success02.jpg

 

出庫アプリには出庫数が登録され

success03.jpg

 

在庫アプリからは在庫数が減りました!

success04.jpg

 

在庫が足りない場合はこのようなエラーを表示します。

error01.jpg

 

①「在庫数の確認時」と②「在庫数の変更時」のリビジョンが異なる場合(①と②の間に在庫のデータが更新された場合)はこのようなエラーを表示します。

error02.jpg

これで安全に在庫管理ができますね。

 

kintone 設定

「在庫」アプリの作成

フィールド名 フィールドタイプ フィールドコード 備考
商品コード 文字列(1行) itemCode

必須項目にする

値の重複を禁止する

商品名 文字列(1行) itemName

必須項目にする

在庫数 数値 stockNum

必須項目にする

 

「出庫」アプリの作成

フィールド名 フィールドタイプ フィールドコード 備考
出庫先 文字列(1行) destination  
商品コード ルックアップ itemCode

必須項目にする

関連付けるアプリ:在庫アプリ

コピー元のフィールド:商品コード

ほかのフィールドのコピー:「商品名」に「在庫アプリの商品名」

商品名 文字列(1行) itemName  
出庫数 数値 pickNum

必須項目にする

 

「出庫」アプリのJS/CSS設定

「アプリの設定 > JavaScript / CSSでカスタマイズ」の「PC用のJavaScriptファイル」に以下のURL/ファイルを設定します。

  • https://kintone.github.io/kintoneUtility/kintoneUtility.min.js
  • 以下のサンプルコードをエディタにコピーして、ファイル名を「sample.js」、文字コードを「UTF-8N」で保存、アップロードします。
    ※ファイル名は任意ですが、ファイルの拡張子は「js」にしてください

ポイントは以下の3つです!

  • bulkRequestを使って、2つのアプリ(在庫、出庫)を同時に操作します。
  • bulkRequestによる在庫アプリの更新時にはリビジョンを指定します。
  • bulkRequestが成功した場合は「return false」として、レコードの登録自体はキャンセルします。(82行目)

 

終わりに

リビジョンの使い方わかりましたでしょうか。
サンプルコードはレコードの登録、出庫にしか対応していません。是非レコードの編集や入庫にも対応させてみてください^-^

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
和田 一彦

はじめまして、和田といいます。

出庫画面で在庫更新すると更新後の在庫数になりますが、他の項目でルックアップしたのが消えてしまいます。

解決策はないでしょうか。

Avatar
竹内 能彦

和田さん

回答が遅くなり申し訳ありません。

出庫アプリに本記事で設定したフィールド以外に
追加でルックアップフィールドを設定している、ということでしょうか。

であれば、サンプルコードの52行目から69行目で出庫アプリに登録するデータを指定しており、
ここにルックアップフィールドのデータを指定する必要があります。

処理の流れとしては以下のようになります。
・7行目から10行目を例にルックアップフィールドのデータを取得する
・52行目から69行目で出庫アプリに登録するデータを指定する

また、ルックアップフィールドにはAPIでデータ登録することから
参照先のフィールドに重複禁止が設定されている必要があります。

Avatar
和田 一彦

竹内様

サポートありがとうございます。

 日付や複数のルックアップ、入力項目が多くあり、最初は動作せず、JSかフォーム設定か、何を間違えたのかがわからず完成に手間取りました。

無事、複数のクリアされていた項目が表示し更新されるようになりました。

 ■追加での質問です。

残更新の行をテーブルにして、複数明細行にしたいのですが無理でしょうか。

和田 一彦により編集されました
Avatar
竹内 能彦

和田様

動作したのですね!良かったです。


残更新が具体的に理解できていないのですが
1操作で複数製品を出庫処理したいということでしょうか。

可能か不可能かでいうと可能ですが、かなり大幅な変更が必要になります。
大きく2つの変更が必要です。

1.アプリのテーブル対応
アプリにテーブルを用意

2.ロジックの見直し
下記を複数(テーブル)対応する必要があります。
・在庫の取得
・在庫の不足チェック
・在庫数の更新/出庫情報の登録
 (テーブルへのデータ登録は https://developer.cybozu.io/hc/ja/articles/202166160 のリクエストボディの構造を参照)

Avatar
和田 一彦

早速のサポートありがとうございます。

トライしてみます。

ログインしてコメントを残してください。