iDempiereの標準機能には、いわゆる承認のワークフロー(以下、WF)の機能が用意されています。iDempiere標準機能のWFは伝票を完成にする際には使用できますが、伝票を取り消す際には使用できませんでした。このカスタマイズでは伝票を取り消す際のワークフローを「キャンセルワークフロー(WF)」と呼んで、伝票のボイドとリバースする際にも承認ができるようにしています。
目次
- キャンセルWFの概要
- キャンセルWFに必要な設定
- カスタマイズ内容
- 関連するカスタマイズ
開発中
キャンセルWFの概要
キャンセルWFは、iDempiereの標準のWFを伝票のボイドやリバースの際にも利用できるようにした機能です。
【JPIERE-0513】検索ウィンドウでのワークフロー(WF)承認でも、通常の伝票の承認と同じようにボイドやリバースも承認できます。
キャンセルWFの最終承認が行われると、ボイドかリバースが実行されます。
キャンセルWFには申請ボタンと、状況が確認できるすてーたすがあります。
「キャンセルWF申請」ボタンを押すと、ボイドかリバースを選択するポップアップア画面が表示され、OKボタンを押すとキャンセルWF申請の処理が行われます。
キャンセルWFには下記のステータスがあり、進行状況が確認できます。
- 承認 ➡ 最初の1人目の承認者が承認するとなります。承認中を意味するステータスです。
- 否認➡キャンセルWFが否認されるとなるステータス。キャンセルWFは終了となり、再申請することができます。
- 確認中➡キャンセルWFを申請するとなるステータスです。まだ誰も承認していないことを意味します。
- 空欄 ➡ キャンセルWFは申請されていない状態です。
キャンセルWFに必要な設定
キャンセルWFを動かすための設定を説明します。
【ポイント】サンプル設定
"OSS ERP Solutions"のテナントの受注伝票(全項目)と売上請求伝票(全項目)ウィンドウには、キャンセルWFのサンプルを設定しています。その設定も参考にして下さい。
伝票のテーブルにカラムの追加
キャンセルWFを動かすためには、伝票のテーブルに2つのカラムを追加して、WFの設定を行う必要があります。
◆JP_CancelWFAction: キャンセルWF申請(ボタン)
◆JP_CancelWFStatus: キャンセルWFステータス
キャンセルWFの設定
キャンセル用のWFの設定を行います。「キャンセルWFベースノード」を基に、ノードを追加して独自のWFを構築することができます。基本はiDempiereの標準WFの設定と同様です。
◆キャンセルWFベースノード
キャンセルWFには、基本となる下記の3つのノードがあります。
- 開始ノード … WFで最初に呼び出されるノード
- キャンセルノード … 伝票のボイド/リバースを行うノード
- WFクローズノード … WFのクローズ処理を行うノード
キャンセルWFベースノードに、承認ノード等を追加して独自のワークフローを構築できます。
【注意】「標準ワークフロー」フラグはOFFにする
ワークフロー設定において、移行タブにある標準ワークフローフラグはOFFにして下さい。キャンセルWFではONにしてしまうと意図しないノード遷移になってしまう場合があります。
キャンセルWFを起動するプロセスの設定
設定したキャンセルWFを起動するプロセスを設定します。キャンセルWFを起動させるプロセスは伝票のテーブル毎に用意する必要があります。「キャンセルワークフロー」フィールドに、先に設定したワークフローを選択入力して下さい。
クラス名には「jpiere.base.plugin.org.adempiere.process.CancelWFStart」と入力して下さい。
◆受注伝票/発注伝票のキャンセルWFの起動プロセス
プロセスのパラメーターには「DocAction」を必須入力として追加して下さい。
キャンセルWF起動時にここで選択した伝票ステータス更新処理が、キャンセルWFの最終承認後に実行されます。
キャンセルWF申請(ボタン)にプロセスを設定
追加した「JP_CancelWFAction: キャンセルWF申請(ボタン)」カラムに、ワークフローを起動させるプロセスを追加します。
カスタマイズ内容
追加カラム
◆AD_Processテーブル
- JP_CancelWorkflow_ID ➡ キャンセルWFを登録するカラム
◆C_Orderテーブル
サンプル設定として下記2つのカラムを追加
- JP_CancelWFAction
- JP_CancelWFStatus
◆C_Invoiceテーブル
サンプル設定として下記2つのカラムを追加
- JP_CancelWFAction
- JP_CancelWFStatus
追加プロセス
◆jpiere.base.plugin.org.adempiere.process.CancelWFStart
キャンセルWFをキックするプロセスです。
◆jpiere.base.plugin.org.adempiere.process.CancelWFProcess
キャンセルWF対象の伝票をリバースもしくはボイドするプロセスです。キャンセルWF申請(ボタン)を押したとき選択した伝票ステータス更新の処理が行われます。
◆jpiere.base.plugin.org.adempiere.process.CancelWFClose
リバースもしくはボイドした後で、ワークフロープロセスをクローズする処理です。
◆jpiere.base.plugin.org.adempiere.process.WFProcessManageExtendForCancelWF
WFProcessManageをキャンセルWF用に拡張しているプロセスです。ワークフロープロセスを中止する時に、キャンセルWFステータスとキャンセルWF申請ボタンを空欄にする処理が追加されています。
修正プロセス
◆jpiere.base.plugin.org.adempiere.process.WFActivityApproval
キャンセルWFの承認と否認ができるように修正しました。
◆jpiere.base.plugin.org.adempiere.process.WFProcessAbort
キャンセルWFの承認申請を取り消しする際に、キャンセルWFステータスとキャンセルWF申請ボタンを空欄にする処理を追加しました。
追加リストバリデーションのリファレンス
◆JP_CancelWFActionList
- VO … ボイドする
- RA … 現在の日付でリバースする
- RC … 同じ日付でリバースする
◆JP_CancelWFActionList_Void
- VO … ボイドする
◆JP_CancelWFStatusList
- AP … 承認 ➡ 最初の1人目の承認者が承認するとなるステータス。
- NA …否認➡キャンセルWFが否認されるとなるステータス。
- IP … 確認中➡キャンセルWFを申請するとなるステータス。
- 空欄 … キャンセルWFは申請されていない状態のステータス。
追加ダイナミックバリデーション
◆JP_CancelWFActionValidate
iDempiereは基本的に伝票ステータスが草案や確認中の時にボイドして、完成の時にリバースします。選択している伝票の伝票ステータスに応じて、ボイドするかリバースするを選択できるダイナミックバリデーションです。