You need to sign in to do that
Don't have an account?
Nichole Smith
Apex Trigger for Sibling Object
I am trying to write a trigger to compare the area code from the lead phone and the Area Code name, pull the Parent Market from the Area Code and populate it on a field in the Lead upon creation. The relationship between the 3 objects are:
Area_Code__c (child Object of Market__c)
Market__c(Custom Object with master-detail to Area_Code)
Lead(Lookup relationship to Market__c called Lead_Market__c)
I created a formula field on the lead object to pull the area code out of the phone number on lead and it is called Area_Code__c.
I have created this Trigger and it saves but and I am not getting any errors but it is not populating the Lead_Market__c field either. According to the debug logs the problem seems to be in the last for loop called LeadNameLoop. Does anyone see anything wrong with this?
Area_Code__c (child Object of Market__c)
Market__c(Custom Object with master-detail to Area_Code)
Lead(Lookup relationship to Market__c called Lead_Market__c)
I created a formula field on the lead object to pull the area code out of the phone number on lead and it is called Area_Code__c.
I have created this Trigger and it saves but and I am not getting any errors but it is not populating the Lead_Market__c field either. According to the debug logs the problem seems to be in the last for loop called LeadNameLoop. Does anyone see anything wrong with this?
Trigger AreaCode on Lead (before insert) { Set <String> InitialLeadName = new Set <String> (); for(Lead LeadNameLoop : trigger.New) { InitialLeadName.add(LeadNameLoop.Area_Code__c); } Map <String, Area_Code__c> matchingAreaCodeMap = new Map <String, Area_Code__c> (); for (Area_Code__c Record : [Select Id, Name, Market__c From Area_Code__c Where Name IN :InitialLeadName]) { matchingAreaCodeMap.put(Record.Market__c, record); } List <Lead> FinalLeadList = new List <Lead> (); for(Lead LeadNameLoop : trigger.New) { if (matchingAreaCodeMap.get(LeadNameLoop.Name) != null) { LeadNameLoop.Lead_Market__c = matchingAreaCodeMap.get(LeadNameLoop.Area_Code__c).Market__c; FinalLeadList.add(LeadNameLoop); } } upsert FinalLeadList; }
All Answers
In before events we don't need to perform DML on the same object.
Remove below lines in your code and check once.
FinalLeadList.add(LeadNameLoop);
upsert FinalLeadList;
List <Lead> FinalLeadList = new List <Lead> ();
Hope this helps you!
Thanks
Varaprasad
@For Support: varaprasad4sfdc@gmail.com