在“联系人活动”标签上更改默认排序

时间:2019-02-15 20:36:18

标签: acumatica acumatica-kb

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

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

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

1。将CRActivity.CreatedDateTime字段设置为实际活动时间。 如果我们可以将“创建的日期时间”设置为活动的实际时间,则“活动”选项卡的默认排序顺序将按照外部活动的实际发生时间正确显示它们。但是,此字段是默认系统字段,除了持久化Acumatica对象的时间以外,我没有看到一种强制将其设置为其他任何方法的好方法。有什么方法可以为CreatedDateTime字段指定值?

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

是否可以使用这两种方法中的一种,还是有一种替代方法可以显示按实际时间排序的活动?

1 个答案:

答案 0 :(得分:0)

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

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