Salesforce 完成时docusign更新父字段

Salesforce 完成时docusign更新父字段,salesforce,docusignapi,apex,Salesforce,Docusignapi,Apex,我不熟悉与salesforce的文档集成。我遵循一个简单的流程 用户登录到sfdc 用户转到对象A并单击自定义按钮(与文档中的按钮完全相同)选择模板并发送给用户X 接收器X将签名并将其发回。 我的问题是-在步骤3之后,是否有任何方法更新对象a中的picklist字段,该字段指示文档已签名并已接收 我不想对文档状态执行触发器,并且在尝试process builder时,无法看到父选择列表字段 所以,我想知道docusign是否有任何功能可以解决我的问题 谢谢 KR应用程序交换上的DocuSign

我不熟悉与salesforce的文档集成。我遵循一个简单的流程

  • 用户登录到sfdc
  • 用户转到对象A并单击自定义按钮(与文档中的按钮完全相同)选择模板并发送给用户X
  • 接收器X将签名并将其发回。 我的问题是-在步骤3之后,是否有任何方法更新对象a中的picklist字段,该字段指示文档已签名并已接收
  • 我不想对文档状态执行触发器,并且在尝试process builder时,无法看到父选择列表字段

    所以,我想知道docusign是否有任何功能可以解决我的问题

    谢谢


    KR

    应用程序交换上的DocuSign for Salesforce(DfS)应用程序是最终产品(即最终用户产品)。如果它的当前功能集不能解决您的所有业务需求,那么您可以始终进行API集成并使用
    DocuSign Connect
    模块

    使用DocuSign Connect,您可以设置一个外部http侦听器,在该侦听器中发送实时状态/事件更新并可以对其进行解析。此时,您可以在Salesforce内部或外部编写任何需要执行的逻辑。有关DocuSign Connect的更多信息,请参见此

    否则,如果要与DfS结合使用,则只能通过触发器来完成,因为

  • 工作流没有帮助,因为工作流无法更新相关(通过查找字段)对象
  • Process builder也不会提供帮助,因为同样的问题(无法更新相关对象)
  • 公式字段没有帮助,因为Salesforce对象的DocuSign状态为1对多关系
  • 唯一正确的解决方案是触发器(非常简单,10行代码,只需用您的信息替换我的TODO):

    触发更新端口单元信封在dsfs\uuuuu文档签名\u状态\uuuu c上完成(更新后)
    {
    //获取一组包含Opportunity的所有已完成docusign状态
    Set opportunityId=新集合();
    对于(dsfs\uuuuuuuu DocuSign\u Status\uuuuuuuu c Status:Trigger.new){
    如果(status.dsfs\uuuu Opportunity\uuu c!=null&&status.dsfs\uuu信封\u status\uuuu c=='Completed'){//TODO:用要更新的对象替换dsfs\uuu Opportunity\uu c,如dsfs\uu Contact\uu c或dsfs\uu Lead\uu c
    opportunityId.add(status.dsfs__Opportunity__c);//TODO:用要更新的对象替换dsfs__Opportunity__c
    }
    }
    //找回这些机会
    //TODO:用要更新的字段替换DeliveryInstallationStatus\uu c,将Opportunity替换为对象名称,例如:Contact或Lead
    List Opportunity=[从Opportunity中选择Id,DeliveryInstallationStatus\uu c,其中Id位于:opportunityId];
    //更新这些机会
    对于(Opportunity o:opportunities){//TODO:用对象名称替换Opportunity
    o、 DeliveryInstallationStatus__c='Completed';//TODO:将DeliveryInstallationStatus__c替换为要更新的字段,将'Completed'替换为要设置的字段值
    }
    更新机会;
    }
    
    trigger UpdateOpportunityOnEnvelopeCompleted on dsfs__DocuSign_Status__c (after update)
    {
    
        // get a set of all completed docusign statuses with opportunities
        Set<Id> opportunityId = new Set<Id>();
        for(dsfs__DocuSign_Status__c  status : Trigger.new) {
           if (status.dsfs__Opportunity__c != null && status.dsfs__Envelope_Status__c== 'Completed') {  // TODO: Replace dsfs__Opportunity__c with the object you want to update, say dsfs__Contact__c or dsfs__Lead__c
               opportunityId.add(status.dsfs__Opportunity__c);                                                                                     // TODO: Replace dsfs__Opportunity__c with the object you want to update
           }
        }
    
        // retrieve these opportunities
        // TODO: Replace DeliveryInstallationStatus__c with the field you want to update, replace Opportunity to your object name, ex: Contact or Lead
        List<Opportunity> opportunities = [SELECT Id, DeliveryInstallationStatus__c FROM Opportunity WHERE Id IN :opportunityId];
    
        // update these opportunities
        for(Opportunity o : opportunities) {                  // TODO: Replace Opportunity with your object name
            o.DeliveryInstallationStatus__c = 'Completed';    // TODO: Replace DeliveryInstallationStatus__c with the field you want to update , replace 'Completed' with field value you want to set
        }
        update opportunities;
    }