DocuSign для Salesforce — Настройка триггеров для отдельных получателей

#docusignapi #docusignapextoolkit

#docusignapi #docusignapextoolkit docusignapextoolkit

Вопрос:

Можно ли создать триггер для объекта ‘dsfs__DocuSign_Recipient_Status__c’? Пример использования: контракт передается двум людям: а) Клиенту; б) менеджеру по продажам. Такие события, как этап обновления возможностей и т. Д., Должны Начаться, как только клиент подпишет, даже если конверт не заполнен. Я знаю, что мы можем запускать события «Доставлено», «Отправлено» и т.д. В объекте статуса 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 amp;amp; 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)
{}
}
 

Ответ №1:

Да, триггеры работают с объектом dsfs__DocuSign_Recipient_Status__c. Я думаю, что ваша проблема связана с возможностью __c . Это не поле по умолчанию для объекта dsfs__DocuSign_Recipient_Status__c, поэтому там должно быть что-то не так. Я протестировал приведенный ниже код на основе вашего триггера с жестко запрограммированной возможностью. Результат Я обновил имя этапа с «Анализ потребностей» на «Ценностное предложение».

    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 amp;amp; 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)
    {}
    }