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
DevelopementDevelopement 

Trigger to update lookup field

Hi,

I have 2 objects Action and Work. I have created a trigger on Action Object and copying few fields to work object. I have created a new lookup realtionship on Work object with Action obejct called "Track". I want when a new record is created on Action object the field "Track" on Work is updated with the action record. 
Action and work has a field called "number" that has same value.  

Logic should be: whenevr action.number=work.number
update Track (track is a lookup field on work and that loks up Ation record)

but how to incorporate this in this trigger?

trigger act_Trig on Action__c (after update,before insert, before update) {
 Map<String,Action__c > recordsctg = new Map<String,Action__c >();
 List<work> workToUpdate = new List<work>();
 
 
 
 
    if (Trigger.isAfter){
    
           for(Action__c ctgRecord : trigger.new){
           
           Action__c oldctg=trigger.oldmap.get(ctgrecord.Id); 
           if(ctgRecord.Status__c != oldctg.Status__c ||ctgRecord.Priority__c != oldctg.priority__c||
           ctgRecord.Expected_Completion_Date__c!=oldctg.Expected_Completion_Date__c ||
           ctgRecord.Master_work__c != oldctg.Master_work__c)    
              recordsctg.put(ctgRecord.BR_ID__c,ctgRecord);
       }
       if(!recordsctg.isEmpty()){
          workToUpdate = [select Status__c,work__c,priority__c, Master_work__c  from work where work__c IN: recordsctg.keyset()];
          for(work works: workToUpdate){
              works.status__c = recordsctg.get(works.work__c).Status__c;
              works.priority__c = recordsctg.get(works.work__c).priority__c;
              works.User__c = recordsctg.get(works.work__c).User__c;
              works.Master_work__c = recordsctg.get(works.work__c).Master_work__c;
              
              
          }
          if(workToUpdate.size() > 0){
             update workToUpdate;   
          }
      }
   }
   if(Trigger.isBefore){
       for (Action__c ctgRecord : trigger.new){
           if(ctgRecord.status__c == null ){
               ctgRecord.status__c = 'New';
           }
           if(ctgRecord.status__c == 'Reviewed' && ctgRecord.Reviewed_Date__c  == null){
              ctgRecord.Reviewed_Date__c = datetime.now();   
           }else if(ctgRecord.status__c == 'Approved' && ctgRecord.Approved_Date__c == null){
              ctgRecord.Approved_Date__c = datetime.now();
           }else if(ctgRecord.Rev__c != null && ctgRecord.status__c == 'New'){
              ctgRecord.status__c = 'In Review';    
           }
       }
       }
}
MithunPMithunP
Hi, 

Below is updated trigger, cross check field API names.
 
trigger act_Trig on Action__c (after update,before insert, before update) {
 Map<String,Action__c > recordsctg = new Map<String,Action__c >();
 List<work> workToUpdate = new List<work>();
 
 
 
 
    if (Trigger.isAfter){
    
           for(Action__c ctgRecord : trigger.new){
           
           Action__c oldctg=trigger.oldmap.get(ctgrecord.Id); 
           if(ctgRecord.Status__c != oldctg.Status__c ||ctgRecord.Priority__c != oldctg.priority__c||
           ctgRecord.Expected_Completion_Date__c!=oldctg.Expected_Completion_Date__c ||
           ctgRecord.Master_work__c != oldctg.Master_work__c)    
              recordsctg.put(ctgRecord.BR_ID__c,ctgRecord);
       }
       if(!recordsctg.isEmpty()){
          workToUpdate = [select Status__c,work__c,priority__c, Master_work__c  from work where work__c IN: recordsctg.keyset()];
          for(work works: workToUpdate){
              works.status__c = recordsctg.get(works.work__c).Status__c;
              works.priority__c = recordsctg.get(works.work__c).priority__c;
              works.User__c = recordsctg.get(works.work__c).User__c;
              works.Master_work__c = recordsctg.get(works.work__c).Master_work__c;
              
              
          }
          if(workToUpdate.size() > 0){
             update workToUpdate;   
          }
      }
      list<work__c> workList = [select Status__c,work__c,priority__c, Master_work__c,number__c    from work ];
list<work__c> newworkList = new list<work__c>();
     for(Action__c act : trigger.new){
           for(work__c wrk : workList){
                    if(act.number__ == wrk.number){
                             wrk.Track__c = act.Id;
                             newworkList.add(wrk);
                    }
           }   
    }
if(newworkList.size() > 0){      
    update newworkList;
}
   }
   if(Trigger.isBefore){
       for (Action__c ctgRecord : trigger.new){
           if(ctgRecord.status__c == null ){
               ctgRecord.status__c = 'New';
           }
           if(ctgRecord.status__c == 'Reviewed' && ctgRecord.Reviewed_Date__c  == null){
              ctgRecord.Reviewed_Date__c = datetime.now();   
           }else if(ctgRecord.status__c == 'Approved' && ctgRecord.Approved_Date__c == null){
              ctgRecord.Approved_Date__c = datetime.now();
           }else if(ctgRecord.Rev__c != null && ctgRecord.status__c == 'New'){
              ctgRecord.status__c = 'In Review';    
           }
       }
       }
}

Best Regards,
Mithun.