Триггер Salesforce Apex — вычисление суммы значений поля суммы и обновление поля «Возможность»

Мое название для этого поста может быть немного запутанным, но я постараюсь сделать его максимально ясным. У меня возникла проблема с триггером Apex. У нас есть настраиваемый объект под названием «Дебиторская задолженность (управляемый пакет)». Каждая возможность связана с одной или несколькими дебиторскими записями. Master Detailed Relationship не является опцией, так как объект Receivable управляется упакованным.

Вот моя логика:

Создать триггер для возможной сделки (вставить и/или обновить) > Зациклить всю дебиторскую задолженность, идентификатор которой совпадает с идентификатором сработавшей возможности и идентификатором поля возможности получения (это поле поиска возможности в разделе Дебиторская задолженность) > Используйте агрегированный для суммирования суммы > Автоматическое заполнение поля "Общая комиссия".

Триггер не выдает никаких ошибок, но он также не заполняется автоматически.

trigger newRecaivables on Opportunity (after insert, after update) 
{
    set<Id> oppid = new set<id>();

    list<opportunity> opplist = [select id  from opportunity where id in : oppid ];

    for(Opportunity Opp : trigger.new)
    {
        List<aggregateResult> results = [select Fees_Received_Category__c ,sum(McaApp__Amount__c) total from McaApp__Receivable__c Where McaApp__Opportunity__c in:oppid  group by Fees_Received_Category__c];

        for(AggregateResult ar : results)
        {
            if (String.valueOf(ar.get('Fees_Received_Category__c'))=='Received')
            {
                Opp.Total_Commission__c = String.valueOf(ar.get('total'));
            }
        }
    }
}

Любая помощь будет оценена по достоинству.


person Burak Yurttas    schedule 07.03.2017    source источник
comment
oppid пусто. Вы не добавляете к нему значения и не запрашиваете, используя этот набор.   -  person Reshma    schedule 08.03.2017
comment
Привет Решма, Спасибо за подсказку. Я смог заставить его работать.   -  person Burak Yurttas    schedule 10.03.2017
comment
Старайтесь избегать SOQL внутри цикла for   -  person Reshma    schedule 10.03.2017


Ответы (1)


Ваш триггер должен сработать before insert, before update.

Поскольку вы работаете с перечислением trigger.new, оно установит правильное значение при первом создании или отдельном обновлении объекта.

person X3074861X    schedule 07.03.2017
comment
Спасибо за предложение, но оно по-прежнему не заполняет поле Total_Commission в Opportunity. - person Burak Yurttas; 08.03.2017