You need to sign in to do that
Don't have an account?

Need help "Triggers Not Working"
Below two triggers on Event and Task is to update their Subjet into a custom field of an Opportunity based on thier Activity dates.
For Ex: If Event Activity Date < Task Activity Date then Next_Activity__c should be updated with subject of Event and vice versa. But these triggers are failing to update subject when I am trying to delete last task/event. Can any one please test these triggers and help me in knowing my issue.
Note: I have created a custom field called Next_Activity_date__c on Opportunity to update tasks date that got updated.
trigger UpdateOppNextActivtyTrigger on Task (after insert,after update) {
List<Id> idSet = new List<Id>();
for (Task att: Trigger.new) {
if ((att.WhatId + '').startsWith('006')) {
idSet.add(att.WhatId);
}
}
List<RecordType> rtList = [Select Id,Name from RecordType where SObjectType = 'Opportunity'and Name = 'van Wagenen' Limit 1];
List<Opportunity> opptyList = [Select RecordTypeId,Next_Activity__c,Next_Activity_Date__c,Next_Activity_Event_Date__c, (select id,RecordType.Name,Status, subject,ActivityDate from Tasks Where isClosed =false order by ActivityDate ASC)from Opportunity where id in : idSet and recordTypeId = :rtList.get(0).Id ];
List<Opportunity> updateList = new List<Opportunity> ();
if(!opptyList.isEmpty()){
for (opportunity opp: opptyList){
if (!opp.Tasks.isEmpty() &&opp.Tasks.get(0).Subject != null) {
System.debug('Subject on Opportunity before task update:'+opp.Next_Activity__c);
System.debug('Subject on Task before update:'+opp.Tasks.get(0).Subject);
System.debug('Next Activity Date on Opportunity before update:'+opp.Next_Activity_Date__c);
System.debug('Next Activity Date on Task before update:'+opp.Tasks.get(0).ActivityDate);
if (opp.Next_Activity__c != opp.Tasks.get(0).Subject) {
opp.Next_Activity__c = opp.Tasks.get(0).Subject;
opp.Next_Activity_Date__c = opp.Tasks.get(0).ActivityDate;
System.debug('Subject on Opportunity after update:'+opp.Next_Activity__c);
System.debug('Subject on Task after update:'+opp.Tasks.get(0).Subject);
System.debug('Next Activity Date on Opportunity after update:'+opp.Next_Activity_Date__c);
System.debug('Next Activity Date on Task after update:'+opp.Tasks.get(0).ActivityDate);
}
} updateList.add(opp);
}
}
if (!updateList.isEmpty()){
update updateList;
}
}
---------------------------------------------------------------------------------------------------------------------------------------------
trigger UpdateOppEventNextActivityTrigger on Event (after insert,after update,after delete) {
Set<Id> oppIds = new Set<Id>();
List<Event> evts;
if (Trigger.isDelete) {
evts = Trigger.old;
} else {
evts = Trigger.new;
}
for (Event event: evts) {
oppIds.add(event.WhatId);
}
List<RecordType> rtList = [ select Name from RecordType where SObjectType = 'Opportunity' and Name = 'van Wagenen' Limit 1];
System.debug('RtList:'+rtList.Size());
List<Opportunity> oppList = [select RecordTypeId,Next_Activity__c,Next_Activity_Date__c,(select Subject, ActivityDate from Events where isDeleted = false order by ActivityDate asc) from Opportunity where Id IN :oppIds and recordTypeId = :rtList.get(0).Id];
System.debug('Opp List:'+ oppList.size());
System.debug('List Of Events Under Oppty:'+oppList[0].Events.Size());
List<Opportunity> oppToUpdate = new List<Opportunity>();
if (!oppList.isEmpty()) {
for (Opportunity opp: oppList) {
/* System.debug('Opp Events:'+ opp.Events.size());
System.debug('Opp Events Subject:'+ opp.Events.get(0).Subject);
System.debug('Opp Events Activity Date:'+ opp.Events.get(0).ActivityDate);*/
if (!opp.Events.isEmpty() && opp.Events.get(0).Subject != null&&opp.Events.get(0).ActivityDate < opp.Next_Activity_Date__c) {
System.debug('Subject on Opportunity:'+opp.Next_Activity__c);
System.debug('Subject on Events:'+opp.Events.get(0).Subject);
if (opp.Next_Activity__c != opp.Events.get(0).Subject) {
opp.Next_Activity__c = opp.Events.get(0).Subject;
System.debug('Subject on Opportunity:'+opp.Next_Activity__c);
System.debug('Subject on Events:'+opp.Events.get(0).Subject);
}
}
oppToUpdate.add(opp);
}
}
if (!oppToUpdate.isEmpty()) {
update oppToUpdate;
}
}
For Ex: If Event Activity Date < Task Activity Date then Next_Activity__c should be updated with subject of Event and vice versa. But these triggers are failing to update subject when I am trying to delete last task/event. Can any one please test these triggers and help me in knowing my issue.
Note: I have created a custom field called Next_Activity_date__c on Opportunity to update tasks date that got updated.
trigger UpdateOppNextActivtyTrigger on Task (after insert,after update) {
List<Id> idSet = new List<Id>();
for (Task att: Trigger.new) {
if ((att.WhatId + '').startsWith('006')) {
idSet.add(att.WhatId);
}
}
List<RecordType> rtList = [Select Id,Name from RecordType where SObjectType = 'Opportunity'and Name = 'van Wagenen' Limit 1];
List<Opportunity> opptyList = [Select RecordTypeId,Next_Activity__c,Next_Activity_Date__c,Next_Activity_Event_Date__c, (select id,RecordType.Name,Status, subject,ActivityDate from Tasks Where isClosed =false order by ActivityDate ASC)from Opportunity where id in : idSet and recordTypeId = :rtList.get(0).Id ];
List<Opportunity> updateList = new List<Opportunity> ();
if(!opptyList.isEmpty()){
for (opportunity opp: opptyList){
if (!opp.Tasks.isEmpty() &&opp.Tasks.get(0).Subject != null) {
System.debug('Subject on Opportunity before task update:'+opp.Next_Activity__c);
System.debug('Subject on Task before update:'+opp.Tasks.get(0).Subject);
System.debug('Next Activity Date on Opportunity before update:'+opp.Next_Activity_Date__c);
System.debug('Next Activity Date on Task before update:'+opp.Tasks.get(0).ActivityDate);
if (opp.Next_Activity__c != opp.Tasks.get(0).Subject) {
opp.Next_Activity__c = opp.Tasks.get(0).Subject;
opp.Next_Activity_Date__c = opp.Tasks.get(0).ActivityDate;
System.debug('Subject on Opportunity after update:'+opp.Next_Activity__c);
System.debug('Subject on Task after update:'+opp.Tasks.get(0).Subject);
System.debug('Next Activity Date on Opportunity after update:'+opp.Next_Activity_Date__c);
System.debug('Next Activity Date on Task after update:'+opp.Tasks.get(0).ActivityDate);
}
} updateList.add(opp);
}
}
if (!updateList.isEmpty()){
update updateList;
}
}
---------------------------------------------------------------------------------------------------------------------------------------------
trigger UpdateOppEventNextActivityTrigger on Event (after insert,after update,after delete) {
Set<Id> oppIds = new Set<Id>();
List<Event> evts;
if (Trigger.isDelete) {
evts = Trigger.old;
} else {
evts = Trigger.new;
}
for (Event event: evts) {
oppIds.add(event.WhatId);
}
List<RecordType> rtList = [ select Name from RecordType where SObjectType = 'Opportunity' and Name = 'van Wagenen' Limit 1];
System.debug('RtList:'+rtList.Size());
List<Opportunity> oppList = [select RecordTypeId,Next_Activity__c,Next_Activity_Date__c,(select Subject, ActivityDate from Events where isDeleted = false order by ActivityDate asc) from Opportunity where Id IN :oppIds and recordTypeId = :rtList.get(0).Id];
System.debug('Opp List:'+ oppList.size());
System.debug('List Of Events Under Oppty:'+oppList[0].Events.Size());
List<Opportunity> oppToUpdate = new List<Opportunity>();
if (!oppList.isEmpty()) {
for (Opportunity opp: oppList) {
/* System.debug('Opp Events:'+ opp.Events.size());
System.debug('Opp Events Subject:'+ opp.Events.get(0).Subject);
System.debug('Opp Events Activity Date:'+ opp.Events.get(0).ActivityDate);*/
if (!opp.Events.isEmpty() && opp.Events.get(0).Subject != null&&opp.Events.get(0).ActivityDate < opp.Next_Activity_Date__c) {
System.debug('Subject on Opportunity:'+opp.Next_Activity__c);
System.debug('Subject on Events:'+opp.Events.get(0).Subject);
if (opp.Next_Activity__c != opp.Events.get(0).Subject) {
opp.Next_Activity__c = opp.Events.get(0).Subject;
System.debug('Subject on Opportunity:'+opp.Next_Activity__c);
System.debug('Subject on Events:'+opp.Events.get(0).Subject);
}
}
oppToUpdate.add(opp);
}
}
if (!oppToUpdate.isEmpty()) {
update oppToUpdate;
}
}