如何通过Acumatica代码为电子邮件活动添加通知模板

如何通过Acumatica代码为电子邮件活动添加通知模板,acumatica,acumatica-kb,Acumatica,Acumatica Kb,用户要求创建一个新的操作按钮以从销售订单屏幕发送电子邮件,当用户单击发送电子邮件时,我们将重定向到电子邮件活动屏幕,对于正文,我需要通过代码传递通知模板。此外,当我保存此电子邮件活动时,此活动应在活动选项卡下的联系人屏幕上创建 为什么联系人屏幕位于销售订单中我们有一个自定义字段作为联系人,这是强制性的,因此用户希望在联系人屏幕上创建此活动我有一个代码,直到为联系人创建活动,但要添加销售订单详细信息,因为当我手动添加该模板时,通知模板不起作用。我在正文bcz中看到空白值“活动”在“联系人”下创建,

用户要求创建一个新的操作按钮以从销售订单屏幕发送电子邮件,当用户单击发送电子邮件时,我们将重定向到电子邮件活动屏幕,对于正文,我需要通过代码传递通知模板。此外,当我保存此电子邮件活动时,此活动应在活动选项卡下的联系人屏幕上创建

为什么联系人屏幕位于销售订单中我们有一个自定义字段作为联系人,这是强制性的,因此用户希望在联系人屏幕上创建此活动我有一个代码,直到为联系人创建活动,但要添加销售订单详细信息,因为当我手动添加该模板时,通知模板不起作用。我在正文bcz中看到空白值“活动”在“联系人”下创建,因此我得到订单通知模板的空白,下面是我的代码

public PXAction<SOOrder> createBSEmail;
        [PXUIField(DisplayName = "Send Email", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
        [PXButton]
        public void CreateBSEmail()
        {
            ProcessBSEmail();
        }

        private void ProcessBSEmail()
        {
            if (Base.Document.Current != null)
            {
                SOOrderExt rowext = Base.Document.Current.GetExtension<SOOrderExt>();
                if (rowext != null)
                {
                    var targetGraph = PXGraph.CreateInstance<CREmailActivityMaint>();
                    var message = targetGraph.Message.Insert();
                    if (rowext.UsrKWContactID != null)
                    {                        
                        Contact con = PXSelectReadonly<Contact, Where<Contact.contactID, Equal<Required<Contact.contactID>>>>.Select(Base, rowext.UsrKWContactID);
                        if (con != null)
                        {                            
                            message.RefNoteID = con.NoteID;
                            message.BAccountID = con.BAccountID;
                            message.ContactID = con.ContactID;
                            //message.NoteID = con.NoteID;
                            message.IsIncome = false;
                            message.Subject = "Test Subjext";
                            message.MailTo = con.EMail != null ? con.EMail : string.Empty;
                                targetGraph.Message.Update(targetGraph.Message.Current);
                                throw new PXRedirectRequiredException(targetGraph, true, "Email") { Mode = PXBaseRedirectException.WindowMode.NewWindow };
}
                    }
                }
            }
        }


Also, here if i pass salesorder noteid then i am able to get the values for the order notification template when i add it, but then the activity is creating for the order not to the contact.

So how i can resolve this i need to create the activity for the contact and through code i need to pass order details using notification template.


Thanks in advance.
public-PXAction-createBSEmail;
[PXUIField(DisplayName=“发送电子邮件”,MapEnableRights=PXCacheRights.Select,MapViewRights=PXCacheRights.Select)]
[按钮]
public void CreateBSEmail()
{
ProcessBSEmail();
}
私有void ProcessBSEmail()
{
if(Base.Document.Current!=null)
{
SOOrderExt rowext=Base.Document.Current.GetExtension();
if(rowext!=null)
{
var targetGraph=PXGraph.CreateInstance();
var message=targetGraph.message.Insert();
if(rowext.UsrKWContactID!=null)
{                        
Contact con=PXSelectReadonly.Select(Base,rowext.UsrKWContactID);
如果(con!=null)
{                            
message.RefNoteID=con.NoteID;
message.BAccountID=con.BAccountID;
message.ContactID=con.ContactID;
//message.NoteID=con.NoteID;
message.IsIncome=false;
message.Subject=“Test subtext”;
message.MailTo=con.EMail!=null?con.EMail:string.Empty;
targetGraph.Message.Update(targetGraph.Message.Current);
抛出新的PXRedirectRequiredException(targetGraph,true,“Email”){Mode=PXBaseRedirectException.WindowMode.NewWindow};
}
}
}
}
}
此外,如果我在这里传递salesorder noteid,那么我可以在添加订单通知模板时获取该模板的值,但随后该活动将为订单而不是联系人创建。
因此,如何解决这个问题,我需要为联系人创建活动,并通过代码使用通知模板传递订单详细信息。
提前谢谢。

一个问题中包含许多不相关的问题。考虑问更多的焦点问题,这样我们就可以在一个问题上提供答案。哪一部分需要以编程方式完成,哪一部分应该由用户完成并不明显。打开“发送电子邮件”活动页面与实际发送电子邮件不同。您好@HuguesBeauséjour我已修改了上面的问题,请检查一次并帮助我解决此问题。有许多不相关的问题包含在一个问题中。考虑问更多的焦点问题,这样我们就可以在一个问题上提供答案。哪一部分需要以编程方式完成,哪一部分应该由用户完成并不明显。打开发送电子邮件活动页面与实际发送电子邮件不同。您好@HuguesBeauséjour我已经修改了上面的问题,请检查一下并帮助我解决此问题