You need to sign in to do that
Don't have an account?
Trigger Help-- Exception: Too many script statements
I'm new and learning Apex. I'm having an issue with a trigger I wrote. It hits the script statements govenor and causes the error "System.LimitException: Too many script statements: 200001". It works with single updates. The error was caused when I tested it by updating 2,000 opportunity records and started after 937 were succesfully updated.
There are three revenue fields on Opportunity (Monthly, Prorated, Membership). When an opportunity is updated, the trigger searchs through its products and determines which field the revenue belongs to using the product description.
trigger Test2 on Opportunity (before insert, before update) { // CREATE PRODUCT LIST FOR THE OPPORTUNITIES List<OpportunityLineItem> prodList = [select ID, OpportunityId, Description, TotalPrice from OpportunityLineItem where OpportunityId in: Trigger.new]; // DEFINE STRINGS USED TO DETERMINE TYPE OF PRODUCT String Prorated = 'Prorated'; String Membership = 'Membership'; // LOOP THROUGH OPPORTUNITIES, RESET 3 REVENUE FIELDS TO 0 for(Opportunity a : Trigger.new){ a.Prorated_Total__c = 0; a.Membership_Total__c = 0; a.Monthly_Total__c = 0; // LOOP THROUGH PRODUCT LIST TO GET REVENUE TYPE AND TOTAL FOR CURRENT OPPORTUNITY for(OpportunityLineItem b : prodList){ // MAKE SURE PRODUCTS BELONG TO CURRENT OPPORTUNITY if(a.Id == b.OpportunityId){ // DETERMINES PRODUCT TYPE FROM DESCRIPTION AND ADDS PRICE TO THE CORRESPONDING FIELD ON THE CURRENT OPPORTUNITY if(b.Description.contains(Prorated)){ a.Prorated_Total__c += b.TotalPrice; }else if(b.Description.contains (Membership)){ a.Membership_Total__c += b.TotalPrice; }else{ a.Monthly_Total__c += b.TotalPrice; } } } } }
After looking up the error, I'm sure the issue is with the nested loop. Everything else I tried failed and I'm struggling. Any help is appreciated, thanks.
Hi Syric,
I see that you are trying to do a roll up summary.
Why not using the builtin roll up summary function?
-Hengky-
All Answers
Hi Syric,
I see that you are trying to do a roll up summary.
Why not using the builtin roll up summary function?
-Hengky-
Because I did not know that was an option or that it existed. Once again I was making things harder than they should be. Thank you so much.