微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Acumatica : 是否可以在 AR521000 屏幕中自定义网格?

如何解决Acumatica : 是否可以在 AR521000 屏幕中自定义网格?

首先,对不起我的英语!!!

我需要自定义屏幕 AR521000 中的网格 (DunningLetterList)。

在这个网格中,我们有 BAccountid。在数据库中,每个 BAccountId(客户)认选中一名(且只有一名)销售员(CustomerMaint 的“Salespersons”选项卡中的“Default”复选框)。

我需要为列表中出现的每个客户在 DunningLetterList 中添加认销售人员的姓名。

知道这是一个进程屏幕,这可能吗?如果可能,我该怎么做?

提前致谢!!

解决方法

恐怕没有不影响性能的简单解决方案。那是因为网格中的行没有像往常一样插入缓存中,而是在数据视图委托中生成并添加了 cache.Hold(row);

因此,我找到的唯一解决方案是在 RowSelected 上添加销售人员的姓名。 (!) 请注意,Acumatica 自定义最佳实践不建议这样做(尽管您可能会在这里和那里找到此类选择)。只是让您知道,SQL 生成的查询是 SELECT TOP (1)。

业务逻辑的定制:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using PX.Data;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.GL;
using PX.SM;
using static PX.Objects.Common.Extensions.CollectionExtensions;
using PX.Objects;
using PX.Objects.AR;
using ARDunningLetterList = PX.Objects.AR.ARDunningLetterProcess.ARDunningLetterList;

namespace PX.Objects.AR
{

public class ARDunningLetterListSP : PXCacheExtension<ARDunningLetterList>
{
    #region SalesPerson
    public abstract class salesPerson : PX.Data.BQL.BqlString.Field<salesPerson> { }
    [PXString(60)]
    [PXUIField(DisplayName = "Sales Person")]
    public virtual string SalesPerson { get; set; }
    #endregion

 }

public class ARDunningLetterProcess_Extension : PXGraphExtension<ARDunningLetterProcess>
{
   public virtual void ARDunningLetterList_RowSelected(PXCache sender,PXRowSelectedEventArgs e)
    {
      ARDunningLetterList row = e.Row as ARDunningLetterList ;
        if (row == null) return;

     SalesPerson sp = PXSelectJoin<SalesPerson,InnerJoin<CustSalesPeople,On<SalesPerson.salesPersonID,Equal<CustSalesPeople.salesPersonID>>>,Where<CustSalesPeople.bAccountID,Equal<Required<CustSalesPeople.bAccountID>>,And<CustSalesPeople.isDefault,Equal<True>>>>.SelectSingleBound(this.Base,null,row.BAccountID);

      var rowExt = row.GetExtension<ARDunningLetterListSP>();
       rowExt.SalesPerson = sp?.Descr;

    }
}
}

然后在网格中添加自定义字段。

注意:我也尝试过其他解决方案(例如覆盖数据视图(添加联接表)、委托或使用属性来计算值,但我没有运气)。

,

我知道这并不容易!! 感谢您的回答和研究!!

效果很好!!

你知道为什么我不能过滤或排序这个列吗?我添加了“AllowFilter”和“AllowSort”属性,但它不起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。