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
sfdc007sfdc007 

Trigger Help needed

Hi,

I need help on the following requirement as follows

1) I am having a custom field called as sub status_c in my custom object Teamform__c , when the sub status picklist value changes i need to calculate the ttime difference between old sub status and new sub status vaule change


i have created 3 fields as follws

Old_Time__c -> Date/Time data type
New_Time__c -> Date/Time data type

Days_Difference__c -> days difference

but it is not updating the value in the field

i am getting the below error

Sandbox
 
Sandbox
 
Apex script unhandled trigger exception by user/organization: 005U0000000HH3g/00Dq00000009WJY Source organization: 00DU0000000HiA8 (null)
TeamformTriggertime: execution of BeforeUpdate
 
caused by: System.NullPointerException: Attempt to de-reference a null object
 
Trigger.TeamformTriggertime: line 18, column 1



Let me know if i am doing anything wrong in my trigger

MY TRIGGER CODE :


trigger TeamformTrigger on Team_Form__c (before insert,before update) {
List<Team_Form__c> Teamform = new List<Team_Form__c>();
   if(Trigger.isbefore){
      if(Trigger.isInsert){
         for(Team_Form__c team:Trigger.new){
             Datetime dt = DateTime.newInstance(Date.today(), Time.newInstance(0, 0, 0, 0));
             String dayOfWeek=dt.format('EEEE');
             System.debug('Day : ' + dayOfWeek);
             if((dayOfWeek!='Saturday' || dayOfWeek!='Saturday') && (team.SubStatus__c!=null || team.SubStatus__c!=''))
               team.Old_Time__c=System.now();
         }
      }
      if(Trigger.isUpdate){
         for(Team_Form__c teams:Trigger.new){
             Datetime dt = DateTime.newInstance(Date.today(), Time.newInstance(0, 0, 0, 0));
             String dayOfWeek=dt.format('EEEE');
             System.debug('Day : ' + dayOfWeek);
             Date convertCreatedDate = date.newinstance(Trigger.oldMap.get(teams.Id).Old_Time__c.year(), Trigger.oldMap.get(teams.Id).Old_Time__c.month(), Trigger.oldMap.get(teams.Id).Old_Time__c.day());
             if((Trigger.oldMap.get(teams.Id).SubStatus__c!=Trigger.newMap.get(teams.Id).SubStatus__c) &&
               (teams.SubStatus__c!=null || teams.SubStatus__c!='') && (dayOfWeek!='Saturday' || dayOfWeek!='Saturday')){
                 Integer dateDifference = System.today().daysBetween(convertCreatedDate);
                 teams.New_Time__c=System.now();
                 teams.Days_Difference__c=dateDifference;
            }
         }
      }
   }
}



Kindly help me on this regard

Thanks in Advance



 
Darshan Shah2Darshan Shah2
Hi sfdc007,

It seems that value in 'Old_Time__c' is blank.
Write one line before line no 18 and let me know what it gives.
System.debug('Time : '+Trigger.oldMap.get(teams.Id).Old_Time__c);

 
KaranrajKaranraj
The error is due to when Old_Time field is null. To avoid this type of error, have a null pointer check before you are getting the year value from that field. Modify that line with the belwo code,
if(Trigger.oldMap.get(teams.Id).Old_Time__c != NULL){
Date convertCreatedDate = date.newinstance(Trigger.oldMap.get(teams.Id).Old_Time__c.year(), Trigger.oldMap.get(teams.Id).Old_Time__c.month(), Trigger.oldMap.get(teams.Id).Old_Time__c.day());
}

Thanks,
Karanraj
 
sfdc007sfdc007
Thanks it worked , but one small doubt , i want to determine the time on the sub status  field change

Old Time
5/15/2015 5:05 AM
   
New Time
5/15/2015 5:12 AM
   
Days Difference
0


but it is displaying as 0 wher there is a change in time , let me know if i am doing wrong in my trigger


trigger TeamformTrigger on Team_Form__c (before insert,before update) {
List<Team_Form__c> Teamform = new List<Team_Form__c>();
   if(Trigger.isbefore){
      if(Trigger.isInsert){
         for(Team_Form__c team:Trigger.new){
             Datetime dt = DateTime.newInstance(Date.today(), Time.newInstance(0, 0, 0, 0));
             String dayOfWeek=dt.format('EEEE');
             System.debug('Day : ' + dayOfWeek);
             if((dayOfWeek!='Saturday' || dayOfWeek!='Saturday') && (team.SubStatus__c!=null || team.SubStatus__c!=''))
               team.Old_Time__c=System.now();
         }
      }
      if(Trigger.isUpdate){
         for(Team_Form__c teams:Trigger.new){
             Datetime dt = DateTime.newInstance(Date.today(), Time.newInstance(0, 0, 0, 0));
             String dayOfWeek=dt.format('EEEE');
             System.debug('Day : ' + dayOfWeek);
             Date convertCreatedDate = date.newinstance(Trigger.oldMap.get(teams.Id).Old_Time__c.year(), Trigger.oldMap.get(teams.Id).Old_Time__c.month(), Trigger.oldMap.get(teams.Id).Old_Time__c.day());
             if((Trigger.oldMap.get(teams.Id).SubStatus__c!=Trigger.newMap.get(teams.Id).SubStatus__c) &&
               (teams.SubStatus__c!=null || teams.SubStatus__c!='') && (dayOfWeek!='Saturday' || dayOfWeek!='Saturday')){
                 Integer dateDifference = System.today().daysBetween(convertCreatedDate);
                 teams.New_Time__c=System.now();
                 teams.Days_Difference__c=dateDifference;
            }
         }
      }
   }
}