Логіка для before update в тригері ламається, якщо додати в список дій тригера after update

Привіт!
Я новачок в Salesforce і стикнулася з проблемою. Мій тригер і логіка для before update працює, як і вимагалося, і все гуд, поки в список дій я не додаю after update. Тобто логіка для нього в хендлері не прописана, нічого не робиться(поки), просто додається). І на цьому моменті код для before update ламається- коли намагаюся оновити рекорд, отримую помилку “OpportunityTrigger: execution of AfterUpdate caused by: System.FinalException: Record is read-only”.
Мій код для before update з хендлера:

public void beforeUpdate(List newOpportunities){
List<Gift_Card__c> giftCards= [SELECT Id,Amount__c, Name, Active__c FROM Gift_Card__c ];
for (Opportunity opportunityItem: newOpportunities){
Opportunity oldRecordToCheckIfCardChanged= (Opportunity)trigger.oldMap.get(opportunityItem.Id);
if(opportunityItem.Gift_Card__c!=oldRecordToCheckIfCardChanged.Gift_Card__c){
Boolean existsCardNameFlag= false;
for (Gift_Card__c giftCardItem:giftCards){
if(opportunityItem.Gift_Card__c==String.valueOf(giftCardItem.Name)&& opportunityItem.Amount>0){
existsCardNameFlag=true;
if(giftCardItem.Active__c){
opportunityItem.Amount-=giftCardItem.Amount__c;
if(opportunityItem.Amount<0){opportunityItem.Amount=0;}
}
else {opportunityItem.addError(‘This gift card is not active’);}
}
}
if(!existsCardNameFlag){
opportunityItem.addError(‘Gift card number does not exist. Check your data, please’);
}
}
}
}

Помилка вказує на оцей рядок: opportunityItem.Amount-=giftCardItem.Amount__c;
Я не знайшла, як це виправити, чому коли в списку дій є всі три, крім after update- логіка для before update працює чудово, але як тільки додається останній- помилка, яку я зрозуміти не можу, жоден з полів там не рідонлі.

Дякую!