You need to sign in to do that
Don't have an account?
After Update Trigger - Error
Hi,
I have set up an after update trigger for a dynamic approval process on my custom object (TestObj).
However I am getting a save error: Initial term of field expression must be a concrete sObject: List<Group> (Highlighted in Red)
trigger Test_ApprovalProcess on TestObj__c (after update) {
List<String> QNames = new List<String>();
//Retreiving the Queue_Name__c from each TestObj__c record and populating the list
for(TestObj__c test : Trigger.new){
String QName = test.Queue_Name__c;
QNames.add(QName);
System.debug('zz QNames: ' + QNames);
}
Map<Id, Id> groupIDMap = new Map<Id, Id>();
List<String> idList = new List<String>();
List<group> gList = [SELECT (select userOrGroupId from groupMembers)
FROM group
WHERE name = :QNames]; //use the referenced name field from the EFR_Funding record to make it dynamic
for (GroupMember gm : gList.groupMembers){
idList.add(gm.userOrGroupId);
System.debug('zz ids: ' + idList);
}
//Submit records for approval based on the condition below
for(TestObj__c test1: Trigger.new){
if(test1.Approval_Status__c == 'Approved by Manager'){
Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
req1.setComments('Submitting request for Approval.');
req1.setObjectId(ef.id);
req1.setNextApproverIds(idList);
Approval.ProcessResult result = Approval.process(req1);
System.assert(result.isSuccess());
System.assertEquals('Pending', result.getInstanceStatus(), 'Instance Status'+result.getInstanceStatus());
}
}
}
Can someone please point out or correct my code.
Thanks!
Instead of,
for (GroupMember gm : gList.groupMembers){
idList.add(gm.userOrGroupId);
System.debug('zz ids: ' + idList);
}
use below
Have you tried
//Loop
for (GroupMember gm : gList){
//Add to list
idList.add(gm.userOrGroupId);
System.debug('zz ids: ' + idList);
}
Hope this works