2013-07-24

簡単? FileMakerで在庫管理(5) ―― 倉庫間移動

 当ブログの在庫関連記事 簡単? FileMakerで在庫管理(3) ―― 倉庫など場所別に在庫数を把握するでは、「FMEasy在庫 R1.0」をベースに倉庫などの在庫場所別に在庫数を算出する方法について概容を説明しました。

 そんな折、「FMEasy在庫 R1.0(開発版)」のユーザ様から、倉庫間移動に関するご質問を頂戴しましたので、今回はその手法をご紹介します。

商品の倉庫間移動


 まず、下図の青色で囲った部分をご覧ください。



 出庫画面に移動先を入力するための[移動先ID]フィールドを配置しています。
 倉庫間移動が発生する場合、ユーザは移動先のIDを入力した後、“倉庫移動”ボタンをクリックします。すると、出庫画面で入力した出庫明細と同内容のデータが入庫にも作成されるという流れになります。


下準備


 取引先マスタに「倉庫間移動」という管理項目を登録しておきます。
 このとき、倉庫間移動の[取引先ID]は「41」であったと仮定してみます。


倉庫移動スクリプト


 倉庫移動ボタンに割り当てるスクリプト仕様はおおまかに以下のとおりです。
  1. $moveTo 変数に移動先IDをコピー。
  2. 出庫明細(ポータル)内のすべての商品ID/出庫数を $prodArrayに変数配列として格納。
  3. 新規ウインドウで入庫レイアウトを開き、新規レコードを作成。
  4. [入庫場所ID]フィールドには変数1、[仕入先ID]フィールドには「41」を入力。同時に[入庫日]、[担当ID]、[伝票区分]にも適切な値を入力。
  5. $prodArray 変数に格納した出庫明細の要素を、入庫明細の商品ID/入庫数に展開。同時に各[在庫場所ID]には $moveTo 変数に保持されている値を設定。
  6. 入庫レコード確定。

 このスクリプトの実行結果は下図のようになります。



注:
  • 入庫明細作成時、場所別在庫テーブルに座間倉庫用の商品が登録されているかチェックし、無ければ登録する。 ここをミスると、商品がシステム上から消失してしまうので、要注意。
  • 入庫画面の[備考2]に移動元のIDと[場所名](倉庫名)を記録するとわかりやすい。
  • 取引先テーブルに各倉庫名を登録、さらに在庫場所テーブルに[取引先ID]フィールドを新設し、そこに各在庫場所に対応する[取引先ID]値を記録し、[仕入先ID]には上記「41」の代わりに、その倉庫の[取引先ID]を入力するのも良い。
  • 社内倉庫間の移動であるから、[仕入単価]は適切に処理 ― 例えば0を入力― する。
  • 倉庫が隣接しておらず、日単位のタイムラグが発生する場合、“倉庫移動”実行タイミングや[入庫日]の値を考慮すること。

2 件のコメント:

阿部譲 さんのコメント...

質問者です。

早速のご回答ありがとうございました。

早速進めてみたいと思います。

もう一つ。

注)で御指摘頂きました、入庫明細作成時、場所別在庫TBに該当商品が登録されていない場合の処置についてですが、一応トライアンドエラーで作成し、表面上は動いている様に見えます。ただ、これで良いのか自信がありません。↓ ↓ ↓

1.入出庫明細TOと場所別在庫TO間で、商品ID,在庫場所IDを照合フィールドとしてリレート。このリレーションシップを・・・レコードの作成を許可にチェック。

2.入庫レイアウト内の入出庫明細ポータルで入力中レコードから在庫場所IDを取得し、IF関数を使用して、リレーションで絞り込まれた場所別在庫TB上の在庫場所IDフィールドの値が、入力値と同じかどうか比較。無ければ、場所別在庫TOの在庫場所IDフィールドに取得値を入力し、場所別在庫TBにレコードを作成。

以上のスクリプトを作成し、在庫場所ID入力後に実行する様にしていますが、問題となりそうな部分はあるでしょうか?

もっと良い方法があればご教示下さい。

以上宜しくお願い致します。

tsuchiya さんのコメント...

簡単? FileMakerで在庫管理(6) --- 場所別在庫レコードの作成方法をご参照ください。