You need to sign in to do that
Don't have an account?
Samuel JohnsonCBE
counting opp and update account field
I am tyring to build a process that will count the number of opportunities in a particular stage and based upon results will determine with picklist value on the account page will have. Example
Opportunity Status is set to Status 1. update Opportunity 2 to a higher status, it would change the account picklist value. If that same opportunity were to be lost it would then lower the account field. Then if the 1st opportunity also loses it would then change the account picklist field again. Basisally which ever has the highest opportunity status between creating opportunity, higher statuses or lost would determine with value it is.
Any thoughts.
Opportunity Status is set to Status 1. update Opportunity 2 to a higher status, it would change the account picklist value. If that same opportunity were to be lost it would then lower the account field. Then if the 1st opportunity also loses it would then change the account picklist field again. Basisally which ever has the highest opportunity status between creating opportunity, higher statuses or lost would determine with value it is.
Any thoughts.
I suppose you want to count opportunities which are open or won and not lost. You have given another scenario that if you change the opp 2 status to a higher value it shoud increase the count. It is a bit contradictory.
However This can be done with process builder as well as apex trigger.
Process Builder/ Trigger- create count and status fields on account. Whenever opp is created or updated (status) with account check if the status on account is null then put opp status. Check if status on account is higher than the created/updated opp then don't update the status if lower then update the status. Accordingly increase the count.
If you just want to count the opportunities of certain stage then create the same number of fields on account as opportunity stage.
Now create a process builder or write a trigger. you can check the prior value of status and the currecnt value of status.
say you have 3 status open, abandon and closed. If prior value was open reduce 1 count fropm open in account, if current value is closed add 1 in closed opp count.
Please let me know if it clarifies.
Thanks!
NRD
In this case you can go with After trigger and that should work.
Please let me if you have any doubt..
Thanks!
NRD
Please follow the below link-
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_trigger.htm
Thanks!
Neelesh
trigger updateAccount on Opportunity(after insert, after update) {
// account set
set <account> oppAccountSet = new set <account>();
list <account> oppAccountList = new list <account>();
list <account> accToUpdate = new list <account>();
for (opportunity opp :Trigger.new){
// add linked account in account list
oppAccountSet.add(opp.account);
}
//oppAccountList write a querry to fetch all accounts whose id in oppAccountList
oppAccountList = (select id, name,status from account where id in : oppAccountSet); // say account has status and countOpen (to count open opportunity) fields and is null
// create loop to check the condition
for(opportunity opp :Trigger.new){
for(account acc : oppAccountList){
if(opp.account=acc.id && (acc.status==null || acc.status=='')){
acc.status=opp.status;
countOpen=countOpen+1;
oppAccountList.add(acc);
} else if(opp.account=acc.id && acc.status!=null && opp.status!=acc.status && opp.status=="Open" && acc.status!="open"){
acc.status=opp.status;
oppAccountList.add(acc);
countOpen=countOpen+1;
}// put more similar condition if required
}
}
if(oppAccountList.size>0){
update oppAccountList;
}
}
Hope it helps.
Please mark the answer as best if it helps you.
Thanks!
NRD