Acumatica 如何在销售订单屏幕中启用CustomerOrderNbr字段?

Acumatica 如何在销售订单屏幕中启用CustomerOrderNbr字段?,acumatica,Acumatica,在销售订单屏幕中,如果状态已完成,我将尝试启用CustomerOrderNbr字段 protected void SOOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { SOOrder doc = e.Row as SOOrder; if (doc == null) { return; } if (doc.Completed == true ) { PXUIFieldAttr

在销售订单屏幕中,如果状态已完成,我将尝试启用CustomerOrderNbr字段

protected void SOOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{

  SOOrder doc = e.Row as SOOrder;
  if (doc == null)
  {
    return;
  }

  if (doc.Completed == true )
    {
      PXUIFieldAttribute.SetEnabled(cache, doc , true);
      PXUIFieldAttribute.SetEnabled<SOOrder.customerOrderNbr>(cache, doc, true);
    }


}
protectedvoid SOOrder\u row选中(PXCache缓存,PXRowSelectedEventArgs e)
{
SOOrder doc=e.行作为SOOrder;
如果(doc==null)
{
返回;
}
如果(doc.Completed==true)
{
PXUIFieldAttribute.SetEnabled(缓存、文档、真);
PXUIFieldAttribute.SetEnabled(缓存、文档、真);
}
}
然而,它仍然处于禁用状态,没有做它应该做的事情。那么我做错了什么?我是否在正确的事件上进行覆盖

或者,一旦销售订单完成,屏幕真的锁定了吗


感谢您的回答。

由于销售订单屏幕主要由自动化步骤驱动,除了SOOrder DAC的扩展RowSelected处理程序外,绝对必须为禁用整个SOOrder的已完成订单修改自动化步骤:

除了上面所示的自动化步骤更改之外,您还应该保持SOOrder_row Selected handler:

public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
    public void SOOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
    {
        SOOrder order = e.Row as SOOrder;
        if (order == null) return;

        if (order.Completed == true)
        {
            PXUIFieldAttribute.SetEnabled<SOOrder.customerOrderNbr>(sender, order, true);
        }
    }
}
公共类SOOrderEntryExt:PXGraphExtension
{
已选择公共无效排序(PXCache发送方,PXRowSelectedEventArgs e)
{
SOOrder order=e.行作为SOOrder;
if(order==null)返回;
if(order.Completed==true)
{
PXUIFieldAttribute.SetEnabled(发送方、订单、true);
}
}
}
这两项更改到位后,客户订单将保持启用状态,以便SO订单处于已完成状态: