You need to sign in to do that
Don't have an account?
mac admin
How to update the custom field when a task field is completed
Hi all,
I want to update custom field when an task is closed in that particular custom field. Can any one help me over here.
Thanks in advance.
regards,
mac.
I want to update custom field when an task is closed in that particular custom field. Can any one help me over here.
Thanks in advance.
regards,
mac.
I have updated if condition and its works for me. Task subect copied on account record.
trigger TaskTrigger on Task (After update) {
Set<ID> setWhatId = new Set<ID>();
Map<Id,Task> mapWhatIdWithTask = new Map<Id,Task>();
for (Task objTask : Trigger.new) {
if(objTask.status.equalsIgnoreCase('Completed')) {
setWhatId.add(objTask.whatId);
mapWhatIdWithTask.put(objTask.whatId,objTask);
}
}
List<Account> lstAccount = new List<Account>();
for(Account objAccount: [SELECT Task_Subject__c FROM Account WHERE ID IN :setWhatId]) {
Task objTask = mapWhatIdWithTask.get(objAccount.id);
objAccount.Task_Subject__c = objTask.subject;
lstAccount.add(objAccount);
}
if(lstAccount.size()>0)
update lstAccount;
}
And about the auto populate the look up value, now we can not achive this. You can create lookup field on Task but can not auto populate it.
Please mark this as best answer if it works for you.
Thanks,
Nitish
All Answers
You requirement is not clear, if you want to update a field, if a task is closed, then you can use workflow or process builder.
Thanks,
Sumit Kumar Singh
When I create a task in custom object and when task is completed then I want to update my custom field with task subject in my custom object. Can you please help me over here.
Thanks in advance.
Regards,
mac.
Once task completed then in After update event of task trigger with the help of WhatId field (task standard field) which contains the custom object id and then query to custom object and update the custom field with task subject.
Please mark this as best answer if it works for you.
Thanks,
Nitish
Regards,
mac
Here is the example:
Suppose taskSubject__c is the custom field which is on Account which you want to update once task is closed.
trigger TaskTrigger on Task (After update) {
Set<ID> setWhatId = new Set<ID>();
Map<Id,Task> mapWhatIdWithTask = new Map<Id,Task>();
for (Task objTask : Trigger.new) {
if(objTask.status == 'Closed') {
setWhatId.add(objTask.whatId);
mapWhatIdWithTask.put(objTask.whatId,objTask);
}
}
List<Account> lstAccount = new List<Account>();
for(Account objAccount: [SELECT taskSubject__c FROM Account WHERE ID IN :setWhatId]) {
Task objTask = mapWhatIdWithTask.get(objAccount.id);
objAccount.taskSubject__c = objTask.subject;
lstAccount.add(objAccount);
}
if(lstAccount.size()>0)
update lstAccount;
}
Please mark this as best answer if it works for you.
Thanks,
Nitish
Thanks for the reply. I have changed your code as below but the Status is not changing in the custom object. can please let me know why i'm not able to update the Status field.
trigger updtaestatuscon on Task (After update) {
Set<ID> Contact = new Set<ID>();
Map<Id,Task> mapWhatIdWithTask = new Map<Id,Task>();
for (Task objTask : Trigger.new) {
if(objTask.status == 'Closed') {
Contact.add(objTask.whatId);
mapWhatIdWithTask.put(objTask.whatId,objTask);
}
}
List<Sales_order__c> lstAccount = new List<Sales_order__c>();
for(Sales_order__c objAccount: [SELECT Status__c FROM Sales_order__c WHERE ID IN :Contact]) {
Task objTask = mapWhatIdWithTask.get(objAccount.id);
objAccount.Status__c = objTask.subject;
lstAccount.add(objAccount);
}
if(lstAccount.size()>0)
update lstAccount;
}
Regards,
mac.
Can we auto populate the look up value for Name(Contact / Lead) field in the Task page which will open when we click on New Task button in the related list. In Name field we have Contact and Lead in my scenario I'm choosing contact. I wna t to auto populate the contact name when the Task page is opening. Can we achive this...?
I have updated if condition and its works for me. Task subect copied on account record.
trigger TaskTrigger on Task (After update) {
Set<ID> setWhatId = new Set<ID>();
Map<Id,Task> mapWhatIdWithTask = new Map<Id,Task>();
for (Task objTask : Trigger.new) {
if(objTask.status.equalsIgnoreCase('Completed')) {
setWhatId.add(objTask.whatId);
mapWhatIdWithTask.put(objTask.whatId,objTask);
}
}
List<Account> lstAccount = new List<Account>();
for(Account objAccount: [SELECT Task_Subject__c FROM Account WHERE ID IN :setWhatId]) {
Task objTask = mapWhatIdWithTask.get(objAccount.id);
objAccount.Task_Subject__c = objTask.subject;
lstAccount.add(objAccount);
}
if(lstAccount.size()>0)
update lstAccount;
}
And about the auto populate the look up value, now we can not achive this. You can create lookup field on Task but can not auto populate it.
Please mark this as best answer if it works for you.
Thanks,
Nitish
Thanks for reply thats worked.
Can we auto populate the look up value for Name(Contact / Lead) field in the Task page which will open when we click on New Task button in the related list. In Name field we have Contact and Lead in my scenario I'm choosing contact. I wna t to auto populate the contact name when the Task page is opening. Can we achive this...?