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
uday uday chavanuday uday chavan 

hello i created trigger handler for creating record in another object by opp multipicklist data but it is creating one record two times

public class OpportunityHandler {
    
    public void updateTextField(list<Opportunity> opps){
        for(Opportunity op:opps){
        String multipick = op.Contract_Type__c;
        String[] arr = multipick.split(';');
        if(multipick != null){
            op.Active_Contract_Type__c = arr[0];
            op.Contract_Types__c = multipick.replace(';',',');
        }
    }
    }
    
    public void newContract(list<Opportunity> opp){
        list<ContractOpp__c> con = new list<ContractOpp__c>();
        for(Opportunity opt:opp){
            String multip = opt.Contract_Type__c;
            String[] arr = multip.split(';');
            for(integer i=0; i<arr.size();i++){
                ContractOpp__c ct = new ContractOpp__c();
                ct.Name = arr[i];
                ct.Opportunity__c = opt.Id;
                con.add(ct);
            }
        }
        insert con;
    } 
}

Trigger

trigger opportunitypicklist on Opportunity (before insert,before update,after insert) {    
    OpportunityHandler obj = new OpportunityHandler();
    if(Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)){
        obj.updateTextField(Trigger.new);
    }
    else if(Trigger.isAfter && Trigger.isInsert){
        obj.newContract(Trigger.new);
    }
}
AbhinavAbhinav (Salesforce Developers) 
both ContractOpp__c having same name??
uday uday chavanuday uday chavan
No it is multi select picklist so name is split and Store in arrays