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
Jack SevenJack Seven 

How can i fix this problem

trigger Order on Project_Item__c (after insert, after update, after delete) {
Set<Id> setId = new Set<Id>();
for(Project_Item__c pi:trigger.new)
      setId.add(pi.Master_Detail__c);
Map<Id,Project__c> mapProject = new Map<Id, Project__c>([SELECT Id, Total_Open_custom__c,  Total_Pipeline_custom__c FROM Project__c WHERE Id in:setId]); 

for(Project_Item__c item:trigger.new){
      if(item.status__c=='Open'){
           if(mapProject.get(item.Master_Detail__c).Total_Open_custom__c==null){
                 mapProject.get(item.Master_Detail__c).Total_Open_custom__c=item.Total_Amount__c;
           }else{
                 mapProject.get(item.Master_Detail__c).Total_Open_custom__c+=item.Total_Amount__c;
             }
       }else if(item.status__c=='Pipeline'){
                 if(mapProject.get(item.Master_Detail__c).Total_Pipeline_custom__c==null){
                       mapProject.get(item.Master_Detail__c).Total_Pipeline_custom__c=item.Total_Amount__c;
                 }else{
                       mapProject.get(item.Master_Detail__c).Total_Pipeline_custom__c+=item.Total_Amount__c;
                 }
       }
}
if(trigger.isDelete){
      for(Project_Item__c pi1 : trigger.new){
if(pi1.status__c=='Open'){
if(mapProject.get(pi1.Master_Detail__c).Total_Open_custom__c==null){
mapProject.get(pi1.Master_Detail__c).Total_Open_custom__c=pi1.Total_Amount__c;
}else{
mapProject.get(pi1.Master_Detail__c).Total_Open_custom__c-=pi1.Total_Amount__c;
}
}else if(pi1.status__c=='Pipeline'){
if(mapProject.get(pi1.Master_Detail__c).Total_Pipeline_custom__c==null){
mapProject.get(pi1.Master_Detail__c).Total_Pipeline_custom__c=pi1.Total_Amount__c;
}else{
mapProject.get(pi1.Master_Detail__c).Total_Pipeline_custom__c+=pi1.Total_Amount__c;
}
}
}
}
update mapProject.values();
}

 

When i deleted item of Project_Item__c, it showed a message : The first validation error encountered was "Apex trigger Order caused an unexpected exception, contact your administrator: Order: execution of AfterDelete caused by: System.NullPointerException: Attempt to de-reference a null object: Trigger.Order: line 3, column 1".

 

Please help me!

Bhawani SharmaBhawani Sharma
You are looping on Trigger.New on line no. 3. It will be null in case of delete event. You will have to use thsi conditionally. Like :
if(Trigger.isDelete) {
// user Trigger.Old
} else {
// Use Trigger.New
}
krprkrpr

Yes above should be correct. Use trigger.old for Delete Event.