You need to sign in to do that
Don't have an account?
madhu_ra
Field Value is Giving null in Before Update Trigger
Hi All,
I'm writing a 'before update' trigger on Opportunity. There I'm reffering for 'FiscalYear' and 'FiscalQuarter' which are basically will change when the 'Close Date' is changed. I could able to track the Close Date change correctly, but those two fields are giving 'null' values in the trigger context. Below is my code snippet for this.
if(Trigger.isBefore) { List<Opportunity> updatedOppList = [SELECT id, name,CurrencyIsoCode,Probability,ScheduledRevenue__c,FiscalQuarter,FiscalYear,CloseDate,StageName FROM Opportunity WHERE Id IN : Trigger.newMap.keySet()]; Integer currentFiscalYear,currentQuarter; for(Opportunity o : updatedOppList) { Opportunity newOpp = Trigger.newMap.get(o.Id); Opportunity oldOpp = Trigger.oldMap.get(o.Id); if(newOpp.CloseDate != oldOpp.CloseDate) { currentFiscalYear = newOpp.FiscalYear; currentQuarter = newOpp.FiscalQuarter; //More Stuffs } } }
I tried with o.FiscalYear and o.FiscalQuarter, but then it's giving older values of those fields even I have retrieved them with Trigger.newMap.keyset(). Please advice me where am doing the mistake.
Thanks
Madhura
Hi madhura,
Try to use After update trigger with following code.
Important :
Hit Kudos if this provides you with useful information and if this is what you where looking for then please mark it as a solution for other benefits.
Thank You,
Hitesh Patel
SFDC Certified Developer & Administrator
Hi do like this
Thanks for the reply hitesh90,
I don't like to use after update trigger here since inside the trigger I have to update a field of the opportunity. So if I use after update trigger it may land up with unwanted trigger firing as well as causing govner limits. Any trick appreciate.
Thanks,
Madhura
Actually I'm retrieving two child objects as well in the first query eventhough I haven't posted it. So I can't iterate through trigger.newMap.values() since I need that parent child relation for the logics.
Query inside a map, and iterate over the map.
Hi madhura,
For that you have to use static variable to handle the recursive trigger call.
see below Link:
Controlling Recursive Triggers
Thank You,
Hitesh Patel
SFDC Certified Developer & Administrator
Actually what I had is an 'after update' trigger and with the static field for control the recursive trigger firing. Now since we are having number of triggers on same object we thought to refactor the triggers based on govner limits, efficiency, etc. That's why I looked for a help from the community to check whether I'm missing something here.
I tried all options with 'before update' trigger but seems like some fields are not get populating in the 'before' context. I reverted back to 'after update' trigger with the comtroller static flag.
Thanks all for the kind responses.
Madhura