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
Khalid mnKhalid mn 

Code is note Working on New Opportunity

Hi Community, 
I have a Trigger..
The logic is fetch Business Market's Field for Opportunity . when i update Business Market field them also Update Opportunity Fields. Opportunity is Lookup to Business Market.
and Also  i want that when i create any new Opportunity by selecting Business  Market field on opportunity then fetch Business Market fields also 
Code is below...

 
trigger BusinessMarketTrigger on Business_Market__c (after Update, before Insert) {
    if((Trigger.isAfter && Trigger.isUpdate) || (Trigger.isBefore && Trigger.isInsert)){
        BusinessMarketTriggerHandler.updateOwner(Trigger.new);
    }
}
 
public class BusinessMarketTriggerHandler {
    public static void updateOwner(List<Business_Market__c> bsnsList){
        List<Opportunity> oppIds = [SELECT OwnerId,Business_Market__c,Account_Dircetor__c,Advisory_Lead__c 
                                    ,Business_Market__r.Business_Lead__r.Name,Business_Market__r.Delivery_Lead__r.Name,
                                    Business_Market__r.Sr_Delivery_Lead__r.Name,Business_Market__r.Advisory_Lead__r.Name,
                                    Business_Market__r.Account_Dircetor__r.Name
                                    FROM Opportunity 
                                    WHERE Business_Market__c IN : Trigger.newMap.KeySet()];
        List<Opportunity> oppList = New List<Opportunity>();   
        for(Opportunity opp : oppIds){
            if(opp.Business_Market__c !=Null){
                opp.OwnerId = opp.Business_Market__r.Business_Lead__c;
                opp.Account_Dircetor__c = opp.Business_Market__r.Account_Dircetor__r.Name;
                opp.Advisory_Lead__c = opp.Business_Market__r.Advisory_Lead__r.Name;
                opp.Sr_Delivery_Lead__c = opp.Business_Market__r.Sr_Delivery_Lead__r.Name;
                opp.Delivery_Lead__c = opp.Business_Market__r.Delivery_Lead__r.Name;
                oppList.add(opp);
                
            }
        }
        update oppList;
    }
}

Thank You In Advance
AnkaiahAnkaiah (Salesforce Developers) 
Hi Kalid, 

You need to write trigger on Opportunity. Please try with below code.

trigger: 
trigger BusinessMarketTrigger on Opportunity(after Update) {
Set<id> bmIds = new set<id>();
    if(Trigger.isAfter && Trigger.isUpdate){

for(opportunity opp:trigger.new){
if(opp.Business_Market__c!=Null){
   bmIds.add(opp.Business_Market__c);
}
}
   
    }

if(bmids.size()>0){
BusinessMarketTriggerHandler.updateOwner(bmids);
}
}
Apex class:
 
public class BusinessMarketTriggerHandler {
    public static void updateOwner(set<id> bsnsids){
        List<Opportunity> oppIds = [SELECT OwnerId,Business_Market__c,Account_Dircetor__c,Advisory_Lead__c 
                                    ,Business_Market__r.Business_Lead__r.Name,Business_Market__r.Delivery_Lead__r.Name,
                                    Business_Market__r.Sr_Delivery_Lead__r.Name,Business_Market__r.Advisory_Lead__r.Name,
                                    Business_Market__r.Account_Dircetor__r.Name
                                    FROM Opportunity 
                                    WHERE Business_Market__c IN : bsnsids];

        List<Opportunity> oppList = New List<Opportunity>();   
        for(Opportunity opp : oppIds){
            if(opp.Business_Market__c !=Null){
                opp.OwnerId = opp.Business_Market__r.Business_Lead__c;
                opp.Account_Dircetor__c = opp.Business_Market__r.Account_Dircetor__r.Name;
                opp.Advisory_Lead__c = opp.Business_Market__r.Advisory_Lead__r.Name;
                opp.Sr_Delivery_Lead__c = opp.Business_Market__r.Sr_Delivery_Lead__r.Name;
                opp.Delivery_Lead__c = opp.Business_Market__r.Delivery_Lead__r.Name;
                oppList.add(opp);
                
            }
        }
        update oppList;
    }
}
If this helps, Please  mark it as best answer.

Regards,
Ankaiah