1

我已在 PO 条目屏幕 PO.30.10.00 中添加了自定义项。自定义添加了四个日期字段、一个组合框文本字段和一个字符串 (10) 字段。

目前,这些字段仅在 PO 处于保留状态时才可编辑。用户希望能够随时编辑这些字段。他们使用这些字段来跟踪不同的 PO,并将在它们上构建通用查询,以便他们可以通过维护这些字段来传达 PO 的状态。

当采购订单处于打开状态时,承诺日期是可编辑的。我们希望这些自定义字段可以像承诺日期一样进行编辑。

4

1 回答 1

3

采购订单屏幕主要由自动化步骤驱动。这一事实使得对自动化步骤的更改成为当 PO 处于打开状态时启用自定义字段所需的强制性步骤: 在此处输入图像描述

要在采购订单摘要区域和文档详细信息网格上启用自定义文本字段,应修改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 处理程序,如下面的代码片段所示:

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 处理程序后,当采购订单处于打开状态时,采购订单摘要区域和文档详细信息网格上的自定义字段应打开以供编辑:

在此处输入图像描述

于 2017-07-24T18:49:54.510 回答