【JPIERE-0447】組織の変更履歴

組織の変更履歴を記録するテーブルです。

組織の変更履歴タブ

組織ウィンドウの子タブに変更履歴タブを追加しました。

変更履歴タブ(JP_Org_Historyテーブル)

期間を重複して名称を持つことはできません。

組織の変更履歴タブ
組織の変更履歴タブ

◆名称

開始日付と終了日付の期間における組織名称を入力して下さい。

◆開始日付

名称が使用開始となった日付。

◆終了日付

名称が使用終了となった日付。

組織の変更履歴の活用法

ウィンドウでの活用法

組織の変更履歴を記録しておく事で、伝票などのように日付があれば、バーチャルカラムの機能を使用して、その日付当時の組織の名称を表示する事ができます。

◆活用方法の下準備:旧組織名称を表示したいテーブルにバーチャルカラム(SQLカラム)を追加します。

ここでは例として、受注伝票(C_Orderテーブル)に、旧組織名称(JP_Org_OldName)カラムを追加し、転記日付(DateAcct)時点の組織の名称を表示します。

テーブルとカラム
テーブルとカラム

バーチャルカラムに設定するSQLは次のようになります。

【バーチャルカラムの場合】

(SELECT h.Name FROM JP_Org_History h WHERE h.AD_Org_ID = C_Order.AD_Org_ID  AND  h.DateFrom <= C_Order.DateAcct  AND  h.DateTo >= C_Order.DateAcct )

【バーチャルUIカラムの場合】

@SQL=SELECT h.Name FROM JP_Org_History h WHERE h.AD_Org_ID = @AD_Org_ID@ AND h.DateFrom <= TO_DATE('@DateAcct@','YYYY-MM-DD') AND h.DateTo >= TO_DATE('@DateAcct@','YYYY-MM-DD')

 

【補足説明】バーチャルカラムとバーチャルUIカラム

 バーチャルカラムの設定を"@SQL="で開始する事で、"バーチャルUIカラム"という機能が発動し、レコードが選択された時にSQLが発行されるようになります。そのため、SQLがウィンドウを開いた時に必ず実行される"バーチャルカラム"と比較して、ウィンドウを開く際のパフォーマンスの観点で優れています。

 しかしながらバーチャルUIカラムの場合は、レコード選択時にその都度SQLが1つ多く実行される事になります。わずかながらシステムのリソースを消費している事は意識しておく必要があると思います。

 バーチャルUIカラムを使用する上で考慮すべき点は、レコードが選択されるまで、バーチャルUIカラムの情報は表示されないという事です。ウィンドウの一覧表示においてレコードが選択されて編集状態になるまで、バーチャルUIカラムの情報は表示されません。

 その他のバーチャルカラムとバーチャルUIカラムの挙動の違いとして、バーチャルUIカラムはコールアウトのように挙動するのに対して、バーチャルカラムは保存した際に表示が変更になる事です。

 これらの事を考慮して、バーチャルカラムを使用するかバーチャルUIカラムを使用するのか検討して下さい。

 バーチャルUIカラムはiDempiere6.1より使用する事が出来る機能です。パフォーマンスの観点よりできるだけ、バーチャルUIカラムを使用する事をオススメ致します。

 

◆表示例

組織(AD_Org_ID)フィールドに選択した組織の、2017年11月6日時点の名称が、旧組織名称(JP_Org_OldName)に表示されています。

受注伝票
受注伝票

バーチャルUIカラムだと、一覧表示において選択されているレコードのみ旧組織名称が表示されます。すべてのレコードで旧組織名称を表示させたい場合は、バーチャルカラムの機能を使用する必要があります。

バーチャルUIカラムの例
バーチャルUIカラムの例
バーチャルカラムの例
バーチャルカラムの例

 

組織マスタは下記のように設定しています。

組織マスタ
組織マスタ

【ポイント】組織マスタには組織コードを管理するためのマスタと考え、組織の名称は組織の変更履歴に保存する運用方法

 頻繁に組織変更がある会社は多いと思います。どんなに組織変更が多い場合でも、変更前の組織は、変更後のいずれかの組織に引継がれるはずです。

 組織マスタを組織コードを管理するためのマスタと考え、組織の変更履歴を組織の名称マスタとして考えると、変更前の組織を引き継いだ変更後の組織は同じ組織コードとする運用にすれば、組織マスタを新規で作成する必要はありません。変更前の名称と変更後の名称を、変更履歴タブに登録すれば良いだけです。

 そのように考えれば、組織間でのデータを振替えるような作業が不要になりますので、組織変更に係る作業も軽減されるのではないでしょうか?

レポートでの活用法

ウィンドウと同様にレポートでも、日付を指定してJOINする事で、当時の組織の名称を表示する事ができます。

カスタマイズ情報

テーブル

  • JP_Org_History

クラス

  • jpiere.base.plugin.org.adempiere.model.MOrgHistory