Development questions
When an Opportunity amount exceeds $100,000, automatically submit the record to an Approval Process using Approval.ProcessSubmitRequest from a trigger.
Use after insert/update (the record needs an Id) and Approval.ProcessSubmitRequest.
apex
trigger OppTrigger on Opportunity (after insert, after update) {
List<Approval.ProcessSubmitRequest> reqs = new List<Approval.ProcessSubmitRequest>();
for (Opportunity o : Trigger.new) {
Boolean crossed = o.Amount > 100000 && (Trigger.isInsert || Trigger.oldMap.get(o.Id).Amount <= 100000);
if (crossed) {
Approval.ProcessSubmitRequest r = new Approval.ProcessSubmitRequest();
r.setObjectId(o.Id);
r.setComments('Auto-submitted: amount over $100,000');
r.setProcessDefinitionNameOrId('Opp_High_Value_Approval');
r.setSkipEntryCriteria(false);
reqs.add(r);
}
}
if (!reqs.isEmpty()) Approval.process(reqs);
}
Ensure the process isn't already pending to avoid ALREADY_IN_PROCESS errors.
apex-triggertriggercodingscenarioapproval
More Development questions
- What is an Apex Trigger in Salesforce and when should you use it over Flows?
- What is the difference between before triggers and after triggers?
- Explain all Trigger context variables (isInsert, isUpdate, isDelete, isUndelete, isBefore, isAfter, isExecuting, size, operationType).
- What is the difference between Trigger.new and Trigger.old?
- In which trigger events are Trigger.new and Trigger.newMap available?
- In which trigger events are Trigger.old and Trigger.oldMap available?