Docusign模板未与APEX代码合并

问题描述

我将机会ID发送到 mySourceId 中,并执行标准的Docusign APEX API例程。我们有一个按钮可以使用标准的Docusign例程来完成此合并,但是我们正设法消除用户必须忍受的所有额外按钮单击。

我有一个已创建的模板,该模板可在Docusign上使用,并具有文档上与Salesforce相关的“自定义字段标签。文档中有我缺少的东西吗?

        //create the emptyenvelope connecting it to the SF object
        myEnvelope = dfsle.EnvelopeService.getEmptyEnvelope(new dfsle.Entity(**mySourceId**));

        //use the Recipient.fromSource method to create the Recipient
        dfsle.Recipient myRecipient = dfsle.Recipient.fromSource(sender.name,// Recipient name
                                                                 sender.eAddress,// Recipient email
                                                                 null,//Optional phone number
                                                                 sender.role,//Role Name. Specify the exact role name from template
                                                                 new dfsle.Entity(**mySourceId**)); //source object for the Recipient
        //add email detail for the envelope
        myEnvelope = myEnvelope.withEmail(settingsDocusignTemplate.get(sourceName).email_subject__c,settingsDocusignTemplate.get(sourceName).email_body__c);

        //Could provide automatic notifications as well based off of criteria
        final boolean dfsle_reminder = settingsDocusignTemplate.get(sourceName).reminder__c;
        final integer dfsle_remindAfterDays = Integer.valueOf(settingsDocusignTemplate.get(sourceName).remindAfterDays__c); //wait before sending reminder
        
        //add Recipient to the Envelope
        myEnvelope = myEnvelope.withRecipients(new List<dfsle.Recipient> { myRecipient });

        //create a new document for the Envelope
        dfsle.Document myDocument =     dfsle.Document.fromTemplate((dfsle.UUID)templateInfo.get('UUID'),// templateId in dfsle.UUID format
        (String)templateInfo.get('name')); // name of the template

        //add document to the Envelope
        myEnvelope = myEnvelope.withDocuments(new List<dfsle.Document> { myDocument });

    try {
            
        System.debug('\tSending Envelope');
        dfsle.EnvelopeService.sendEnvelope(myEnvelope,// The envelope to send
                                                    true); // Send Now?
    } catch (dfsle.DocuSignException docusignExcpt) {
        ErrorLogUtil.createErrorLogData(docusignExcpt,CLASS_NAME,METHOD_NAME,null,null);
    } catch (Exception excp) {
        ErrorLogUtil.createErrorLogData(excp,null);
    }

解决方法

尝试在“为信封创建新文档”之后将其添加到代码中。

String opptyStr = (String) myOpportunity.Id + '~Opportunity';
        dfsle.CustomField myField = new dfsle.CustomField ('text','DSFSSourceObjectId',opptyStr,null,false,false);

//add document to the Envelope
myEnvelope = myEnvelope.withDocuments(new List<dfsle.Document> { myDocument })
.withCustomFields(new List<dfsle.CustomField> {myField});

技术上不支持合并字段,但是我们可以通过将自定义字段与此代码结合使用来解决此问题。

,

withCustomFields(新列表 {myField})

如何将多个字段添加到新List {myField}的列表中?

,

所以最终看起来像这样;

        templateInfo.put('Source_Reference',(String) mySourceId + '~Opportunity');

        dfsle.CustomField sourceField = new dfsle.CustomField ('text',(String)templateInfo.get('Source_Reference'),false);

        //add document to the Envelope
        myEnvelope = myEnvelope.withDocuments(new List<dfsle.Document> { myDocument });

        //populate the custom fields on the Envelope
        myEnvelope = myEnvelope.withCustomFields(new List<dfsle.CustomField> {sourceField});