2016-03-16 1 views
0

поле для количества мероприятий для каждого контакта, независимо от типа или статуса. Полное описание: Требование состоит в том, чтобы иметь возможность создавать отчеты на основе контактов или учетной записи или возможностей и просматривать поле «Сводка» для общего количества мероприятий, связанных с контактами, учетными записями или возможностями. Обратите внимание, что мы не хотим видеть строку для каждого действия, мы хотим видеть одну строку для каждого контакта или opp или учетной записи с подсчетом сводки активности. Примечание: Оригинальный запрос также включал в себя возможность подсчета уникальной активности в отчетахтриггер по контакту для подсчета истории событий, а также обновлен на счетном объекте и объекте

ответ

0

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

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; 
Смежные вопросы