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