I am writing a trigger to get all the Opportunity competitors into a field on Opportunity, however, getting an error while testing it.
Error: updateCompetitors: execution of AfterUpdate caused by: System.FinalException: Record is read-only: Trigger.updateCompetitors: line 24
Can you please check the below code and suggest me what's wrong with this?
trigger updateCompetitors on Opportunity(after insert, after update){
List<Opportunity> OppIds = new List<Opportunity>();
for (Opportunity opp: trigger.new){
OppIds.add(opp);
}
List<OpportunityCompetitor> oppComps = new List<OpportunityCompetitor>();
oppComps= [select id, CompetitorName, Strengths, Weaknesses from OpportunityCompetitor where OpportunityId in: Trigger.newMap.keySet()];
List<Opportunity> OppstoUpdate = new List<Opportunity>();
for (Opportunity opp: OppIds){
String allcomps = null;
if( oppComps.size()>0 ) {
for (integer i = 0; i < oppComps.size(); i++){
allcomps = allcomps + oppComps[i].CompetitorName+',';
}
}
opp.OpportunityCompetitors__c = allcomps;
OppstoUpdate.add(opp);
}
update OppstoUpdate;
}