如果PO处于打开状态,如何在PO301000上启用自定义字段?

时间:2017-07-24 18:49:55

标签: acumatica acumatica-kb

我已将自定义添加到PO输入屏幕,PO.30.10.00。自定义添加了四个日期字段,一个组合框文本字段和一个字符串(10)字段。

现在,这些字段仅在PO处于暂停状态时可编辑。用户希望能够随时编辑这些字段。他们使用这些字段来跟踪不同的PO,并将对它们建立通用查询,以便他们可以通过维护这些字段来传达PO的状态。

当PO处于“打开”状态时,“承诺日期”可编辑。我们希望这些自定义字段可以像Promise Date那样进行编辑。

1 个答案:

答案 0 :(得分:3)

采购订单屏幕受自动化步骤的大力推动。这一事实使自动化步骤的更改成为PO处于打开状态时启用自定义字段所需的必需步骤: enter image description here

要在采购订单摘要区域和文档详细信息网格中启用自定义文本字段,应通过添加修改 NL Open 步骤2条线,如上面的截图所示。

添加这些行后,自定义文本字段在采购订单摘要区域变为可编辑,但是,自定义文本字段列在文档详细信息网格,因为在POOrderEntry BLC中如何实现POLine_RowSelected处理程序:

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

enter image description here