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

时间:2017-07-06 05:12:56

标签: acumatica

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


}
然而,它仍然是残疾人,并没有做它应该做的事情。那么我做错了什么?我是否在正确的事件上进行覆盖?

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

感谢您的回答。

1 个答案:

答案 0 :(得分:3)

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

enter image description here

除了上面显示的自动化步骤更改,您还应该保留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);
        }
    }
}

通过这两项更改,客户订单将对已完成状态的SO订单保持启用状态:

enter image description here