オープンソースのERP iDempiereには、在庫を管理している台帳として、"現在庫数量管理台帳"と"在庫取引管理台帳"の2つの台帳があります。現在庫数量管理台帳を使用すると、現在保持している在庫の数量を素早く把握することができますが、現在在庫数量管理台帳では、過去のある一定時点での在庫数量を確認する事はできません。過去のある一定時点の在庫数量は、在庫の増減に係る取引をすべて記録している在庫取引管理台帳より把握する事ができますが、取引が増えるにしたがって、それは時間がかかる処理になります。
通常、過去のある一定時点の在庫数量を知りたいという場合、その日付は期末などの特定の日付です。そこで、JPiereでは、期末日などある特定の日付の在庫数量をタイムスタンプ的に別テーブルに保存して、素早く参照できるようにカスタマイズしています。このカスタマイズ管理番号JPIERE-0159では、ある日付の組織毎の品目の在庫数量を記録します。
組織在庫のタイムスタンプ作成プロセス
在庫数量のタイムスタンプとして、評価日付の品目の在庫数量を組織毎に算出し、JP_StockOrgテーブルに記録します。データ量が多くなってくると、この処理には多くの時間が必要になる場合がありますので、システムへのアクセスが少なくなる夜間のバッチ処理として行う事をおススメ致します。
- 評価日付…ここで指定した日付の在庫数量を記録します。既に同じ評価日付で同じ品目のデータが存在していた場合、そのデータは削除し、再度データを作成します。
- データ削除のみ行う…作成した組織在庫のタイムスタンプデータを削除する際に使用します。組織在庫のタイムスタンプのデータが多くなった場合に、過去の評価日付を指定して実行する事で、参照しなくなったデータを削除する事ができます。
組織在庫のタイムスタンプ作成プロセスのロジック
◆JP_StockOrgテーブルから評価日付のデータを削除します。
◆在庫取引管理台帳から、評価日付以前の在庫取引を組織×品目毎に算出し、JP_StockOrgテーブルにその評価日付とともに登録します。
【カスタマイズポイント】評価日付の在庫数量の求め方
評価日付の在庫数量を求めるのに、在庫取引管理台帳だけを使用して計算する方法は、実装は簡単ですが、在庫取引管理台帳のデータが多くなるにつれて処理に時間がかかるようになります。在庫取引管理台帳が膨大な量になる事があらかじめ見込まれる場合は、下記に例示する2つのアプローチ方法で評価日付の在庫数量を求める事により、処理時間を短縮する事ができるのではないかと思います。
現在庫数量管理台帳の値 – 評価日よりあとの在庫取引管理台帳の合計値
前回の評価日付の在庫数量 + 前回の評価日付から評価日付までの在庫取引管理台帳の合計値
組織在庫のタイムスタンプ確認ウィンドウ
組織在庫のタイムスタンプ作成プロセスで作成したデータを確認するためのウィンドウです。
- 組織在庫のタイムスタンプのデータは“組織”と”評価日付”と”品目”で一意になります。
- 組織在庫のタイムスタンプのデータを確認するウィンドウは、読取専用で、編集したりデータを追加したりする事はできません。
カスタマイズ情報
追加テーブル
◆JP_StockOrg
追加クラス
◆jpiere.base.plugin.org.adempiere.process.CreateStockOrgTimeStamp
追加メニュー
◆プロセス:組織在庫のタイムスタンプ作成
◆ウィンドウ:組織在庫のタイムスタンプ
カスタマイズ履歴
2020年7月27日:PostgreSQL - To_Date()関数の引数チェックの厳格化への対応
PostgreSQL10よりTo_Date()関数の引数のチェックが厳格化された事により、jpiere.base.plugin.org.adempiere.process.CreateStockOrgTimeStampクラスをメンテナンスしました。
参照:https://www.ashisuto.co.jp/db_blog/article/201712-postgresql10-upgrade.html
2017年5月22日
組織在庫のタイプスタンプ作成プロセスで"データ削除のみ"フラグを追加。参照しなくなった過去のデータを削除できるようにしました。