Monday, 4 July 2016

Multi-Level Approval in Acumatica

Hi Everyone,

Today I want to sore with you and idea of how to define the multi-level approval workflow in Acumatica ERP.
Acumatica has approval feature in many different parts of the system, like Sales/Purchase Orders, Requisition, Requests, Projects and now starting from 6.0 also on AP documents.
Every time when you need to define approval hierarchy, you should check the "Assignment and approval maps" screen in the system.
The main idea on defining multiple levels of approval is that you need need to create dependent conditions, when each next level can check that the previous level is approved. So:
  • On the first level you just need to specify "base" conditions 
  • On the next levels you need to set conditions which will reflect and pull condition from the previous level,
  • Need to change order of the levels and set to the top rule with higher level (for example max amount).
Lets do one example based on Purchase orders approval, where we want to to define up to 3 levels of approval depend on order amount.

Level 3 (Top managers):
This level contains link to the previous level, where Baker should do approval. Also we checking all documents higher that 10 000 USD.
Please note that instead of names you can use workgroups, than any guy from workgroup can approve document.
Also note that higher guy in the Company tree hierarchy can approve for his subordinates.

Level 2 (Middle managers):
This level also contains link to the first level, where Anna Johnson should do approval. Also we checking all documents higher that 1 000 USD.

1 Level (Low managers):
On this level we do not have any connections with other things, but we checking order with amount higher than 100 USD.

When the approval map is ready you can activate in on PO Setup screen. Note that you can have multiple approval maps for the parallel approval with several managers/departments. Also do not forget that you can configure special email notification for each approval map.

And finally, Purchase Order itself:
Approval logic will be triggered each time when some one click save or approv to evaluate next guy who should do approval. So next level will get notification only what the previous level has approved.

How to find field with approver?
Depend on Screen/Graph/DAC that you using for approval, you may need to use different fields. What field do you need to use you can find in the code by searching for PX.Data.EP.IAssign interface on the DAC. It contains 2 properties: OwnerID and WorkgroupID. Depend on the DAC logic i can be different database table fields. Like it is Approver in PO Order, but it will be OwnerID in RQRequest.

Have a nice configuration!

No comments: