I am getting following error:
execution of AfterUpdate caused by: System.SObjectException: SObject row was retrieved via SOQL without querying the requested field: Lead.Status: Trigger.LeadClosedStatus: line 25, column 1
My trigger is as follows:-
trigger LeadClosedStatus on Lead (after insert, after update) {
SET<ID> listNewLead = new SET<ID>();
if(Trigger.isInsert) {
if(Trigger.isafter) {
LIST<Task> newTask = new LIST<Task>();
for(Lead newLead : Trigger.new) {
listNewLead.add(newLead.Id);
Task t = new Task();
t.Status = newLead.Status;
t.WhoId = newLead.Id;
newTask.add(t);
}
if(newTask.size()>0) {
insert(newTask);
}
}
}
LIST<Lead> leadClosedStatus = [SELECT ID
FROM Lead
WHERE Status LIKE '%Closed%'];
LIST<Task> newTask = new LIST<Task>();
if(Trigger.isUpdate) {
for(Lead updateLead : leadClosedStatus) {
if(updateLead.Status == '%Closed%') {
Task t = new Task();
t.Status = updateLead.Status;
newTask.add(t);
}
}
if(newTask != NULL && newTask.size() > 0) {
update newtask;
}
}
}
newTasks
, notnewTask
; (2)newTask
will never be null so don't test for it; (3) DML of any empty collection will cost nothing, no DML statement is burned so skip the tests fornewTask.size()>0