iDempiereのワークフロー(WF)においては、「自己作成伝票承認」フラグ(IsCanApproveOwnDocフラグ)において、自己承認が出来ないように制御できるようになっています。しかしながら、WF責任者タイプ「人」においては自己作成伝票承認フラグがOFFの場合でも承認できてしまうので、承認できないように改善しました。
自己作成伝票の判定
自己作成した伝票かどうかの判定は下記のように行っています。
WFの申請時
WFの申請時には、下記のロジックに該当した場合、自己作成した伝票と判定しています。職責の「自己作成伝票承認」フラグがOFFで、自己作成伝票と判定された場合は、承認ノードとなるWFアクティビティーの承認処理が必要になります。
- WF責任者になっているユーザーとログインしているユーザー
WFの承認時
未処理WFアクティビティ画面での承認時には、下記のロジックのいずれかの場合に自己作成した伝票と判定しています。「自己作成伝票承認」フラグがOFFで、自己作成伝票と判定された場合には、エラーになり承認処理できません。
-
承認ノードのWFアクティビティーの作成者が、ログインしているユーザーと同じユーザーである場合。 - ->(2022年5月13日修正) 承認者が、伝票ステータス更新を実行しWFプロセスを作成したユーザーと同じユーザーである場合
- ログインしているユーザーと、DocAction#getDoc_User_ID()メソッドで取得されるユーザーが同じユーザーである場合。
【補足説明】
自己作成伝票承認フラグがOFFになっているユーザーが伝票を起票して、そのユーザーが承認者になっている場合は、伝票を承認できる人がいなくなってしまうわけですが、そのような場合は、承認権限を委譲して他のユーザーに承認してもらう運用を想定しています。
自己作成伝票承認フラグがOFFになっているので、内部統制的な観点より、上記のような仕様にしました。
カスタマイズ履歴
2022年5月13日(Ver9)
自己作成伝票の判定処理に、「WFアクティビティーを作成していた人」と「承認する人」が同じ場合、自己作成伝票と判定していましたが、このロジックだと連続する2つのWFノードで、たまたま同じ人が承認者となる場合、2回目の承認の際に自己作成伝票と判断しエラーになってしまいます。そのため、「WFアクティビティーを作成していた人」ではなく、「伝票ステータス更新を実行しWFプロセスを作成した人」と「承認者」が同一の場合に自己作成伝票と判定するようにしました。
カスタマイズ情報
クラス
- org.compiere.wf.MWFActivity