【问题标题】:Can I get the custom filed of customer in sales order screen?我可以在销售订单屏幕中获取客户的自定义字段吗?
【发布时间】:2018-04-25 16:29:08
【问题描述】:

我在客户屏幕上创建了一个自定义字段“Inner Branch ID”。 我的问题是如何在销售订单 BLC 中获得它的价值?使用 PXSelect 方法?真的让我很困惑……

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    如果您只想显示添加到客户的自定义字段,您可以按照下面的屏幕截图所示进行操作

    如果您想在某个事件或操作下获取代码中自定义字段的值,您可以执行以下操作:

    using PX.Data;
    using PX.Objects.AR;
    using PX.Objects.SO;
    using PX.Objects.CR;
    using System;
    
    namespace ClassLibrary1
    {
        public class SOOrderEntryExt: PXGraphExtension<SOOrderEntry>
        {
            public virtual void Customer_RowSelecting(PXCache sender,PXRowSelectingEventArgs eventArgs,PXRowSelecting baseMethod)
            {
                baseMethod?.Invoke(sender, eventArgs);
                if(eventArgs.Row!=null)
                {
                    Customer currentCustomer = (Customer)eventArgs.Row;
                    BAccountExt currentCustomerExtension = PXCache<BAccount>.GetExtension<BAccountExt>(currentCustomer);
                    var value = currentCustomerExtension.UsrCustomerNote;
                }
            }
        }
    }
    

    Customer 继承自 BAccount 类,所以下面这行不会有任何问题:

    BAccountExt currentCustomerExtension = PXCache<BAccount>.GetExtension<BAccountExt>(currentCustomer);
    

    在此行之后,您将获得自定义字段的值,并且可以根据需要使用它:

    var value = currentCustomerExtension.UsrCustomerNote;
    

    【讨论】:

    • 首先感谢您的回复。但我有点困惑。如果我想获取当前 SO(在屏幕上)的客户,然后获取客户的自定义字段。你的代码能用吗?
    • @JackZeng 是的,此代码适用于销售订单的当前客户
    • 如果我不想在 Customer_RowSelecting 事件中做,而不是在行动中做?代码是一样的吗?我是否需要更改这些代码“客户 currentCustomer = (Customer)eventArgs.Row;” ?
    • @JackZeng eventArgs.Row 是当前客户的行,框为对象。这就是为什么要转换为客户类型的原因。如果采取行动而不是使用eventArgs.Row,您可以尝试获取this.Base.customer.Current 并获取它的扩展名
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多