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
uday uday chavanuday uday chavan 

getting error on after update working fine when on after insert


Review the errors on this page.
WorkOrderTrigger: execution of AfterUpdate caused by: System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, WorkOrderTrigger: maximum trigger depth exceeded Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate Work_Order trigger event AfterUpdate: [] Class.WorkOrderTriggerHelper.CreateWorkOrderItemOnInsert: line 677, column 1 Class.WorkOrderTriggerHelper.OnAfterUpdateEvent: line 47, column 1 Trigger.WorkOrderTrigger: line 19, column 1

this my code it is working fine on after insert but getting error on after update


this is my code;
public static void CreateWorkOrderItemOnInsert(List<Work_Order__c> workOrder){
        list<Work_Order_Item__c> listWOI = new list<Work_Order_Item__c>();
        set<Id> accIds = new set<Id>();
        for(Work_Order__c woItem:workOrder){
            String[] s = woItem.Service_Type__c.split(';');
            if(s.size()>0){
            if(woItem.Status__c =='Completed' && s.contains('Waste Export') ){
                if(woItem.Account__r.Terminal__c == false){
                   accIds.add(woItem.Account__c); 
                }
                Work_Order_Item__c newWOI = new Work_Order_Item__c();
                newWOI.Work_Order__c = woItem.Id;
                newWOI.Quantity__c    = woItem.Total_Ordered_Quantity__c;
                newWOI.Received_Quantity__c = woItem.Total_Delivered_Quantity__c;
                newWOI.Unit_Price__c = woItem.Price__c;
                newWOI.Description__c = woItem.Notes__c;
                listWOI.add(newWOI);
            }
          }
        }
        if(accIds.size()>0){
            list<Account> accounts = new list<Account>();
            for(Account acc:[SELECT Id,Name,Terminal__c from Account where Id =:accIds]){
                if(acc.Terminal__c == false){
                    acc.Terminal__c = true;
                }
                accounts.add(acc);
            }
            if(accounts.size()>0){
                update accounts;
            }
        }
        if(listWOI.size()>0){
            Insert listWOI;
            }
    }


should i have to write another method for update what i have to change in that
SwethaSwetha (Salesforce Developers) 
HI Uday,

This error is because your trigger on after update is running recursively. You can resolve this error by using a static boolean variable check.

For eg.
1)create a class( say triggerHelperClass). create a public static boolean variable( say bool), with value = true/false;
2) Add a check if(triggerHelperClass.bool ==true) "// if u set the value as true in class, then true here",in the first line inside trigger.
3) Set the value of triggerHelperClass.bool = false; , before you update your list in trigger.

This will remove your error, and force your trigger to NOT run recursively on after update event.

See related: https://salesforce.stackexchange.com/questions/79371/maximum-trigger-depth-exceeded
https://developer.salesforce.com/forums/ForumsMain?id=9062I000000DL4IQAW

Hope this helps you. Please mark this answer as best so that others facing the same issue will find this information useful. Thank you
mukesh guptamukesh gupta
Hi Uday,

You need to share WorkOrderTriggerHelper class code, becasue i neeed to investigation 
Class.WorkOrderTriggerHelper.CreateWorkOrderItemOnInsert: line 677, column 1

Regards
 
Suraj Tripathi 47Suraj Tripathi 47
Hi,

Try this:-
for(Account acc:[SELECT Id,Name,Terminal__c from Account where Id =:accIds]){
              if(acc!= NULL){
                if(acc.Terminal__c == false){
                    acc.Terminal__c = true;
                }
                accounts.add(acc);
}
            }

Please mark it as Best Answer if it helps you.

Thanks & Regards
Suraj Tripathi
uday uday chavanuday uday chavan
tried all still getting same error 
 
mukesh guptamukesh gupta
Hi Uday,

You need to share WorkOrderTriggerHelper class code, becasue i neeed to investigation 
Class.WorkOrderTriggerHelper.CreateWorkOrderItemOnInsert: line 677, column 1

Regards