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