You need to sign in to do that
Don't have an account?
Developement
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';
}
}
}
}
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';
}
}
}
}
Below is updated trigger, cross check field API names.
Best Regards,
Mithun.