首页 文章

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

提问于
浏览
1

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

  • 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

相关问题