You need to sign in to do that
Don't have an account?
domdick
Help on OLI Trigger???
Hello,
I am trying to right a trigger to if ServiceDate (from OpportunityLineItem object) change then count ScheduleDate from OpportunityLineItemSchedule object and upate the results on custom field 'RevenueSchedule__c' on OLI standard object.
the code may not proper to use. can someone help to get it right please?
Many Thanks,
trigger revenueUpdate on OpportunityLineItem (after insert, after update) { //List<Id> OLIIds = New List<Id>(); public Double res {get; set;} List<OpportunityLineItem>updateField = new List<OpportunityLineItem>(); Set<Id> pbeIds = new Set<Id>(); for (OpportunityLineItem oli : Trigger.new) { OpportunityLineItem oldOLI = Trigger.oldMap.get(oli.Id); if(oli.ServiceDate != oldOLI.ServiceDate){ pbeIds.add(oldOLI.Id); } } LIST<AggregateResult> groupedResults = [Select count(ScheduleDate)OLIsch FROM OpportunityLineItemSchedule where OpportunityLineItemId In: pbeIds ];//Group by OpportunityLineItemId]; LIST<OpportunityLineItem> Opls = [Select RevenueSchedule__c from OpportunityLineItem where Id In: pbeIds]; Map<id, OpportunityLineItem> OLINum = new Map<id, OpportunityLineItem>(); for (OpportunityLineItem oli : Trigger.new){ OLINum.put(oli.Id,oli); } for(Integer i=0; i<groupedResults.size(); i++){ Object numberof = groupedResults[i].get('OLIsch'); //updateField.RevenueSchedule__c = groupedResults[i].get('OLIsch'); res =Double.ValueOf(groupedResults[i].get('OLIsch')); } //update updateField; Opls.RevenueSchedule__c = res; }
all i can say rite now is you are trying to call an update on the object which initially fired the trigger. Recursive calling is what you are trying . please use a static counter as 1 and update statement in the end to succeed.
Didnt got time to look at the code but you need to write update statement in the end to update the changes.