このフローは、krewData厳選シナリオ集に掲載されている「在庫引当を自動化する」の具体的なフローの作成方法です。出荷管理アプリにレコードが追加された際に、在庫引当と出荷処理を行う為の設定方法について解説します。
このシナリオでは、出荷管理アプリのレコード操作を契機としてフローを実行します。

入力アプリのフィールド構成
出荷管理アプリ
- 受注時に受注数をはじめとする受注情報を登録する
- アプリにプロセス管理を設定しており、受注後のステータスを管理している
- ステータスが「引当」に更新された場合は「受注数」を元に有効在庫を調整し、ステータスが「出荷」に更新された場合は「出荷数」を元に実在庫数を調整する

在庫管理アプリ
- 入出荷日ベースに品目ごとの有効在庫と実在庫の保有状況が管理されている
出力アプリのフィールド構成
在庫管理アプリ
- 入力アプリでも同じく使用するアプリ
- 出荷管理アプリのレコードを「引当/出荷」いずれかのステータスに更新する際に、このアプリにレコード追加し在庫状況を調整する
呼び出し元アプリと実行方法
・呼び出し元アプリ:630-20 出荷管理 (このアプリでの操作をきっかけにkrewDataのフローを実行する)
・実行方法:Webhook

1.入力アプリを設定
出荷管理アプリ
- 入力アプリコマンドを追加し、アプリの選択で「出荷管理」アプリを選択する
- フィルタ条件に次のように設定する
・レコード番号 =(等しい) %レコード番号%
・ステータス 次のいずれかを含む 引当、出荷 - フィールドの選択で「ステータス」「品目名」「受注日」「受注数」「出荷日」「出荷数」を選択する

フィルタを設定している為、プレビューを確認することができませんが、フィルタ条件に当てはまる値を設定すると、プレビュー上で確認しながら設定を進めることができます。
詳しくは、こちらをご覧ください。

在庫管理アプリ
- 入力アプリコマンドを追加し、アプリの選択で「在庫管理」アプリを選択する
- フィルタ条件に次のように設定する
・品目名 =(等しい) %品目名 - フィールドの選択で「入出荷日」「品目名」「入庫数」「引当数」「出荷数」「有効在庫数」「実在庫数」を選択する

2.重複の削除コマンドで最新の在庫レコードを取得する
在庫管理アプリの入出荷日が最新のデータのみを抽出します。後のステップで出荷管理アプリのレコードとレコード結合するために抽出したいので、条件に当てはまるものの中でも最新の1件だけ抽出しています。
- 重複の削除コマンドを追加し、次のように設定する
・重複を検査するフィールド名:品目名
・ソート:入出荷日 降順

3.アプリ結合で2つのアプリのデータを結合する
アプリ結合でデータを結合する
アプリ結合コマンドを使い、出荷管理アプリと在庫管理アプリのフィールドを結合します。
- アプリ結合コマンドを追加する
- 「出荷管理」と「重複の削除」を選択して左外部結合を選択する
- 元になるアプリの条件フィールドとして「品目」を設定する
- 結合するアプリの条件フィールドとして「品目」を設定する

プレビューでデータを確認します。

入庫数をクリアする
データ編集コマンドで「入庫数」フィールドの値をクリアします。今回は、引き当てに関する設定を行いますが、在庫管理アプリでは「入庫」した際の在庫数管理も行います。在庫管理アプリに入庫数が誤って更新されてしまわないよう値をクリアするステップを挟みます。
- データ編集コマンドを追加し、以下のように設定する
- 結果を保存するフィールド:既存フィールドのデータを置換 入庫数
編集方法:空白を設定
編集内容:(空白)のままの状態にする
4.引当と出荷ステータスで条件分岐する
引当を行う際には「有効在庫」を、出荷を行う際には「実在庫」について設定を行うため、2つの条件にフローを分岐して設定を進めていきます。
引当ステータスにフィルタリングする
フィルタコマンドでステータスが「引当」のレコードのみに絞り込みます。
- フィルタコマンドを追加する
- フィルタの条件を以下のように設定する
ステータス 次のいずれかを含む 引当

出荷ステータスにフィルタリングする
フィルタコマンドでステータスが「出荷」のレコードのみに絞り込みます。
- フィルタコマンドを追加する
- フィルタの条件を以下のように設定する
ステータス 次のいずれかを含む 出荷

5.引当ステータスのレコードの整形を行う
引当ステータスのレコードの整形を行い、有効在庫数の管理を行います。
[出荷数_1]の値をクリアする
データ編集コマンドで「出荷数_1」の値をクリアします。
- データ編集コマンドを追加し、以下のように設定する
- 結果を保存するフィールド:既存フィールドのデータを置換 出荷数_1
編集方法:空白を設定
編集内容:(空白)のままの状態にする

受注日を入出荷日にコピーする
出荷管理アプリで入力した「受注日」を「入出荷日」にコピーします
- データ編集コマンドを追加し、以下のように設定する
- 結果を保存するフィールド:既存フィールドのデータを置換 入出荷日
編集方法:フィールドをコピー
編集内容:受注日

受注数を引当数にコピーする
出荷管理アプリで入力した「受注数」を「引当数」にコピーします
- データ編集コマンドを追加し、以下のように設定する
- 結果を保存するフィールド:既存フィールドのデータを置換 引当数
編集方法:フィールドをコピー
編集内容:受注数
有効在庫数を計算する
引当数を有効在庫数から引き、引き当て後の有効在庫数を計算します。
- データ編集コマンドを追加し、以下のように設定する
- 結果を保存するフィールド:既存フィールドのデータを置換 有効在庫数
編集方法:数式
編集内容:有効在庫数-引当数

必要なフィールドのみに絞り込む
アプリ結合したことで重複したフィールドや、今後の設定で使用しないフィールドを調整し、必要なフィールドのみに絞り込みます。
- フィールド選択コマンドを追加する
- 使用するフィールドを設定する
「入出荷日」「品目名」「入庫数」「引当数」「入庫数_1(新しいフィールド名として「出荷数」を設定する)」「有効在庫数」「実在庫数」

6.出荷ステータスのレコードの整形を行う
ここからは、「出荷」ステータスのレコードについて実在庫を調整するための設定を行っていきます。
引当数の値をクリアする
実在庫の調整を行う為(出荷ステータスの処理)、引当数が誤って更新されてしまわないよう値をクリアします。
- データ編集コマンドを追加し、以下のように設定する
結果を保存するフィールド:既存フィールドのデータを置換 引当数
編集方法:空白を設定
編集内容:(空白)のままで設定する

出荷日を入出荷日にコピーする
出荷管理アプリで入力した「出荷日」を在庫管理アプリが持つ「入出荷日」にコピーします。
- データ編集コマンドを追加し、以下のように設定する
結果を保存するフィールド:既存フィールドのデータを置換 入出荷日
編集方法:フィールドをコピー
編集内容:出荷日

出荷数を出荷数_1にコピーする
出荷管理アプリで入力した「出荷数」を「出荷数_1」にコピーします。
- データ編集コマンドを追加し、以下のように設定する
結果を保存するフィールド:既存フィールドのデータを置換 出荷数_1
編集方法:フィールドをコピー
編集内容:出荷数

実在庫数を計算する
出荷管理アプリで入力した「出荷数」を在庫管理アプリが持つ「出荷数_1」にコピーします。
- データ編集コマンドを追加し、以下のように設定する
結果を保存するフィールド:既存フィールドのデータを置換 実在庫数
編集方法:数式
編集内容:実在庫数-出荷数_1

必要なフィールドのみに絞り込む
アプリ結合したことで重複したフィールドや、今後の設定で使用しないフィールドを調整し、必要なフィールドのみに絞り込みます。
- フィールド選択コマンドを追加する
- 使用するフィールドを設定する
「入出荷日」「品目名」「入庫数」「引当数」「入庫数_1(新しいフィールド名として「出荷数」を設定する)」「有効在庫数」「実在庫数」

7.条件分岐した2つのステータスのレコードを結合する
「引当」と「出荷」それぞれのステータスのレコードの設定を行ってきましたが、最終的に1アプリに出力するためにレコード結合します。
- レコード結合コマンドを追加する
- 結合方法として「共通するフィールドのみを含める」を設定
8.出力先を設定する
在庫管理アプリを出力先アプリに設定する
- 出力アプリコマンドを追加する
- 出力方式に「追加」を選択する
- データ編集フローのフィールドで、アプリのフィールドと対になる編集フローのフィールドを選択する
※出力方式を「追加」にしたため更新キーは必要ありません

出力結果を確認する(引当の場合)
実行前
出荷管理アプリで、こちらのレコードを「引当」に変更して実行結果を確認します。

実行後
在庫管理アプリに品目Aのレコードが追加されていることと、「引当」として処理されていることが確認できます。

出力結果を確認する(出荷の場合)
実行前
先ほどのレコードを「出荷」に変更して実行結果を確認します。(出荷時には出荷日と出荷数を入力します)

実行後
在庫管理アプリに品目Aのレコードが追加されていることと、出荷として処理されていることが確認できます。

サンプルファイルのダウンロードはこちら
https://download.krew.mescius.jp/study/krewdata-drill/pratical/dt630-20inventory-reservation.zip