当状态为待批准时,Acumatica - POOrder_RowSelected覆盖启用字段

时间:2017-09-27 12:13:59

标签: acumatica

我正在尝试在POOrder状态开启时启用某个字段"待批准"比如说明字段,但是当我在POOrder_RowSelected事件上覆盖它时,它仍然没有启用该字段。

protected void POOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
    {
        if(InvokeBaseHandler != null)
            InvokeBaseHandler(cache, e);

        POOrder row = (POOrder)e.Row;
        if (row != null)
        {
            if (row.Hold == false && row.Status == POOrderStatus.Balanced) // Balance is indicated on Pending appoval
            {
                PXUIFieldAttribute.SetEnabled<POOrder.orderDesc>(cache, row, true);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以使用自动化步骤来完成此任务。

选择您的采购订单屏幕,然后在步骤ID中选择&#34; NL待批准&#34;。 (见下文)

然后找到&#34;采购订单&#34; TableName with FieldName&#34; *&#34;并取消选中“已禁用”框。然后保存您的更改。

enter image description here

然后你可以扩展POOrderEntry图并在RowSelected事件处理程序中添加你的自定义逻辑(并设置启用所需的字段):

public void POOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
    {
        if(InvokeBaseHandler != null)
           InvokeBaseHandler(cache, e);

        POOrder order= (POOrder)e.Row;
        if (order == null || Base.IsExport) return;

        if (order.Status == POOrderStatus.Balanced)
        {
            PXUIFieldAttribute.SetEnabled<POLine.orderDesc>(sender, order, true);
        }
    } 

当POOrder处于Balanced Status时,上面的示例将启用Description字段。以下是涉及自定义用户字段的类似问题的另一个链接:How to enable a custom field on PO301000 when the PO is in Open status?