You need to sign in to do that
Don't have an account?

Update trigger on account to create opportunity is creating two opportunities.
I am trying to create a trigger to create an opportunity on an account when their "billing state" is == trial. Right now, everytime the account is updated to trial it is creating 2 opportunites. Here is the trigger:
trigger Opportunity_inTrial on Account (before update, after update) {
List<opportunity>Listopp = New List<opportunity>();
for(account acc_old:trigger.old){
if(acc_old.Billing_State__c != 'trial'){
for(account acc:trigger.new){
if(acc.Billing_State__c == 'trial'){
Opportunity opp = New opportunity();
opp.accountid = acc.id;
opp.name=acc.name;
opp.CloseDate=date.Today()+14;
opp.StageName='0 VO Score';
Listopp.add(opp);
}
}
}
}
if(Listopp.size()>0 && Listopp.size()<2)
insert Listopp;
}
trigger Opportunity_inTrial on Account (before update, after update) {
List<opportunity>Listopp = New List<opportunity>();
for(account acc_old:trigger.old){
if(acc_old.Billing_State__c != 'trial'){
for(account acc:trigger.new){
if(acc.Billing_State__c == 'trial'){
Opportunity opp = New opportunity();
opp.accountid = acc.id;
opp.name=acc.name;
opp.CloseDate=date.Today()+14;
opp.StageName='0 VO Score';
Listopp.add(opp);
}
}
}
}
if(Listopp.size()>0 && Listopp.size()<2)
insert Listopp;
}
Your trigger is firing both before and after update of an account, which is causing it to run twice. Take out the after update from line 1 and you should be fine.