You need to sign in to do that
Don't have an account?
DEV-SFDC
Help on Trigger for update in relatedlist
Hi,
I have a account say TEST :-
TEST account has several opportunities in its related list i.e both DIRECT and INDIRECT.
and opportunity are of 2 types direct and indirect based on checkbox i.e if the checkbox indirect_c is checked then its an indirect opportunities.
So,
I want ..If the account owner
has an existing opportunity of his own and it’s marked closed/won then all the Indirect
opportunity stage related to account TEST should change to as closed/lost with a reason of “won by current
channel”
Have you got some code you are having problems with, or are you just posting your requirements?
Thnaks BOB for your quick Reply
I have tried to write a trigger and my code is :-
trigger Updatestageoppty on Opportunity (before insert,before update) {
list<string>accountids=new list<string>(); List<Account> parentAccounts = new List<Account>(); for(Opportunity opp:trigger.new){ accountids.add(opp.Accountid); } Map<String,Account> accountMap = new Map<String,Account>([Select Id, OwnerId from Account where Id in :accountIds]);
for(Opportunity opp1:trigger.new){
if(opp1.StageName=='Closed Won'){ system.debug('TEStJaya'+accountMap); if(accountMap.containskey(opp1.Accountid) && opp1.Indirect_opportunity__c == true) {
opp1.StageName ='Closed Lost'; } } }
}
Can you repost your code using the code format - the clipboard with a 'c' in the toolbar?
Also, what problems are you hitting with your code?
I can update only 1 opportunity of which i'm the owner, where as i also need to change the status of all indirect opportunity related to a that account once the account owner changes the status of his opportunity as closed won
Step 1: For this Change the Event to after i.e. after insert and after update
Step 2 : Instead of Iterating trigger.new list in the for loop, Iterate accountMap .values()
Because, here you not only needed to update the newly inserted records but also the existing records
Step 3 : Update the records
How do I do this?
Been struggling from 2 days, Can you please help me writting a code as i'm new to Apex
Thanks in advance for help.
Hi u can try following trigger.
trigger UpdateAccownerTOoppOwner on Opportunity (after insert,after update) {
list<string>accountids=new list<string>();
List<Opportunity> Updateopty = new List<Opportunity>();
for(Opportunity opp:trigger.new){
accountids.add(opp.Accountid);
}
for(Account acc:[select id,name,(select name,id from opportunities) from account where id IN:accountids]){
Integer iCount =0;
for(Opportunity opty:acc.opportunities){
if(opty.StageName=='Closed Won')
iCount++;
}
if(ICount > 0){
for(Opportunity opty:acc.opportunities){
if(opty.indirectcheckbox)//insert your exact field name for your checkbox
{
opty.StageName ='Closed Lost';
opty.reason= 'won by current channel'//check for your field reason
Updateopty.add(opty);
}
}
}
}
update Updateopty;
}
mark this as answer if this helps :-)
__Yoganand gadekar.
Thanks yoganand for your help.
I'm Getting some error while saving the trigger.
Error: Compile Error: expecting a semi-colon, found 'Updateopty.add' at line 19 column 7
I.e
Updateopty.add(opty);
need to put semicolon as below
opty.StageName ='Closed Lost';
opty.reason= 'won by current channel' ; //check for your field reason
Updateopty.add(opty);
}
mark this as answer if it works now
Error:Apex trigger UpdateOpptIndirect caused an unexpected exception, contact your administrator: UpdateOpptIndirect: execution of AfterUpdate caused by: System.EmailException: SendEmail failed. First exception on row 0; first error: INVALID_FIELD_WHEN_USING_TEMPLATE, When a template is specified the plain text body, html body, subject and charset may not be specified : []: Class.AP_OpportunityUpdate.NotifyOpportunityOwner: line 74, column 1
CLASS :-
Trigger :-
i have written a class which i'm calling through trigger .
I have a account say TEST :-
TEST account has several opportunities in its related list i.e both DIRECT and INDIRECT.
and opportunity are of 2 types direct and indirect based on checkbox i.e if the checkbox indirect_c is checked then its an indirect opportunities.
So,
I want ..If the account owner has an existing opportunity of his own and it’s marked closed/won then all the Indirect opportunity stage related to account TEST should change to as closed/lost with a reason of “won by current channel”