You need to sign in to do that
Don't have an account?
Team Works
Bulkified Trigger to on child object to check the values and then update
Hello All,
I have to wite a Trigger on a Object Override which has a lookup to Contract Object. When a new override is created it should check all the override already existing on the contract and make them inactive. The one which is created latest should be active...
Any help is appreciated.
Many Thanks!
I have to wite a Trigger on a Object Override which has a lookup to Contract Object. When a new override is created it should check all the override already existing on the contract and make them inactive. The one which is created latest should be active...
Any help is appreciated.
Many Thanks!
for each object override in trigger.new {
create a map of contract id to a list of corresponding child Object Override records (say it map1 = new map<Id, List<ObjectOverride>>);
create a list of all Object Override record ids in trigger.new(say it list1= new list<id>);
}
list<object override> list2 = [get all the Object Override records where contract id in map1.keyset() and object override id not in list1];
for each object override in list2{
deactivate objec override
}
update list2
2) Get the Ids of all Parent Contacts in a set
3) Query for all existing ObjectOverrides with that parent and are currently active ([SELECT Active FROM ObjectOverride WHERE Active = true AND Contract__c IN :contractIds])
4) Loop over those existing overrides and set Active to false
5) Update those existing overrides
Many Thanks
trigger Override_Inactive on Override__c (before insert) {
// Whenever a new record is created for override, this trigger looks at the value of status field of all the override records(for a contract) and turns the status to Inactive so that only the newly created override record is an Active one.
Set<Id> contIds = new Set<Id>();
List<contract> parentContract = new List<contract>();
List<override__c> overrideToUpdate = new List<override__c>();
for (Override__c o : trigger.new){
if (o.Contract__c != null)
contIds.add(o.Contract__c);
}
//system.debug('This is the override records >>>>> ' + contIds);
parentContract = [select Id,(Select Id, Status__c from contract.Overrides__r )from contract where Id IN :contIds];
for(Contract contr :parentContract){
for(override__c oride: contr.overrides__r){
//system.debug('This is the override records >>>>> ' + oride.Status__c);
if(oride.Status__c != 'Inactive' && oride != null){
oride.Status__c = 'Inactive';
overrideToUpdate.add(oride);
}
}
}
If(overrideToUpdate.size() > 0)
update overrideToUpdate;
}
I now want to upload this code to Production. How can i put the Test class for this. Please suggest. Any suggestion on the above trigger code is appreciated.
Many Thanks for help.