You need to sign in to do that
Don't have an account?
uday 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);
}
}
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);
}
}
Abhinav (Salesforce Developers)
both ContractOpp__c having same name??
uday uday chavan
No it is multi select picklist so name is split and Store in arrays