trigger – Error: System.LimitException: Too many SOQL queries: 101
Wrote a Trigger on Account Object to retain Account Team members after account owner is changed.
below is the code :_
trigger AccountTriggerKeepTeam on Account (before update) {
IF (Trigger.isBefore && Trigger.isUpdate){
List<AccountTeamMember> listAcc = [SELECT Id, AccountAccessLevel, AccountId, CaseAccessLevel, UserId, ContactAccessLevel, OpportunityAccessLevel, TeamMemberRole, PhotoUrl, Title FROM AccountTeamMember Where AccountId in : Trigger.new];
List<AccountTeamMember> newlistAcc = new List<AccountTeamMember>();
for(Account acc: Trigger.new){
Account oldAccount = Trigger.oldMap.get(acc.Id);
string oname = acc.Owner.name;
if(acc.OwnerId != oldAccount.OwnerId){
List<user> u=[Select ProfileId FROM User WHERE Id =:acc.ownerID LIMIT 1];
String Profileidd=u[0].ProfileId;
if(acc.recordtypeid == '0121a000000e9s2AAA')
{
if(acc.OwnerId !='0051P0000031A2bQAE'){
//For Lightning - Partner Development Profile
if (Profileidd =='00e1P000000J68eQAC')
{
AccountTeamMember atmPD = new AccountTeamMember(AccountId=acc.Id,TeamMemberRole="Partner Development", UserId= acc.OwnerId);
newlistAcc.add(atmPD);
}
else if (Profileidd =='00e1P000000J68ZQAS') {
AccountTeamMember atmPS = new AccountTeamMember(AccountId=acc.Id,TeamMemberRole="Publisher Sales", UserId= acc.OwnerId);
newlistAcc.add(atmPS);
}
for(AccountTeamMember atm: listAcc){
if (atm.TeamMemberRole =='Partner Development')
{
if (Profileidd !='00e1P000000J68eQAC'){
newlistAcc.add(atm);
}
}
else {
//if (atm.UserId != acc.OwnerId)
System.Debug('No Partner Developer or Publisher sales found Found ATM:' +atm);
newlistAcc.add(atm);}
}
String str = JSON.serialize(newlistAcc);
//delete team member records if required
AccountTriggerKeepTeamHandler.retainOldTeamMemberOnOwnerChange(str);
}
else if(acc.OwnerId =='0051P0000031A2bQAE'){
if(acc.OwnerId != oldAccount.OwnerId){
system.debug('AccountTeamMember records IX sqaure: '+(JSON.serialize(listAcc)));
for(AccountTeamMember atm: listAcc){
if (atm.TeamMemberRole =='Publisher Sales')
{
System.Debug('Publisher Sales found:' +atm);
newlistAcc.add(atm);
}
}
String str = JSON.serialize(newlistAcc);
//delete team member records if required
AccountTriggerKeepTeamHandler.retainOldTeamMemberOnOwnerChange(str);
}
}
}
String str = JSON.serialize(newlistAcc);
AccountTriggerKeepTeamHandler.retainOldTeamMemberOnOwnerChange(str);
}
}
}
}
}
Read more here: Source link