How to enable CustomerOrderNbr field in Sales Order screen?

岁酱吖の 提交于 2019-12-13 18:17:46

问题


In Sales Order screen, I'm trying to enable the CustomerOrderNbr field if the status is completed

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


}

however, it remains disabled and not doing what it's supposed to do. So what am I doing wrong ? Am I on the right event to override at all ?

Or is the screen really locked in once the Sales Order is Completed ?

Thanks for any answers.


回答1:


Since Sales Orders screen is heavily driven by Automation Steps, in addition to extended RowSelected handler for the SOOrder DAC, it's an absolute must to modify automation steps for Completed orders that disable entire SOOrder :

In addition to the automation step change shown above, you should keep SOOrder_RowSelected 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);
        }
    }
}

With those 2 changes in place, Customer Order will stay enabled for SO Orders with Completed status:



来源:https://stackoverflow.com/questions/44940261/how-to-enable-customerordernbr-field-in-sales-order-screen

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!