更改联系人活动选项卡上的默认排序

Change Default Sort on Contact Activities Tab

在“联系人”屏幕的“活动”选项卡上,我正在从外部来源提取 activity 数据并创建相应的 Acumatica 活动。此 activity 创建是一个周期性的计划过程,因此活动不是实时创建的。因此,外部活动的 CreatedDateTime 字段并不反映活动发生的实际时间。

但是,我需要根据它们实际发生的时间(而不是根据它们在 Acuamtica 中创建的时间)对这些外部活动进行排序,并以相对于现有 Acuamtica 活动的正确顺序显示。但是联系人图表的活动视图按 CreatedDateTime 排序,因此这些活动是根据 Acuamtica 创建时间而不是实际时间显示的。

我可以想到两种可能的解决方案,但我看不到实现任何一种的方法。

1.将 CRActivity.CreatedDateTime 字段设置为实际的 activity 时间。 如果我们可以将创建日期时间设置为 activity 的实际时间,“活动”选项卡的默认排序顺序将按实际发生的时间顺序正确显示外部活动。然而,这个字段是一个默认的系统字段,除了 Acumatica 对象被持久化的时间之外,我没有看到一个好的方法来强制它成为任何东西。有没有办法为 CreatedDateTime 字段指定一个值?

2。修改“活动”选项卡的默认排序顺序。 我们可以将新活动的 StartDate 设置为它们实际发生的时间。因此,如果我们可以按开始日期而不是创建日期时间对活动网格进行排序,那也将达到预期的效果。如果 Activities 视图是一个简单的 PXSelect,我们可以简单地创建一个新的 PXSelect 语句,其中包含我们在图形扩展中想要的顺序,并将其用作网格的数据成员。但是,Activities 视图并不简单,OrderBy 隐藏在 CRActivityListBase class 的 GenerateOriginalCommand 方法中。无论如何,是否可以利用 CRActivityListBase 的所有功能来覆盖此 OrderBy

是否有一种可接受的方式来使用这些方法,或者是否有一种替代方法可以显示按实际时间排序的活动?

您可以使用 OrderByNew 替换排序,如下所示。

public class ContactMaintPXExt : PXGraphExtension<ContactMaint>
{
    public override void Initialize()
    {
        Base.Activities.OrderByNew<OrderBy<Desc<CRActivity.startDate>>>();
    }
}