/
How to Create Parametric Approval Workflow

How to Create Parametric Approval Workflow

If a customer requires to be able to add or remove an approval step at any point without touching the code, this can be achieved by creating a pricing parameter table with the following columns:

  • Approval Order – Defines the order in which the approval steps are sequenced.
  • Approver Type – Defines whether approver is a group or an individual user.
  • Approver – Defines either group name (for the Group Approver type) or a user ID (for the User type).
  • Skip – Allows to remove an approver without deleting the record from the table (which later allows to quickly add the approver back to the workflow).

Keep in mind that the Approval Order must be a string, and as such it is recommended to pad single digits with a 0 - to make sure that if there are more than 9 approvers they are sorted correctly. In the unlikely event that there are more than 99 approvers another 0 must be added before the number.

In the Configuration > Workflows > Workflow Logics create the following workflow logic:

if (quote?.lineItems == null) return

def ppTable = api.findLookupTable("ApprovalFlow")
def approvers = api.find("MLTV", 0, "name", Filter.equal("lookupTable.uniqueName", "ApprovalFlow"))

for (li in quote?.lineItems){
  if (li.folder) continue
  for (e in li?.outputs) 
  {      
      for (approver in approvers) {
          if (approver.attribute1 == "Group" && approver.attribute3 != "Yes") {
          	workflow.addApprovalStep("Approver" + approver).withUserGroupApprover(approver.attribute2).setReason("Requires " + approver.attribute2 + " approval")
        
          }else if (approver.attribute1 == "User" && approver.attribute3 != "Yes") {
          		workflow.addApprovalStep("Approver" + approver).withApprover(approver.attribute2).setReason("Requires " + approver.attribute2 + " approval")
        		}
        }
      break
   }
}

The full code is available in Git - FloorPriceApprovalSim.groovy

Related content

How to Use Secondary Key to Create Matrix Price Lists
How to Use Secondary Key to Create Matrix Price Lists
Read with this
Configuration Tables (Approval Workflow)
Configuration Tables (Approval Workflow)
More like this
How to Find Set of Quotes Containing Given Products
How to Find Set of Quotes Containing Given Products
Read with this
Configure First Simple Workflow for Quote (Approval Workflow)
Configure First Simple Workflow for Quote (Approval Workflow)
More like this
Approval Workflow PostStep Logic
Approval Workflow PostStep Logic
Read with this

Found an issue in documentation? Write to us.