Триггер по контакту для подсчета истории действий, а также обновленный на Учетной записи и объекте возможности

Поле для количества действий для каждого контакта, независимо от типа или статуса. Полная информация. Требуется иметь возможность создавать отчеты на основе контактов или учетной записи или возможностей и видеть поле "Сводка" для общего количества операций, связанных с контактами, учетными записями или возможностями. Обратите внимание, что мы не хотим видеть строку для каждого действия, мы хотим видеть одну строку для каждого контакта или пользователя или учетной записи с итоговым счетом активности. Примечание. Исходный запрос также включал возможность уникального подсчета активности в отчетах.

1 ответ

Я не проверял этот код, но вы могли бы сделать что-то подобное для вставки (вам также нужно будет покрыть обновления и удаления). В этом примере NumberOfActivites__c - это ваше настраиваемое поле "Количество задач" для объекта "Контакт":

Map<Id,Integer> countMap = new Map<Id,Integer>();
List<Contact> contactList = new List<Contact>();

for (Task t : trigger.new){
    //get id's of all contacts affected by the batch
    Id w = t.whoId;
    if (w.getSObjectType().getDescribe().getName() == 'Contact'){
        //since there could be more than one task related to a contact 
        //in a batch, you would have to count them
        if (countMap.keyset().containts(w)){
            countMap.get(w) += 1;
        } else {
            countMap.put(w,1);
        }
    }
}

//get list of contacts to be updated
contactList = [Select Id, NumberOfActivities__c
               From Contact
               Where Id In :countMap.keyset()];

//modify contacts in list with new count
for (Contact c : contactList){
    c.NumberOfActivites__c = c.NumberOfActivites__c + countMap.get(c.Id));
}

//do the update
update contactList;
Другие вопросы по тегам