オープンソースのERP iDempiereは、内部統制の観点やデータの整合性を保つために、一度登録したデータをデータベースから直接削除(Delete)するためには、いくつかの制約があります。
このようなデータを削除するために制約があるのは、他のERPや業務アプリケーションでも同様だと思います。そして、もう使用しなくなったマスタなどは、直接データベースからデータを削除するような事はせずに、何らかの印(フラグ)をつけて、使わなくなった事をデータ的に表現すると思います。私はこのことを"論理削除"と言っています。
iDempiereはこの論理削除のフラグとして、"アクテイブフラグ(IsActiveカラム)"があります。使用しないマスタはこのアクティブフラグをOFFにする事で、「データベース上はデータとして残っているけど、運用上は使わないよ!!」という論理的な削除状態を意味します。
このアクティブフラグをOFFにしたデータを参照している場合、iDempiereでは論理削除されている事を示す"~(チルダ)"が表示されます。
このコンテンツでは、"~(チルダ)"が変更できるかどうかについて調査及び研究し、その成果をまとめています。
~(チルダ)を付ける処理が記述されているソースコードの場所
"~(チルダ)"を付ける実装は、org.compiere.model.MLookupクラスのgetDirect()メソッドで記述されています。
上のイメージの561行目において、取得したデータのIsActiveがfalseだったら(アクティブフラグがOFFだったら)、そのデータの前に"INACTIVE_S"とそのデータの後に"INACTIVE_E"を付すように記述されています。
"INACTIVE_S"と"INACTIVE_E"は、定数としてMLookupクラスに定義されています。
"~(チルダ)"を変更したい場合は、この"INACTIVE_S"と"INACTIVE_E"を修正すれば良い事になります。
試しに、下記のように修正してみました。
修正してみた結果は下記のようになりました。
結論
2020年3月19日現在(iDempiere7.1)では、論理削除を意味する"~(チルダ)"を変更するためには、ソースコードを直接修正する必要があります。言い換えるとパラメーター設定では変更できないという事です。
今後、パラメーター設定で変更できるようになるかもしれませんが、現時点では、論理削除されたデータはその目印として、前後に"~(チルダ)"を付して表示されるのがiDempiereの標準的な挙動になります。