You need to sign in to do that
Don't have an account?
Activity Count Trigger not working on Update
I have created an activity count trigger for a custom object based on a few forum posts. I have a few custom objects, process__c, and Process_Step__c. As you might imagine my Proccess__c is made up of 1 or more Process _Step__c.
This trigger works fine for inset and for update only if you are changing the task to meet the criteria (WhatId is a process_Step__c and Status = 'Completed').
It does not however work to decrement the activity count if the task is updated and no longer meets the criteria. I know I dont account for this, I am stuck in how to check for this and how to handle it.
Any help would be greatly appreciated.
trigger UpdateActivityCountForProcessAndSteps on Task (after insert, after update) { List<Process_Step__c> stepUpdateList=new List<Process_Step__c>(); List<Process_Step__c> stepList=[select id, Process__c, Process__r.Activity_Count__c, Activity_Count__c from Process_Step__c]; List<Process__c> processUpdateList=new List<Process__c>(); List<AggregateResult> TasksPerStep = new List<AggregateResult>(); TasksPerStep=[Select count(Id),WhatId, Status From Task Where id=:Trigger.new and What.Type = 'Process_Step__c' and Status = 'Completed' group by WhatId, Status]; for(Integer i=0;i<TasksPerStep.size();i++) { for(Process_Step__c step : stepList) { if(step.id==TasksPerStep[i].get('WhatId')) { step.Activity_Count__c = (Integer)TasksPerStep[i].get('expr0') + step.Activity_Count__c; step.Process__r.Activity_Count__c = (Integer)TasksPerStep[i].get('expr0') + step.Process__r.Activity_Count__c; stepUpdateList.add(step); processUpdateList.add(step.Process__r); } } } update stepUpdateList; update processUpdateList; }
Thanks in advance,
Chris