You need to sign in to do that
Don't have an account?
bristolbluebear
CalculateClosedTask Trigger
Hello
I created the following trigger to count how many specific tasks are closed. The only problem is that it doesnt count the tasks that were closed by inactive users, only counts active users. Can anyone help or advise? Appreciation in advance
trigger CalculateClosedTasks on Task (after delete, after insert, after undelete,
after update) {
// Declare the variables
public set<Id> LeadIDs = new Set<Id>();
public list<Lead> LeadsToUpdate = new List<Lead>();
public set<Id> ContactIDs = new Set<Id>();
public list<Contact> ContactsToUpdate = new List<Contact>();
// Build the list of Leads and Contacts to update
if(Trigger.isInsert || Trigger.isUnDelete || Trigger.isUpdate){
for(Task t: Trigger.new){
if(t.WhoId<>null){
if(string.valueOf(t.WhoId).startsWith('00Q')&&t.Contact_Call_Outcome__c==True)
LeadIDs.add(t.WhoId);
if(string.valueOf(t.WhoId).startsWith('003')&&t.Contact_Call_Outcome__c==True)
ContactIDs.add(t.WhoId);
}
}
}
if(Trigger.isDelete || Trigger.isUpdate){
for(Task t: Trigger.old){
if(t.WhoId<>null){
if(string.valueOf(t.WhoId).startsWith('00Q')&&t.Contact_Call_Outcome__c==True)
LeadIDs.add(t.WhoId);
if(string.valueOf(t.WhoId).startsWith('003')&&t.Contact_Call_Outcome__c==True)
ContactIDs.add(t.WhoId);
}
}
}
// Update the Leads
if(LeadIDs.size()>0){
for(Lead l: [Select l.Id, l.Closed_Tasks__c,
(Select Id From Tasks where Contact_Call_Outcome__c = True)
From Lead l where Id in :LeadIDs])
LeadsToUpdate.add(new Lead(Id=l.Id, Closed_Tasks__c = l.Tasks.size()));
update LeadsToUpdate;
}
// Update the Contacts
if(ContactIDs.size()>0){
for(Contact c: [Select c.Id, c.Closed_Tasks__c ,
(Select Id From Tasks where Contact_Call_Outcome__c = True)
From Contact c where Id in :ContactIDs])
ContactsToUpdate.add(new Contact(Id=c.Id, Closed_Tasks__c = c.Tasks.size()));
update ContactsToUpdate;
}
}
I created the following trigger to count how many specific tasks are closed. The only problem is that it doesnt count the tasks that were closed by inactive users, only counts active users. Can anyone help or advise? Appreciation in advance
trigger CalculateClosedTasks on Task (after delete, after insert, after undelete,
after update) {
// Declare the variables
public set<Id> LeadIDs = new Set<Id>();
public list<Lead> LeadsToUpdate = new List<Lead>();
public set<Id> ContactIDs = new Set<Id>();
public list<Contact> ContactsToUpdate = new List<Contact>();
// Build the list of Leads and Contacts to update
if(Trigger.isInsert || Trigger.isUnDelete || Trigger.isUpdate){
for(Task t: Trigger.new){
if(t.WhoId<>null){
if(string.valueOf(t.WhoId).startsWith('00Q')&&t.Contact_Call_Outcome__c==True)
LeadIDs.add(t.WhoId);
if(string.valueOf(t.WhoId).startsWith('003')&&t.Contact_Call_Outcome__c==True)
ContactIDs.add(t.WhoId);
}
}
}
if(Trigger.isDelete || Trigger.isUpdate){
for(Task t: Trigger.old){
if(t.WhoId<>null){
if(string.valueOf(t.WhoId).startsWith('00Q')&&t.Contact_Call_Outcome__c==True)
LeadIDs.add(t.WhoId);
if(string.valueOf(t.WhoId).startsWith('003')&&t.Contact_Call_Outcome__c==True)
ContactIDs.add(t.WhoId);
}
}
}
// Update the Leads
if(LeadIDs.size()>0){
for(Lead l: [Select l.Id, l.Closed_Tasks__c,
(Select Id From Tasks where Contact_Call_Outcome__c = True)
From Lead l where Id in :LeadIDs])
LeadsToUpdate.add(new Lead(Id=l.Id, Closed_Tasks__c = l.Tasks.size()));
update LeadsToUpdate;
}
// Update the Contacts
if(ContactIDs.size()>0){
for(Contact c: [Select c.Id, c.Closed_Tasks__c ,
(Select Id From Tasks where Contact_Call_Outcome__c = True)
From Contact c where Id in :ContactIDs])
ContactsToUpdate.add(new Contact(Id=c.Id, Closed_Tasks__c = c.Tasks.size()));
update ContactsToUpdate;
}
}
bristolbluebear
Can anyone help?