You need to sign in to do that
Don't have an account?
sivapriyaa maniam sivakumar
Apex Trigger : CPU Time Limit exceed
Hi,
I am getting an error as CPU Time Limit Exceed.
Trigger Code : Its Update a Distributor Value from Account To Quote,QuoteLineItem & OpportunityLineItem Based on Product or Service.
Please suggest a solution.
Thanks
Sivapriyaa M S
I am getting an error as CPU Time Limit Exceed.
Trigger Code : Its Update a Distributor Value from Account To Quote,QuoteLineItem & OpportunityLineItem Based on Product or Service.
trigger DistributorDiscountChangeTrigger on Account (after update) { System.debug('Trigger Entered'); Map<Id, Account> accByIds = new Map<Id, Account>(); Map<Id, Account> accsByIds = new Map<Id, Account>(); for ( Account acc: Trigger.NEW) { if ( acc.Distributor_Discount_Service__c != Trigger.oldMap.get(acc.Id).Distributor_Discount_Service__c || acc.Distributor_Discount_Product__c != Trigger.oldMap.get(acc.Id).Distributor_Discount_Product__c ) { accByIds.put( acc.Id, acc); } } if ( !accByIds.isEmpty() ) { Map<Id, Opportunity> oppByIds = new Map<Id,Opportunity>( [ SELECT Id, Distributor__c FROM Opportunity WHERE Distributor__c IN: accByIds.keySet() AND IsClosed = FALSE]); List<OpportunityLineItem> oppProds = [ SELECT Id, Distributor_Discount_Product_HIDDEN__c,Distributor_Discount_Service_HIDDEN__c,Opportunity.Distributor__c, PricebookEntry.Product2.Family, Distributor_Discount_1__c, Opportunity.Distributor__r.Distributor_Discount_Service__c, Opportunity.Distributor__r.Distributor_Discount_Product__c FROM OpportunityLineItem WHERE OpportunityId IN: oppByIds.keySet()]; List<QuoteLineItem> qlis = [ SELECT Id, Distributor_Discount_1__c, Quote.Opportunity.Distributor__c, PricebookEntry.Product2.Family, Quote.Opportunity.Distributor__r.Distributor_Discount_Service__c, Quote.Opportunity.Distributor__r.Distributor_Discount_Product__c FROM QuoteLineItem WHERE Quote.OpportunityId IN: oppByIds.keySet()]; List<Quote> oppqt = [ SELECT Id, Distributor_Service_Discount_Temp__c,Opportunity.Distributor__c,Distributor_Product_Discount_Temp__c,Distributor__c FROM Quote WHERE Quote.OpportunityId IN: oppByIds.keySet()]; for ( Quote qt: oppqt ) { System.debug('Enter For Loop-Quote'); if ( qt.Opportunity.Distributor__c == null ) { qt.Distributor_Product_Discount_Temp__c = 0; qt.Distributor_Service_Discount_Temp__c=0; continue; } if ( qt.Opportunity.Distributor__c != null) { qt.Distributor_Product_Discount_Temp__c = accByIds.get( qt.Opportunity.Distributor__c ).Distributor_Discount_Product__c; qt.Distributor_Service_Discount_Temp__c= accByIds.get( qt.Opportunity.Distributor__c ).Distributor_Discount_Service__c; } } for ( QuoteLineItem qli: qlis ) { if ( qli.Quote.Opportunity.Distributor__c == null ) { qli.Distributor_Discount_1__c = 0; continue; } if ( qli.PricebookEntry.Product2.Family == 'Service') { qli.Distributor_Discount_1__c = accByIds.get(qli.Quote.Opportunity.Distributor__c).Distributor_Discount_Service__c; } else if ( qli.PricebookEntry.Product2.Family != 'Non-Discount' ) { qli.Distributor_Discount_1__c = accByIds.get(qli.Quote.Opportunity.Distributor__c).Distributor_Discount_Product__c; } else { qli.Distributor_Discount_1__c = 0; } } for ( OpportunityLineItem oli: oppProds ) { System.debug('Enter For Loop-OpportunityLineItem'); if ( oli.Opportunity.Distributor__c == null ) { oli.Distributor_Discount_1__c = 0; oli.Distributor_Discount_Product_HIDDEN__c=0; oli.Distributor_Discount_Service_HIDDEN__c=0; continue; } if ( oli.PricebookEntry.Product2.Family == 'Service') { oli.Distributor_Discount_1__c = accByIds.get( oli.Opportunity.Distributor__c ).Distributor_Discount_Service__c; oli.Distributor_Discount_Service_HIDDEN__c=accByIds.get( oli.Opportunity.Distributor__c ).Distributor_Discount_Service__c; } else if ( oli.PricebookEntry.Product2.Family != 'Non-Discount' ) { oli.Distributor_Discount_1__c = accByIds.get( oli.Opportunity.Distributor__c ).Distributor_Discount_Product__c; oli.Distributor_Discount_Product_HIDDEN__c=accByIds.get( oli.Opportunity.Distributor__c ).Distributor_Discount_Product__c; } else { oli.Distributor_Discount_1__c = 0; } } update qlis; update oppqt; update oppProds; } }
Please suggest a solution.
Thanks
Sivapriyaa M S
[1] http://salesforce.stackexchange.com/a/119540/198