Trigger Dev

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

trigger CalEscalationStatusAge on Account_Escalation__c (After Insert, After Upd ate) { DateTime d = System.

Now(); // Time to calculate the time period of the status DateTime dateT; if(!limitTriggerRun_cls.isFirstRun() ){ // To limit the trigger to f ire just once as there is a workflow field update. If(Trigger.isUpdate){ Set<Id> AESet = New Set<Id>(); Set<Integer> NameSet = New Set<Integer>(); List<Account_Escalation__c> AEList = New List<Account_Escalation__ c>(); For(Account_Escalation__c AE :Trigger.New){ // Only pick ID's of records for which the status has changed if(AE.Escalation_Status__c <> trigger.oldMap.get(AE.id).Escalat ion_Status__c || AE.Status__c == 'Closed'){ AESet.add(AE.Id); AEList.add(AE); } } system.debug('AESET = '+AESET .size()); List<Escalation_Status_Age__c> TempAEList = New List<Escalation_St atus_Age__c>( [Select id, Age_in_Sta tus__c, Current_Phase_Change_Time__c,Escalation_Status__c, Account_Escalation__c From Escalation_Status _Age__c Where Account_Escalati on__c in :AESet ]); system.debug(' TempAEList '+TempAEList.size()); system.debug(' AEList '+AEList.size()); List<Escalation_Status_Age__c> TempAEListInsert = New List<Escalat ion_Status_Age__c>(); List<Escalation_Status_Age__c> TempAEListUpdate = New List<Escalat ion_Status_Age__c>(); If(TempAEList.size() > 0){ For(Account_Escalation__c AEObj : AEList){ If(AEObj.Status_Change_Timestamp__c == null){ dateT = System.Now(); } else dateT = AEObj.Status_Change_Timestamp__c; system.debug('Old Value '+Trigger.oldmap.get(AEObj.id).Esca lation_Status__c); Boolean isRecExists = false; For(Escalation_Status_Age__c TAEObj : TempAEList){ If(AEObj.ID == TAEObj.Account_Escalation__c){ If(Trigger.oldmap.get(AEObj.ID).Escalation_Status__ c == TAEObj.Escalation_Status__c){ system.debug('Loop 1'); isRecExists = true; //decimal ageVar1 = Math.Floor(Math.Floor(decim al.valueof(d.getTime()) - Math.Floor(AEObj.Status_Change_Timestamp__c.getTime()) )/1000); // comment:sk decimal ageVar1 = (decimal.valueo f(d.getTime()) - dateT.getTime())/(60 * 60 * 24 * 1000);

decimal ageVar1 = (decimal.valueof(d.getTime()) - dateT.getTime())/1000; if(TAEObj.Age_in_Status__c == null) TAEObj.Age_in_Status__c = ageVar1; else TAEObj.Age_in_Status__c = TAEObj.Age_in_Status_ _c + ageVar1; TAEObj.Current_Phase_Change_Time__c = null; TempAEListUpdate.add(TAEObj); break; } } } if(!isRecExists) { system.debug('phase is not same so insert'); Escalation_Status_Age__c NewTempObj = new Escalation_S tatus_Age__c(); NewTempObj.Account_Escalation__c = AEObj.id; NewTempObj.Escalation_Status__c = Trigger.oldmap.get(A EObj.id).Escalation_Status__c; //Decimal ageVar2 = Math.Floor(Math.Floor(decimal.valu eof(d.getTime()) - Math.Floor(AEObj.Status_Change_Timestamp__c.getTime()))/1000) ; // comment: sk decimal ageVar2 = (decimal.valueof(d.ge tTime()) - dateT.getTime())/(60 * 60 * 24 * 1000); decimal ageVar2 = (decimal.valueof(d.getTime()) - dat eT.getTime())/1000; NewTempObj.Age_in_Status__c = ageVar2; NewTempObj.Current_Phase_Change_Time__c = null; TempAEListInsert.add(NewTempObj); system.debug('NewTempObj '+NewTempObj); } } } else { for(Account_Escalation__c AEObj1 : AEList){ If(AEObj1.Status_Change_Timestamp__c == null){ dateT = System.Now(); } else dateT = AEObj1.Status_Change_Timestamp__c; system.debug('Old Value '+Trigger.oldmap.get(AEObj1.id).Esc alation_Status__c); Escalation_Status_Age__c TAEObj1 = new Escalation_Status_Ag e__c(); TAEObj1.Account_Escalation__c = AEObj1.id; //Decimal ageVar3 = Math.Floor(Math.Floor(decimal.valueof(d .getTime()) - Math.Floor(AEObj1.Status_Change_Timestamp__c.getTime()))/1000);

//comment:sk decimal ageVar3 = (decimal.valueof(d.getTime()) - dateT.getTime())/(60 * 60 * 24 * 1000); decimal ageVar3 = (decimal.valueof(d.getTime()) - dateT.ge tTime())/1000; TAEObj1.Age_in_Status__c = ageVar3; TAEObj1.Escalation_Status__c = Trigger.oldmap.get(AEObj1.id ).Escalation_Status__c; TAEObj1.Current_Phase_Change_Time__c = null; TempAEListInsert.add(TAEObj1); } } For(Account_Escalation__c AEObj2 : AEList){ Escalation_Status_Age__c TAEObj2 = new Escalation_Status_Age__c( ); TAEObj2.Account_Escalation__c = AEObj2.id; //Decimal ageVar3 = Math.Floor(Math.Floor(decimal.valueof(d.getT ime()) - Math.Floor(AEObj1.Status_Change_Timestamp__c.getTime()))/1000); //decimal ageVar3 = (decimal.valueof(d.getTime()) - dateT.getTi me())/(60 * 60 * 24 * 1000); //TAEObj1.Age_in_Status__c = ageVar3; TAEObj2.Escalation_Status__c = Trigger.newMap.get(AEObj2.id).Esc alation_Status__c; TAEObj2.Current_Phase_Change_Time__c = system.Now(); TempAEListInsert.add(TAEObj2); } if(!TempAEListInsert.isEmpty()) Insert TempAEListInsert; system.debug('TempAEListInsert '+TempAEListInsert.size()); if(!TempAEListUpdate.isEmpty()) update TempAEListUpdate; system.debug('TempAEListUpdate '+TempAEListUpdate.size()); } if(Trigger.isInsert){ system.debug('Is Insert'); //---------------Set<Id> AESet1 = New Set<Id>(); //Set<Integer> NameSet = New Set<Integer>(); AESet1 = Trigger.newMap.keyset(); system.debug(AESet1); List<Account_Escalation__c> AEList1 = New List<Account_Escalation__ c>([Select id, Name, Escalation_Status__c From Account_Escalation__c Where id in:AESet1]); List<Escalation_Status_Age__c> TempAEListInsert1 = New List<Escalat ion_Status_Age__c>(); system.debug(AEList1); For(Account_Escalation__c AEObj1 : AEList1){ /* If(AEObj1.Status_Change_Timestamp__c == null){ dateT = System.Now(); }

else dateT = AEObj1.Status_Change_Timestamp__c; */ Escalation_Status_Age__c TAEObj11 = new Escalation_Status_Age__c (); TAEObj11.Account_Escalation__c = AEObj1.id; TAEObj11.Current_Phase_Change_Time__c = System.Now(); //Decimal ageVar3 = Math.Floor(Math.Floor(decimal.valueof(d.getT ime()) - Math.Floor(AEObj1.Status_Change_Timestamp__c.getTime()))/1000); //decimal ageVar3 = (decimal.valueof(d.getTime()) - dateT.getTi me())/(60 * 60 * 24 * 1000); //TAEObj1.Age_in_Status__c = ageVar3; TAEObj11.Escalation_Status__c = Trigger.newmap.get(AEObj1.id).Es calation_Status__c; TempAEListInsert1.add(TAEObj11); } system.debug(TempAEListInsert1.size()); Insert TempAEListInsert1; //---------------} limitTriggerRun_cls.setFirstRun(); } }

You might also like