function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Harshi_PandeyHarshi_Pandey 

Update Lookup field of a custom object with trigger 'after insert'

Hello All,

I have a custom object SoldProducts__c which is related to its parent object SalesStock_Items__c as a lookup relationship.
I want to update the lookup field 
'SalesStock_Item__c' present in SoldProducts__c custom object with the SalesStock_Items__c  Item Names i.e., the auto numbers generated like - 'SS-001, SS-002 ' in SalesStock_Items__c parent object whenever a new record is inserted in the SoldProducts__c child object.

User-added image

I tried the below trigger code:
trigger SoldProduct on SoldProducts__c (after insert) 	
	{  
		Map<String,Id> soldp = new Map<String,Id>();
		for(SoldProducts__c s : [Select Id, Items__c from SoldProducts__c where Id  IN :trigger.new])
   			{
  				soldp.put(s.Items__c ,s.Id);
  			}
        
   		SalesStock_Items__c sprod = [Select Id, Name from SalesStock_Items__c where Name IN:soldp.keyset()];
   		for(SoldProducts__c  opp: Trigger.new)
    		{     
        		opp.SalesStock_Item__c = sprod.Id ;  
            }
}
But I am getting the below error :
User-added imageCan anyone please help me how i can proceed in this case? 
 
Best Answer chosen by Harshi_Pandey
CharuDuttCharuDutt
Hii Harshi Pandey
Try Below Trigger
trigger SoldProduct on SoldProducts__c (Before insert)
      string ItemName;
      string SalesStockItems;
 if(trigger.IsInsert && trigger.IsBefore){
for( 	SoldProducts__c  sp:Trigger.new){
          ItemName = sp.Items__c;
}}


    for(SalesStock_Items__c ssi =  [Select Id, Name from SalesStock_Items__c where Name like :ItemName]){
   SalesStockItems = ssi.id;
}
   		for(SoldProducts__c  opp: Trigger.new)
    		{     
        		opp.SalesStock_Item__c = SalesStockItems ;  
            }
}
Please Mark it As best Answer If It Helps
Thank You!

All Answers

Harshi_PandeyHarshi_Pandey
Just to mention one more thing. I have Items__c field in SoldProducts__c object where I have populated the required Name e.g. SS-0001 as a string that needs to be updated in the lookup field.
CharuDuttCharuDutt
Hii Harshi Pandey
Try Below Trigger
trigger SoldProduct on SoldProducts__c (Before insert)
      string ItemName;
      string SalesStockItems;
 if(trigger.IsInsert && trigger.IsBefore){
for( 	SoldProducts__c  sp:Trigger.new){
          ItemName = sp.Items__c;
}}


    for(SalesStock_Items__c ssi =  [Select Id, Name from SalesStock_Items__c where Name like :ItemName]){
   SalesStockItems = ssi.id;
}
   		for(SoldProducts__c  opp: Trigger.new)
    		{     
        		opp.SalesStock_Item__c = SalesStockItems ;  
            }
}
Please Mark it As best Answer If It Helps
Thank You!
This was selected as the best answer
Harshi_PandeyHarshi_Pandey
Thanks CharuDutt! That's exactly what i wanted.