@Shaify I have modified a bit and you can use below code and check.
using PX.Data;
using PX.Objects.AR;
using PX.Objects.SO;
namespace Test
{
public class SOOrderEntryCommCust147EnableInvoiceInfoUnderManualNumbering : PXGraphExtension<SOOrderEntry>
{
public virtual void SOOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected baseM)
{
baseM(sender, e);
SOOrder doc = (SOOrder)e.Row;
if (doc != null)
PXUIFieldAttribute.SetEnabled<SOOrder.invoiceNbr>(sender, doc, isInvoiceInfoEnabled(doc));
}
public virtual void SOOrder_RowPersisting(PXCache sender, PXRowPersistingEventArgs e, PXRowPersisting baseM)
{
baseM(sender, e);
SOOrder doc = (SOOrder)e.Row;
PXDefaultAttribute.SetPersistingCheck<SOOrder.invoiceNbr>(sender, doc, isInvoiceInfoEnabled(doc) ? PXPersistingCheck.NullOrBlank : PXPersistingCheck.Nothing);
}
public bool isInvoiceInfoEnabled(SOOrder doc)
{
return (doc.ARDocType != ARDocType.Undefined && Base.soordertype.Current.UserInvoiceNumbering == true
&& doc.BillSeparately == true);
}
}
}