在销售订单屏幕中,如果状态已完成,我正在尝试启用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);
}
}
然而,它仍然是残疾人,并没有做它应该做的事情。那么我做错了什么?我是否在正确的事件上进行覆盖?
或者,一旦销售订单完成,屏幕是否真的锁定了?
感谢您的回答。
答案 0 :(得分:3)
由于销售订单屏幕受自动化步骤的严重驱动,除了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);
}
}
}
通过这两项更改,客户订单将对已完成状态的SO订单保持启用状态: