Skip to main content
Solved

Customer Validation Issue When Creating PO from Internal Service Order via POCreate

  • February 7, 2026
  • 1 reply
  • 27 views

Forum|alt.badge.img+2

Hello Community,

I am facing an issue related to creating a POOrder from a Service Order using the standard POCreate process screen.

Scenario:

Service Order Type: Internal

For this type, the Customer field is not mandatory by design.

The requirement is to create a POOrder from such a Service Order.

Problem:
When attempting to create the POOrder via the POCreate screen, the system throws an error indicating that the Customer field in the Service Order is required.

In standard functionality, the required validation for the Customer field is removed dynamically in RowSelected depending on the Service Order Type. However, when the Service Order is updated from the POOrder creation process, RowSelected does not appear to be triggered. As a result, the Customer field remains required and the validation error is raised.

Additionally, I noticed that the Service Order is being overwritten during the attempt to save the POOrder, which seems to reapply the required attribute logic and leads to the validation failure.

Has anyone encountered a similar situation?
What would be the recommended approach to properly suppress or override the Customer required validation in this scenario when creating PO from an Internal Service Order via POCreate?

Any guidance or best practices would be greatly appreciated.

Thank you

Best answer by bihalivan15

i create PXGraphExtension<POOrderEntry> and set:

 protected virtual void _(Events.RowPersisting<FSServiceOrder> e, PXRowPersisting baseMethod)
        {
            if (e.Row == null)
                return;

            FSServiceOrder row = e.Row;

            if (IsInternal(row.SrvOrdType))
            {
                PXDefaultAttribute.SetPersistingCheck<FSServiceOrder.customerID>(
                    e.Cache, e.Row, PXPersistingCheck.Nothing);

                PXDefaultAttribute.SetPersistingCheck<FSServiceOrder.locationID>(
                    e.Cache, e.Row, PXPersistingCheck.Nothing);
             }

            baseMethod?.Invoke(e.Cache, e.Args);
        }
 

Its solve for me

1 reply

Forum|alt.badge.img+2
  • Author
  • Captain I
  • Answer
  • February 9, 2026

i create PXGraphExtension<POOrderEntry> and set:

 protected virtual void _(Events.RowPersisting<FSServiceOrder> e, PXRowPersisting baseMethod)
        {
            if (e.Row == null)
                return;

            FSServiceOrder row = e.Row;

            if (IsInternal(row.SrvOrdType))
            {
                PXDefaultAttribute.SetPersistingCheck<FSServiceOrder.customerID>(
                    e.Cache, e.Row, PXPersistingCheck.Nothing);

                PXDefaultAttribute.SetPersistingCheck<FSServiceOrder.locationID>(
                    e.Cache, e.Row, PXPersistingCheck.Nothing);
             }

            baseMethod?.Invoke(e.Cache, e.Args);
        }
 

Its solve for me