【iDempiere Lab】DocActionボタンのラベル変更

DocActionというカラムは、iDempiereにとっては特別なカラムです。

伝票のステータスを更新するプロセスを実行し、ワークフローとも関係します。

DocActionのカラムは、JPiereでは"伝票ステータス更新"という翻訳をしています。

DocAction(伝票ステータス更新)ボタン
DocAction(伝票ステータス更新)ボタン

 

このDocActionボタンのラベルを変更したい場合は、DocActionエレメントの名称を変更すれば簡単に変更できますが、あるウィンドウだけラベルを変更したい場合は、どうすれば良いのでしょうか?

普通のフィールドであれば、そのフィールドの名称や翻訳を変更すれば、あるウィンドウだけラベルを変更する事は簡単にできますが、DocActionカラムに結びつくボタン場合は、フィールドの翻訳を変更しても、エレメントの翻訳が適用され、ウィンドウ毎にラベルを変更する事ができません。

 そこで、DocActionカラムに結びつくボタンのラベルをウィンドウ毎に変更する方法について調査及び研究し、その成果をまとめてみます。

ソースコード

DocActionのボタンのラベルは、WButtonEditorのsetValue()メソッドで設定されています。

WButtonEditor#setValue
WButtonEditor#setValue

DocActionボタンのラベルは、エレメントから名称を取得している事がわかります。

そのため、他のフィールドでは簡単に行えるウィンドウ毎のラベル変更が、DocActionだけはできません。

 しかしながら、ソースコードをよく読むと、システムコンフィグ設定のDOCACTIONBUTTON_SHOWACTIONNAMEの値をtrueにすると、違う処理になる事がわかります。

システムコンフィグ設定

システムコンフィグ設定でDOCACTIONBUTTON_SHOWACTIONNAMEの値を"Y"に設定してみます。

システムコンフィグ設定
システムコンフィグ設定

そうすると、エレメントの代わりに、DocActionに設定されているリストの中から、選択されている値のボタンのラベルに表示されるようになりました。

リストの選択値の翻訳が表示されているDocActionボタン
リストの選択値の翻訳が表示されているDocActionボタン

ウィンドウ設定

DocActionのボタンにリストの選択値を表示させる事ができるのが、ここまでの調査でわかりました。リストであれば、テーブル毎やウィンドウ毎に変更する事ができるので、ウィンドウ毎にDocActionのボタンのラベルを変更する事もできそうです。そこで、試しにやってみたいと思います。

リストバリデーションのリファレンス
リストバリデーションのリファレンス

DocActionカラムやフィールドに、作成したDocAction-JPiereというリストバリデーションのリファレンスを割り当てみます。"完成にしてね!!"とボタンに表示されれば成功です。

受注伝票のDocActionボタン
受注伝票のDocActionボタン

しかしなぜか表示されたのは、"完成にする"という名称です!!

この理由は、WButtonEditor#init()メソッドにありました。

DocActionボタンは割り当てられるリファレンスが固定で設定されています。REFERENCE_DOCUMENTACTIONの定数には135という"_Document Action"のリファレンスのIDが設定されています。

固定で割り当てられていますので、いくらカラムやフィールドで設定しても、無駄でした…。(T_T)

【結論】

2019年5月23日現在の結論として、DocActionボタンに表示する名称は、エレメントの名称か、_Document Actionのリストバリデーションの選択値かを選ぶ事はできるが、ウィンドウ毎には変更する事ができない。