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

How to enable CustomerOrderNbr field in Sales Order screen?

在销售订单屏幕中,如果状态为已完成,我正在尝试启用 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);
    }


}

但是,它仍然处于禁用状态并且没有执行它应该执行的操作。那我做错了什么?我在正确的事件中完全可以覆盖吗?

或者销售订单完成后屏幕真的被锁定了吗?

感谢您的回答。

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

除了上面显示的自动化步骤更改之外,您还应该保留 SOOrder_RowSelected 处理程序:

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);
        }
    }
}

完成这 2 项更改后,客户订单将对状态为“已完成”的 SO 订单保持启用状态: