【问题标题】:DocuSign for Salesforce Custom Button - Auto Populate RecipientsDocuSign for Salesforce 自定义按钮 - 自动填充收件人
【发布时间】:2014-10-08 17:14:45
【问题描述】:

我在 Salesforce 中有一个自定义按钮,我尝试将其配置为自动填充收件人。我有一个自定义 Salesforce 对象“审批者”,它与我为其配置了自定义按钮的对象相关。审批者对象是联系人对象的查找关系对象。审批者对象具有“审批者电子邮件”、“名字”、“姓氏”和“角色”字段。审批人电子邮件、名字和姓氏字段是从联系人获取此信息的公式字段。角色字段是一个选项列表字段,其中包含的值与我在 DocuSign for Salesforce 的信封设置中配置的值相同。

我尝试在按钮 JavaScript 中编写代码来自动填充在 Approver 对象中选择的联系人,但该按钮甚至没有将收件人角色插入信封。下面是我如何编写 CCRM、CCTM、CCNM 和 CRCL 部分的 JavaScript

任何帮助将不胜感激

CCRM ='1~Appr 1 Level 1;2~Appr 2 Level 1;3~Appr 3 Level 1;4~Appr 4 Level 1;5~Appr 5 Level 1;6~Reviewer 1;7~Reviewer 2 ;8~3 号审稿人;9~4 号审稿人;10~5 号审稿人;11~第 2 级审稿人;12~第 2 级审稿人;13~第 2 级审稿人;14~第 2 级审稿人;15~第 3 级审稿人;16~Appr 2 Level 3;17~Appr 3 Level 3;18~Appr 1 Level 4;19~Appr 2 Level 4;20~Appr 1 Level 5;21~Appr 2 Level 5'; // 自定义联系人类型映射 CCTM ='1~签名者;2~签名者;3~签名者;4~签名者;5~签名者;6~确认回执;7~确认回执;8~确认回执;9~确认回执;10~确认回执;11~签名者;12~签名者;13~签名者;14~签名者;15~签名者;16~签名者;17~签名者;18~签名者;19~签名者;20~签名者;21~签名者'; // 自定义联系人备注图(默认无备注) CCNM = ''; //例如:'决策者~DM 的注释;经济买家~EB 的注释;DEFAULT_NOTE~默认注释' // 自定义相关联系人列表(默认对象联系人) CRCL ='Approver__r,Email~Approver_Email__c;FirstName~First_Name__c;LastName~Last_Name__c;ApRole~Role__c;LoadDefaultContacts~0' //例如:'Approver__r,Email~Email__c;FirstName~First_Name__c;LastName~Last_Name__c;Role~Role__c,LoadDefaultContacts~0'

【问题讨论】:

    标签: docusignapi


    【解决方案1】:
    1. 我建议你分解你的按钮代码,记住这是 jscript 你需要让它可调试
    2. 这里是文档Docusign Custom Button Documentation for Salesforce的参考 在这里DocuSign Custom Button Sample Documentation for Salesforce
    3. 我怀疑您希望 CRCL 中的 loadDefaultContacts~1 根据文档“LoadDefaultContacts 参数确定是否 源对象类型的默认联系人已加载(0 - 不 加载,1 – 加载)。”

    4. 我将如何调试:

      一个。添加警报(由 debug var 控制,更改为 true 即可查看)

      b.最后添加 Try Catch

      c。查看下面的示例自定义按钮,并与您尝试完成的内容进行比较,一次一步完成

      d。使用 Chrome 调试并进入在您的 Salesforce 页面上创建的虚拟功能,以便您可以查看从 {!} SF 令牌等生成的变量和相关值

    -通用自定义按钮示例:-

    /*REQUIREMENTS:
       1. Set Email Subject to Opp Name
       2. Set CRL to User
       3. Set signer tyoe to Carbon Copy
       Created for Salesforce Version 5.2
       Source Version of this button 1.0
       Code Reviewed by: Group Accenture
    
    */
    
    var location ='\\';
    var debug = false;
    
    
    try
    {
    
        var CES = 'Please sign this document for {!URLENCODE(JSENCODE(Opportunity.Name))}';
        var CRL = 'Email~{!URLENCODE(JSENCODE(User.Email))};LastName~{!URLENCODE(JSENCODE(User.Name))};Role~CCSigner;RoutingOrder~1;'; 
        var CCTM = 'CCSigner~Carbon Copy';
        var CCRM = 'CCSigner~CCSigner';
    
        location = "/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0&SourceID={!Opportunity.id}&CES="+CES+"&CRL="+CRL+"&CCTM="+CCTM+"&CCRM="+CCRM;
    
    
    }
    catch (e)
    {
    
        alert("Error Occured"+e.message);
    
    }
    finally
    {
        if(debug)
        {
            alert(location);
        }
        else
        {
            window.location.href = location;
        }
    }
    

    -使用 SOQL 和 CRL/CCRM/CCTM 构建的复杂自定义按钮示例 -

    {!REQUIRESCRIPT("/apex/DocuSign_JavaScript")}
    {!REQUIRESCRIPT("/soap/ajax/29.0/connection.js")}
    {!REQUIRESCRIPT("/soap/ajax/29.0/apex.js")}
    
    /*REQUIREMENTS:
       1. Set CRL based on Business logic using Product Type and User Roles
       2. Set DST based on Business logci using Product Type
       3. Business Logic (Expand Below here)
          ====See Section Business Rules====
       4. By default this is for sandbox, prod value must be true for it to be using values for Templates in Production mode
       5. This is not a one button click send
       Created for Salesforce Version 5.4
       Source Version of this button 0.5 (beta)
       Code Reviewed by: DocuSign (TBD)
    
        ====See Section Business Rules====
        DocuSign Button Logic
    
        1. IF Docusign_Checkbox__c = TRUE 
           AND Sector__c = ‘Life Sciences’
           THEN 
           Signer 1 = Business Integrity Director Role
           Signer 2 = Life Sciences Sector Lead Role
    
        2. IF Docusign_Checkbox__c = TRUE
           AND Sector__c = ‘Financial Services’
           THEN 
           Signer 1 = Business Integrity Director Role
           Signer 2 = Financial Services Sector Lead Role
    
        3. IF Docusign_Checkbox__c = TRUE
           AND Sector__c <> ‘Life Sciences’,‘Financial Services’
           THEN 
           Signer 1 = Business Integrity Director Role
           Signer 2 = Health Plans & Providers Sector Lead Role
    
        4. IF Docusign_Checkbox__c = FALSE
           THEN 
           Signer 1 = Business Integrity Director Role
           Signer 2 = Practice Lead with Signing Power
    
       Current Questions, Assumptions and clarifications outstanding
    a. What client Sign's? 
             i. I see the internal signers, but who is going to sign from the "clients" perspective, or will the person using the button decide
        b. Can you send me the LS template, renamed to txt (xml or zip will not come through)
        c. I will need the production template ids (guids) as they are different from Prod to Demo
        e. What do you want the button to say aka "Send with DocuSign" or something else for your business process
        f. I assume if I am missing the below you want an error message with all the issue shown without allowing the user to send:
            i. No user for Role
            ii. Data for Lead if not DocuSign
        g. I assume the following as well:
            i. The new doc with the 4 scenarios superceds the original email with the different condition
            ii. You don't want to change the default on the below:
                I. Email Subject or Message will be the standard default for the Managed Package in the admin
                II. The expirations and reminders will be the standard default for the Managed Package in the Admin
                III. I will not load the default contacts or attachments
                IV. I will load the recipients based on the business rules only given in the new document
                V. I will load the template based on the business rules only given in the new document
                VI. This is NOT a one button click send
    
            DEMO
            EBM = DST = 1989696D-F058-42E5-9C5B-8718482E2C1A
            NVS = DST = A906436D-5352-40DE-A9F8-1EE0795E4266
            LS = DST = 4CFE35EC-C8A4-4090-9B72-024F1DE26757
    
    4CFE35EC-C8A4-4090-9B72-024F1DE26757
            PROD
            LS DST
            6048B3CD-D2C5-44BE-9630-51CFCFBD092D
    
            EBM DST
            B3D6159B-5BE3-4B80-8e8e-96173120D0EF
    
            NVS DST
            855790D3-6121-496F-B870-D0B276A54611
    
    */
    
    var location ='\\';
    var debug = false;
    var prod = false;
    
    //Define Business Rule Functions below for:
    // Getting User Role
    function getUserInfoForRole(roleName,templateRole, routingOrder)
    {
        var recipient = '';
    
        try
        {
    
            var result = sforce.connection.query("select id, Email, FirstName, Lastname from User where userroleid in (Select id from UserRole where Name ='"+roleName+"')");
            var userForRole = result.getArray("records");
    
            recipient = 'Email~'+userForRole[0].Email+';FirstName~'+userForRole[0].FirstName+';LastName~'+userForRole[0].LastName+';Role~'+templateRole+';RoutingOrder~'+routingOrder+';,';
    
        }
        catch(e)
        {
                if(debug)
                {
                    alert(e.message);
                }
        }
        finally
        {
    
        }
    
        return recipient;
    }
    
    try
    {
    
        //Set DST based on Business Logic 
        var DST = '';
    
            //Set CRL based on Business Logic in Function (TBD)
        var CRL = ''; 
    
        //Set Signer Type to Signer for each Role as Signer (Looks to be just two in templates)
        var CCTM = '';
    
        //Set Signer Type to Signer for each Role (Looks to be just two in templates)
        var CCRM = '';
    
    
        if({!Contract.Docusign_Checkbox__c}==1)
        {
    
            if(debug)
            {
                alert('DocuSign Checked')
            }
    
            if('{!Contract.Sector__c}' == 'Life Sciences')
            {
                //Signer 1 = Business Integrity Director Role
                CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1');
                CCTM = 'Business Integrity~Signer;';
                CCRM = 'Business Integrity~Business Integrity;';
    
                //Signer 2 = Life Sciences Sector Lead Role
                CRL = CRL + getUserInfoForRole('Life Sciences Sector Lead', 'Client Signer', '2');
                CCTM = CCTM + 'Client Signer~Signer;';
                CCRM = CCRM + 'Client Signer~Client Signer;';
    
                if(debug)
                {
                    alert('Life Sciences')
                }
    
                if(prod)
                {
                    DST = '6048B3CD-D2C5-44BE-9630-51CFCFBD092D'
                }
                else
                {
                    DST = '686DBA37-EBF3-410F-90E3-7E3F36A95694';
                }
    
                if(debug)
                {
                    alert(DST)
                }
    
            }
            else if('{!Contract.Sector__c}' == 'Financial Services') 
            {
                //Signer 1 = Business Integrity Director Role
                CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1');
                CCTM = 'Business Integrity~Signer;';
                CCRM = 'Business Integrity~Business Integrity;';
    
                //Signer 2 = Financial Services Sector Lead Role
                CRL = CRL + getUserInfoForRole('Financial Services Sector Lead', 'Sector Lead', '2');
                CCTM = CCTM + 'Sector Lead~Signer;';
                CCRM = CCRM + 'Sector Lead~Sector Lead;';
    
    
                if(debug)
                {
                    alert('Financial Services')
                }
    
                if(prod)
                {
                    DST = 'B3D6159B-5BE3-4B80-8e8e-96173120D0EF'
                }
                else
                {
                    DST = '1989696D-F058-42E5-9C5B-8718482E2C1A'
                }
    
                if(debug)
                {
                    alert(DST)
                }           
    
            }
            else if(('{!Contract.Sector__c}' != 'Life Sciences') && ('{!Contract.Sector__c}' !='Financial Services'))
            {
                if(debug)
                {
                    alert('Not Life Sciences or Financial Services')
                }
                //Signer 1 = Business Integrity Director Role
                CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1');
                CCTM = 'Business Integrity~Signer;';
                CCRM = 'Business Integrity~Business Integrity;';
    
                //Signer 2 = Health Plans & Providers Sector Lead Role
                CRL = CRL + getUserInfoForRole('Health Plans & Providers Sector Lead', 'Sector Lead', '2');
                CCTM = CCTM + 'Sector Lead~Signer;';
                CCRM = CCRM + 'Sector Lead~Sector Lead;';
    
                if(prod)
                {
                    DST = '855790D3-6121-496F-B870-D0B276A54611'
                }
                else
                {
                    DST = 'A906436D-5352-40DE-A9F8-1EE0795E4266'
                }
    
                if(debug)
                {
                    alert(DST)
                }
            }
            else
            {
                //Error
                if(debug)
                {
                    alert('Error in Services detection via Sector__c')
                }
            }
    
        }
        else
        {
            //Signer 1 = Business Integrity Director Role
            CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1');
            CCTM = 'Business Integrity~Signer;';
            CCRM = 'Business Integrity~Business Integrity;';
    
            //Signer 2 = Practice Lead with Signing Power
            CRL = CRL + getUserInfoForRole('{!Contract.Sector__c} Lead', 'Practice Lead', '2');
            CCTM = CCTM + 'Practice Lead~Signer;';
            CCRM = CCRM + 'Practice Lead~Practice Lead;';
    
    
            if(debug)
            {
                alert('DocuSign NOT Checked')
            }
    
            if(prod)
            {
                DST = '855790D3-6121-496F-B870-D0B276A54611'
            }
            else
            {
                DST = 'A906436D-5352-40DE-A9F8-1EE0795E4266'
            }
    
            if(debug)
            {
                alert(DST)
            }       
    
        }
    
    
    
    
        //Need Error Check, No OppId, 
    
        location = "/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0&SourceID={!Contract.id}&DST="+DST+"&CRL="+CRL+"&CCTM="+CCTM+"&CCRM="+CCRM;
    
    
    }
    catch (e)
    {
    
        alert("Error Occured"+e.message);
    
    }
    finally
    {
        if(debug)
        {
            alert(location);
        }
        else
        {
            window.location.href = location;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      相关资源
      最近更新 更多