today I want to share some knowledge about interesting feature of Acumatica: Approve and Reject actions in Purchase orders screen.
When I was asked how long it will take to modify behaviour of Approve and Reject actions, I've thought it will be easy task. Find appropriate Actions, overload then and enjoy life. But with those two actions life is more complicated.
After speaking with Acumatica support I've realized that those two actions are declared as Automation steps, so in order to work with those actions it will be needed to look into knowledge about Automation steps. The only memeber that has relation to those actions are type of EPApprovalAutomation.
So, in order to modify behaviour of those two actions following code snipped is useful:
public class POOrderEntryExt : PXGraphExtension<POOrderEntry>
public override void Initialize()
Base.FieldVerifying.AddHandler<POOrder.rejected>((s, a) =>
if ((bool?)a.NewValue == true)
if (Base.Document.Ask("Custom Warning", "Do you want to proceed?", MessageButtons.YesNo) != WebDialogResult.Yes)
string errorMessage = "The Reject operation was canceled";
PXUIFieldAttribute.SetError<POOrder.approved>(s, a.Row, errorMessage);
throw new PXSetPropertyException(errorMessage);
Suppose that you also need to modify captions on button. For example caption of button Reject. I have step by step picture manual which you can use for your purposes: