在 CRM Activity 中添加自定义实体类型以在相关实体中进行选择

Adding Custom Entity Type in CRM Activity for selecting in Relative Entity

我在自定义页面上实施了 CRM activity,其中关键字段是存储在自定义 DAC 中的 SOOrder 类型、SOOrder Nbr 和工作代码。我试图添加列在相关实体上的实体类型,但我不知道该怎么做。请让我知道在哪里添加或覆盖实现功能的方法

以下 cod 用于实施 CRM Activity

public sealed class SOOrderJobActivities : CRActivityList<PSSOOrderJob>
{
    public SOOrderJobActivities(PXGraph graph)
        : base(graph) { }

    protected override RecipientList GetRecipientsFromContext(NotificationUtility utility, string type, object row, NotificationSource source)
    {
        var recipients = new RecipientList();

        var order = _Graph.Caches[typeof(PSSOOrderJob)].Current as PSSOOrderJob;

        if (order == null || source == null)
            return null;
        SOOrder ord = SOOrder.PK.Find(_Graph, order.OrderType, order.OrderNbr);
        var contact = SOOrder.FK.Contact.FindParent(_Graph, ord);

        if (contact == null || contact.EMail == null)
            return null;

        recipients.Add(new NotificationRecipient()
        {
            Active = true,
            AddTo = RecipientAddToAttribute.To,
            Email = contact.EMail
        });

        source.RecipientsBehavior = RecipientsBehaviorAttribute.Override;

        return recipients;
    }
}

更新

完成 Acumatica 代码后,我做了以下更改

#region Noteid
    [PXNote(ShowInReferenceSelector =true,Selector =typeof(Search2<PSSOOrderJob.jobCode,
        InnerJoin<SOOrder,On<PSSOOrderJob.orderType,Equal<SOOrder.orderType>,And<PSSOOrderJob.orderNbr, Equal<SOOrder.orderNbr>>>>,
        Where<SOOrder.orderType,Equal<Current<PSSOOrderJob.orderType>>,And<SOOrder.orderNbr, Equal<Current<PSSOOrderJob.orderNbr>>>>>))]
    public virtual Guid? Noteid { get; set; }
    public abstract class noteid : PX.Data.BQL.BqlGuid.Field<noteid> { }
    #endregion

实体进入 selection,但我无法 select 相关实体文档并且相关实体字段中的值未得到更新。

上面的截图 select 丢失了,无法 select 文档

我已完成以下步骤,使用自定义 DAC

为任何 Activity 添加相关实体
1.  Added ShowInReferenceSelector = true in PXNoteID field.
2.  Added Selector in PXNoteID field
3.  Decorated [PX.Data.EP.PXFieldDescription] attribute for Key fields

#region NoteID
    [PXNote(ShowInReferenceSelector = true, Selector = typeof(Search2<PSSOOrderJob.jobCode,
        InnerJoin<SOOrder, On<PSSOOrderJob.orderType, Equal<SOOrder.orderType>, And<PSSOOrderJob.orderNbr, Equal<SOOrder.orderNbr>>>>,
        Where<SOOrder.orderType, Equal<Current<PSSOOrderJob.orderType>>, And<SOOrder.orderNbr, Equal<Current<PSSOOrderJob.orderNbr>>,And<PSSOOrderJob.jobType,Equal<Current<PSSOOrderJob.jobType>>>>>>), DescriptionField = typeof(PSSOOrderJob.jobCode))]
    //[PXNote(ShowInReferenceSelector = true)]
    public virtual Guid? NoteID { get; set; }
    public abstract class noteID : PX.Data.BQL.BqlGuid.Field<noteID> { }
    #endregion

#region JobCode
    [PXDBString(15, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")]
    [PXUIField(DisplayName = "Job Code")]
    [PXDefault()]
    [PXSelector(typeof(Search<PSSOOrderJob.jobCode, Where<PSSOOrderJob.orderType, Equal<Current<PSSOOrderJob.orderType>>, And<PSSOOrderJob.orderNbr, Equal<Current<PSSOOrderJob.orderNbr>>,And<PSSOOrderJob.jobType, Equal<Current<PSSOOrderJob.jobType>>>>>>), typeof(PSSOOrderJob.jobCode),  ValidateValue = false)]
    [PSSOOrderJobNbr.Numbering()]
    [PX.Data.EP.PXFieldDescription]
    public virtual string JobCode { get; set; }
    public abstract class jobCode : PX.Data.BQL.BqlString.Field<jobCode> { }
    #endregion

这会自动用职位代码填充相关的实体字段。

由于实体字段宽度大于弹出窗口,我还面临一个无法访问选择器的问题 window,我不知道如何解决它。

此答案仅用于解决弹出窗口大小问题。

首先,试试浏览器缩放 'control' + 'minus' 键。它可能是一种快速解决方法。

否则,请使用浏览器调试器功能。用 F12 键打开它。然后使用浏览器调试器检查元素功能 (1)。单击智能面板 (2)。在 html 控制层次结构中向上一点,直到到达 select 智能面板根,这是一个 table 元素 (3)。使用调试器 CSS 属性编辑器 (4).

更改智能面板弹出窗口的宽度

如果select或控件大小随着window大小自动增加;使用浏览器调试器 CSS 属性 编辑器更改 select 或控件宽度而不是弹出宽度。