function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sfdeveloper12sfdeveloper12 

Code is hitting governor limit exception

Hello,

trigger UpdateAgreedRate on QuoteLineItem (before insert, before update) {
 system.debug('****************InTrigger**********************');
    
    if(trigger.isBefore && (trigger.isInsert || trigger.isUpdate)){
        String QuoteID ;
        set<id> PIds = new set<id>();

        for (QuoteLineItem childObj : Trigger.new) {
            if(QuoteID == null) {
               QuoteID  = childObj.QuoteID;
            }
            if(childObj.Product2Id != null){
                PIds.add(childObj.Product2Id);
            }
            
        
        system.debug('QuoteID 18 -->'+QuoteID  );
        
            if(QuoteID  != null) {
               
              List<Quote> quotes = [select Id, AccountId, Venue__c, Opportunity.Guest_Name__r.Name from Quote where Id =:QuoteID  ]; 
               if(quotes.size() > 0) {
                   Quote QuoteDetails = quotes[0];
                   
                   system.debug('QuoteDetails 26 -->'+QuoteDetails );
                   
                    for (QuoteLineItem item : Trigger.new) {
                    system.debug('item 29 -->'+item );
                      
                   item.Guest1__c= quotes[0].Opportunity.Guest_Name__r.Name;

                for(Product2 product :[select id, name from Product2 where Id IN : PIds]){
                 system.debug('product 33 -->'+product );


      
 
           
for(Rates_Commissions__c rate: [select id, Name, Product_Item__c, Client_Account__c, Venue_Hotel__c , Agreed_Rate__c, AgreedRes__c from Rates_Commissions__c   where Product_Item__c =: product.id])
    {
    
      system.debug('rate 42 -->'+rate ); 
      if(rate.Product_Item__c == product.id && quotes[0].AccountId == rate.Client_Account__c && quotes[0].Venue__c == rate.Venue_Hotel__c)
                   {          
                       system.debug('ProductId-->'+product.id  );
                       system.debug('RateProductItem-->'+rate.Product_Item__c  );
                       system.debug('QuoteAccId-->'+quotes[0].AccountId  );
                       system.debug('RateAccId-->'+rate.Client_Account__c  );
                       system.debug('QuoteVenueHotel-->'+quotes[0].Venue__c  );
                       system.debug('RateVenueHotel-->'+rate.Venue_Hotel__c  );


              item.PSL_Rate__C =  rate.Agreed_Rate__c ;
              item.Commission_Percentage_PSL__c = rate.AgreedRes__c;
               system.debug('rate.Agreed_Rate__c -->'+ rate.Agreed_Rate__c );
               system.debug(' rate.AgreedRes__c -->'+ rate.AgreedRes__c );


            }
            

    }
              }
             } 
            }
              }             
            } 
            
            
        }        
        
         if(trigger.isBefore && (trigger.isInsert || trigger.isUpdate)){
         for(QuoteLineItem o : Trigger.new)
         {
        if(o.PSL_Rate__C < o.Online_Rate__c)
        {
        o.Recommended_Sales_Price__c=  o.PSL_Rate__C;
        }
        else if(o.Online_Rate__c < o.PSL_Rate__C){
         o.Recommended_Sales_Price__c=  o.Online_Rate__c ;
        }
        else if(o.Online_Rate__c == null || o.Online_Rate__c == 0 ){
         o.Recommended_Sales_Price__c=  o.PSL_Rate__C;
        }
        else if(o.PSL_Rate__C == 0 || o.PSL_Rate__C == null)
        {
         o.Recommended_Sales_Price__c=  o.Online_Rate__c ;
        }
        

        }
        }
    }

My code is hitting governor limit exception. Can anybody help me to resolve this issue

Thanks,
Utkarsha
Devanshu soodDevanshu sood
Hi Utkasrha,
You should not use SOQL Queries in for loop. Nor you should use DML operations like insert, delete, upsert etc. in for loop.
You will have to cahnge your code accordingly.
Thanks
sfdeveloper12sfdeveloper12
Hi,
I changed my code as below. I am able to cover all the list except for(Rates_Commissions__c rate: [select id, Name, Product_Item__c, Client_Account__c, Venue_Hotel__c , Agreed_Rate__c, AgreedRes__c from Rates_Commissions__c where Product_Item__c =: product.id]). Its giving me loop variable must be quotelineitem type. I dont know how to recover this issue

trigger UpdateAgreedRate on QuoteLineItem (before insert, before update) {
 system.debug('****************InTrigger**********************');
    
    if(trigger.isBefore && (trigger.isInsert || trigger.isUpdate)){
        String QuoteID ;
        set<id> PIds = new set<id>();

       for (QuoteLineItem childObj : Trigger.new) {
            if(QuoteID == null) {
               QuoteID  = childObj.QuoteID;
               system.debug('QuoteID 18 -->'+QuoteID  );

            }
            if(childObj.Product2Id != null){
                PIds.add(childObj.Product2Id);
                system.debug('childObj.Product2Id 19 -->'+childObj.Product2Id  );

            }
       }
        
        
         if(QuoteID  != null) {
               
              List<Quote> quotes = [select Id, AccountId, Venue__c, Opportunity.Guest_Name__r.Name from Quote where Id =:QuoteID  ];
             if(quotes.size() > 0) {
               Quote QuoteDetails = quotes[0];
               system.debug('QuoteDetails 266666 -->'+QuoteDetails );
                list<Product2>  product1= [select id, name from Product2 where Id IN : PIds];
                  for (QuoteLineItem item : Trigger.new) {
                    system.debug('item 29 -->'+item );
                      
                   item.Guest1__c= quotes[0].Opportunity.Guest_Name__r.Name;
                   system.debug('item.Guest1__c 33 -->'+item.Guest1__c );
 
          

                for(Product2 product : product1){
                    
                system.debug('product 33 -->'+product );

                

   List<Rates_Commissions__c> rate1 = [select id, Name, Product_Item__c, Client_Account__c, Venue_Hotel__c , Agreed_Rate__c, AgreedRes__c from Rates_Commissions__c   where Product_Item__c =: product.id];
                      // [select id, Name, Product_Item__c, Client_Account__c, Venue_Hotel__c , Agreed_Rate__c, AgreedRes__c from Rates_Commissions__c   where Product_Item__c =: product.id]
 for(Rates_Commissions__c rate:  [select id, Name, Product_Item__c, Client_Account__c, Venue_Hotel__c , Agreed_Rate__c, AgreedRes__c from Rates_Commissions__c   where Product_Item__c =: product.id])
    {
    
      system.debug('rate 42 -->'+rate );
      if(rate.Product_Item__c == product.id && quotes[0].AccountId == rate.Client_Account__c && quotes[0].Venue__c == rate.Venue_Hotel__c)
                   {          
                       system.debug('ProductId-->'+product.id  );
                       system.debug('RateProductItem-->'+rate.Product_Item__c  );
                       system.debug('QuoteAccId-->'+quotes[0].AccountId  );
                       system.debug('RateAccId-->'+rate.Client_Account__c  );
                       system.debug('QuoteVenueHotel-->'+quotes[0].Venue__c  );
                       system.debug('RateVenueHotel-->'+rate.Venue_Hotel__c  );


              item.PSL_Rate__C =  rate.Agreed_Rate__c ;
              item.Commission_Percentage_PSL__c = rate.AgreedRes__c;
               system.debug('rate.Agreed_Rate__c -->'+ rate.Agreed_Rate__c );
               system.debug(' rate.AgreedRes__c -->'+ rate.AgreedRes__c );


            }
            

    }
                }
 
                }     
             }
            }
              
    }
        
       if(trigger.isBefore && (trigger.isInsert || trigger.isUpdate)){
        for(QuoteLineItem o : Trigger.new)
         {
           if(o.PSL_Rate__C < o.Online_Rate__c)
            {
            o.Recommended_Sales_Price__c=  o.PSL_Rate__C;
            }
           else if(o.Online_Rate__c < o.PSL_Rate__C){
           o.Recommended_Sales_Price__c=  o.Online_Rate__c ;
           }
           else if(o.Online_Rate__c == null || o.Online_Rate__c == 0 ){
           o.Recommended_Sales_Price__c=  o.PSL_Rate__C;
           }
           else if(o.PSL_Rate__C == 0 || o.PSL_Rate__C == null)
           {
           o.Recommended_Sales_Price__c=  o.Online_Rate__c ;
           }
         }
       }
}

Thanks ,
Utkarsha