0

是否可以在“dsfs__DocuSign_Recipient_Status__c”对象上创建触发器?用例:合同发给两个人 a) 客户 b) 销售经理 更新机会阶段等事件应在客户签字后立即启动,即使信封未完成。我知道我们可以在“已交付”、“已发送”等上触发事件。在 DocuSign 状态对象上,但收件人级别的变量(收件人状态、路由顺序等)仅在收件人状态对象中可用。

我最初尝试了两个条件(收件人状态 && 路由顺序),然​​后尝试了一个简单的条件来仅使用收件人状态进行测试。触发器已发布,但未按预期更改 opp 阶段 - 代码如下

trigger ClientSign on dsfs__DocuSign_Recipient_Status__c (after insert, after update) {

try
 {
    system.debug('In trigger');
    dsfs__DocuSign_Recipient_Status__c dssNew = Trigger.new[0];  
    dsfs__DocuSign_Recipient_Status__c dssOld = null; 
    if (!System.Trigger.isInsert) dssOld = Trigger.old[0];
    if (System.Trigger.isInsert || dssOld.dsfs__Recipient_Status__c != dssNew.dsfs__Recipient_Status__c)
    {
        if (dssNew.dsfs__DocuSign_Routing_Order__c == 1 && dssNew.dsfs__Recipient_Status__c == 'Completed')
        {
           Opportunity o = [select StageName from Opportunity where id=:dssNew.Opportunity__c];
           if (o != null)
           {
             o.StageName = 'Value Proposition';
             upsert o;
           }
        }
    }
}
catch (Exception ex)
{}
}
4

1 回答 1

0

是的,触发器在 dsfs__DocuSign_Recipient_Status__c 对象上工作。我认为您的问题在于 Opportunity__c。这不是 dsfs__DocuSign_Recipient_Status__c 对象上的默认字段,所以那里一定有问题。我使用硬编码的机会根据您的触发器测试了以下代码。结果我将 StageName 从“需求分析”更新为“价值主张”。

   trigger ClientSign  on dsfs__DocuSign_Recipient_Status__c (after insert, after update) 
    {
    try
     {
        system.debug('In trigger');
        dsfs__DocuSign_Recipient_Status__c dssNew = Trigger.new[0];  
        dsfs__DocuSign_Recipient_Status__c dssOld = null; 
        if (!System.Trigger.isInsert) dssOld = Trigger.old[0];
        if (System.Trigger.isInsert || dssOld.dsfs__Recipient_Status__c != dssNew.dsfs__Recipient_Status__c)
        {
            if (dssNew.dsfs__DocuSign_Routing_Order__c == 1 && dssNew.dsfs__Recipient_Status__c == 'Completed')
            {
                Id myId = Id.valueOf('006f4000004IfWQAA0');
                Opportunity o = [SELECT Name, StageName FROM Opportunity WHERE id = :myId Limit 1];
                system.debug(o.Name);
                system.debug(o.StageName);
                o.StageName = 'Value Proposition';
                upsert o;
            }
        }
    }
    catch (Exception ex)
    {}
    }
于 2020-11-30T19:58:51.187 回答