采购订单屏幕主要由自动化步骤驱动。这一事实使得对自动化步骤的更改成为当 PO 处于打开状态时启用自定义字段所需的强制性步骤:
要在 Purchase Order Summary 区域和 Document Details 网格上启用自定义文本字段,应修改 NL Open 步骤,添加2行如上图所示。
添加这些行后,采购订单摘要区域中的自定义文本字段变为可编辑,但是,文档详细信息中的自定义文本字段列仍然是只读的 网格,因为 POLine_RowSelected 处理程序是如何在 POOrderEntry BLC 中实现的:
[Serializable]
public class POOrderEntry : PXGraph<POOrderEntry, POOrder>, PXImportAttribute.IPXPrepareItems
{
...
protected virtual void POLine_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
POLine row = (POLine)e.Row;
POOrder doc = this.Document.Current;
if (row == null) return;
if (IsExport) return;//for performance
bool isLinkedToSO = row.Completed == true && IsLinkedToSO(row);
if (this.Document.Current.Hold != true || isLinkedToSO)
{
PXUIFieldAttribute.SetEnabled(sender, e.Row, false);
...
}
...
}
...
}
要启用自定义文本字段列进行编辑,您应该另外订阅 POOrderEntry BLC 扩展中的 POLine_RowSelected 处理程序,如下面的代码 sn-p 所示:
public class POOrderEntryExt : PXGraphExtension<POOrderEntry>
{
public void POLine_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
POLine line = (POLine)e.Row;
POOrder order = Base.Document.Current;
if (order == null || line == null || Base.IsExport) return;
if (order.Status == POOrderStatus.Open)
{
PXUIFieldAttribute.SetEnabled<POLineExt.usrCustomTextField>(sender, line, true);
}
}
}
一旦您在自动化步骤中进行了更改并订阅了 POOrderEntry BLC 扩展中的 POLine_RowSelected 处理程序,您的采购订单摘要区域和文档详细信息网格上的自定义字段应该当 PO 处于 Open 状态时打开编辑: