2012-05-27

簡単? FileMakerで在庫管理(1) ―― 在庫算出の基本

 FileMaker で在庫管理機能をどのように開発すればよいのでしょうか?
 以下の動画をご覧いただくと、おおよその処理の流れがつかめるのではないかと思います。



 動画で使っているシステムは『FMEasy在庫』という在庫管理テンプレートです。
 こちらからダウンロードできます(フリー版/開発版あり)。


在庫算出の基本


 それでは在庫管理のしくみを順に見ていきましょう。
 「2012年6月20日時点の在庫」というような特定時点の在庫数を算出するために、以下のようなTOG(テーブル・オカレンス・グループ)を作成してみます。


 商品マスタと出庫明細と入庫明細をリレートするだけですので、とってもシンプルですね。
 (出庫伝票と入庫伝票の更新・照会用のTOGは別途必要になりますが。)
 以下は上記リレーション |×| で示された部分のリレーション編集イメージです。


 [g在庫基準日]は日付のグローバルフィールドです。ユーザはこのフィールドで在庫算出の起点となる日付を指定できます。

 そして、こちらが在庫表示用の計算フィールド[c在庫数]を求める計算式です。

繰越在庫数-Sum(出庫明細_商品::数量)+Sum(入庫明細_商品::数量)


 これもシンプルですね。

 [繰越在庫数]はここでは「システム導入時の元々あった在庫数を入力しておく数値フィールド」という扱いにします。
 これは、元々あった在庫(=[繰越在庫数])から、[g在庫基準日]以前に出庫した商品数量を差し引いて、さらに[g在庫基準日]以前に入庫した商品数量を加え、在庫を算出しているだけです。
注:
  1. 出庫明細/入庫明細テーブルに[出庫日]/[入庫日]があるのはおかしいんじゃないの?  本来、この二つのフィールドは出庫ヘッダ/入庫ヘッダテーブルにあるべきで、冗長で正規化されていないではないか、と考えた方。もしかしてプロ?
     ただ、FileMaker 内蔵DBを使用し、在庫算出基準日をユーザ指定可とする場合、正規化を崩しても明細に日付を持たせるのがベスト、というのが小社の結論。
  2. 出庫ヘッダ/入庫ヘッダの[出庫日]/[入庫日]と、出庫明細/入庫明細テーブルの[出庫日]/[入庫日]は常に一致するようにシステム的に保証しなければならないが、スクリプトトリガを利用すればそれほど難しくはないと思う。

 さて、上記の注2 の部分を考慮すると少し面倒になりますが、これを除けば簡単に在庫算出モジュールを作成できます。

 ただし、同一商品の出庫明細/入庫明細レコードが数百、数千に及ぶ場合、上記のリレーション及び計算フィールドでは在庫数を表示するまでの時間がかかりすぎるため、繰越処理を行うことにより、処理の対象となる明細レコードを予め限定する必要が出てきます。

 繰越処理とそれに伴う処理はこちらの記事をご覧ください。
 簡単? FileMakerで在庫管理(2) ―― 繰越処理の考え方

TOG(テーブル・オカレンス・グループ) とは?


 FileMaker Pro 7 以降に導入されたリレーションシップグラフでは、テーブルを別名、または同一名で定義して配置できます。
 たとえば「商品」というテーブルは、リレーションシップグラフ上では「商品Table1」、「商品テーブル」、「商品」など自由に名前をつけて配置したり、同一のテーブルを別名で複数配置したりできます。

 リレーションシップシップウィンドウに配置されたテーブルは、単に”テーブル”と呼ばれたり、テーブルのエイリアスあるいはTO(テーブル・オカレンス)と呼ばれることもあります。

 FileMaker では TO という呼び名が一般的になってきており、処理別やレイアウト別に TO をグループ化したものを TOG (テーブル・オカレンス・グループ)と呼んでいます。

0 件のコメント: