You need to sign in to do that
Don't have an account?
Bryan REVELANT 2
Apex trigger on Approval.ProcessSubmitRequest multiple user id
Hello,
3 objects.
Custom object
Corss object
User object
I want to insert a list of userid from my cross object to flow within an approval. I have built code to do this with one user or hard code user id. However I want to take the cross object user id's and insert them into setNextApproverIds. however this appears to bomb everytime I try. Any thoughts on the below
trigger ADRTrigger on ADR__c(After update)
{
// list<User> UserList = new list<User>();
list<id> ADRUserIDVar = new list <id>();
public void ADRTrigger(list<ADRUser__c> NewADRU, map <id, ADRUser__c> NewMapSAS){
map <id, list <id>> ADRUserMap = new map <id, list <id>>();
for (ADRUser__c listSAS : NewADRU){
system.debug('Log: ' + NewADRU.SIZE());
list<id> ADRIds1st = new list<id>();
if(ADRUserMap.containsKey(listSAS.id)){
ADRIds1st = ADRUserMap.get(listSAS.id);
}
ADRIds1st.add(listSAS.id);
ADRUserMap.put(listSAS.User__c, ADRIds1st);
ADRUserIDVar.add(listSAS.User__c);
}
system.debug('Variable ADRUserIDVar: ' + ADRUserIDVar);
}
for (Integer i = 0; i < Trigger.new.size(); i++)
{
try
{
if(Trigger.new[i].Next_Step__c == 'Submit' && Trigger.old[i].Next_Step__c != 'Submit')
{
submitForApproval(Trigger.new[i]);
}
}catch(Exception e)
{
Trigger.new[i].addError(e.getMessage());
}
}
//Methods to Submit the record
public void submitForApproval(ADR__c opp)
{
// Create an approval request for the ADR__c
Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
req1.setComments('Submitting request for approval automatically using Trigger');
req1.setObjectId(opp.id);
req1.setNextApproverIds(ADRUserIDVar);
Approval.ProcessResult result = Approval.process(req1);
}
//Get ProcessInstanceWorkItemId using SOQL
public Id getWorkItemId(Id targetObjectId)
{
Id retVal = null;
for(ProcessInstanceWorkitem workItem : [Select p.Id from ProcessInstanceWorkitem p
where p.ProcessInstance.TargetObjectId =: targetObjectId])
{
retVal = workItem.Id;
}
return retVal;
}
}
3 objects.
Custom object
Corss object
User object
I want to insert a list of userid from my cross object to flow within an approval. I have built code to do this with one user or hard code user id. However I want to take the cross object user id's and insert them into setNextApproverIds. however this appears to bomb everytime I try. Any thoughts on the below
trigger ADRTrigger on ADR__c(After update)
{
// list<User> UserList = new list<User>();
list<id> ADRUserIDVar = new list <id>();
public void ADRTrigger(list<ADRUser__c> NewADRU, map <id, ADRUser__c> NewMapSAS){
map <id, list <id>> ADRUserMap = new map <id, list <id>>();
for (ADRUser__c listSAS : NewADRU){
system.debug('Log: ' + NewADRU.SIZE());
list<id> ADRIds1st = new list<id>();
if(ADRUserMap.containsKey(listSAS.id)){
ADRIds1st = ADRUserMap.get(listSAS.id);
}
ADRIds1st.add(listSAS.id);
ADRUserMap.put(listSAS.User__c, ADRIds1st);
ADRUserIDVar.add(listSAS.User__c);
}
system.debug('Variable ADRUserIDVar: ' + ADRUserIDVar);
}
for (Integer i = 0; i < Trigger.new.size(); i++)
{
try
{
if(Trigger.new[i].Next_Step__c == 'Submit' && Trigger.old[i].Next_Step__c != 'Submit')
{
submitForApproval(Trigger.new[i]);
}
}catch(Exception e)
{
Trigger.new[i].addError(e.getMessage());
}
}
//Methods to Submit the record
public void submitForApproval(ADR__c opp)
{
// Create an approval request for the ADR__c
Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
req1.setComments('Submitting request for approval automatically using Trigger');
req1.setObjectId(opp.id);
req1.setNextApproverIds(ADRUserIDVar);
Approval.ProcessResult result = Approval.process(req1);
}
//Get ProcessInstanceWorkItemId using SOQL
public Id getWorkItemId(Id targetObjectId)
{
Id retVal = null;
for(ProcessInstanceWorkitem workItem : [Select p.Id from ProcessInstanceWorkitem p
where p.ProcessInstance.TargetObjectId =: targetObjectId])
{
retVal = workItem.Id;
}
return retVal;
}
}
I hope below link help you!
http://shivasoft.in/blog/salesforce/dynamic-approval-process-based-on-the-apex-and-trigger/
Thanks,
Rockzz
You cannot add a list of users as next approvers in APEX, as it takes only a single ID. However, please check if this helps: http://salesforce.stackexchange.com/questions/9049/apex-approval-process-that-requires-unanimous-approval-from-multiple-approvers
Thanks,
Shashank
If this solves your problem, kindly mark it as the best answer.
Hit Like, if it saved your work :-)
Regards,
Magulan
http://www.infallibletechie.com