Newer Version Available
Calling the Revenue Recognition Service with APEX Triggers
You can call the Revenue Recognition service with a custom APEX trigger.
For a list of input and output parameters, review Revenue Recognition Service Developer Guide.
Example
In this example, we want to create a revenue schedule for a contract after its status
changes to Activated.
1trigger GenerateRevenueOnContractActivation on Contract (before insert) {
2 Contract[] newContracts = Trigger.new;
3 Contract[] oldContracts = Trigger.old;
4
5 RevenueRecognitionInput[] inputs = new List<RevenueRecognitionInput>();
6
7 Integer i = 0;
8 for (Contract newContract : newContracts) {
9 if (newContract.Status != oldContracts[i].Status && newContract.Status == 'Activated') {
10 RevenueRecognitionInput input = new RevenueRecognitionInput();
11 input.source = newContract.ID;
12 input.sourceFieldName = 'Contract';
13 input.revenueAmount = newContract.SBQQ__Quote__c.SBQQ__ListAmount__c;
14 input.startDate = newContract.StartDate;
15 input.endDate = (Date.today()).addMonths(2);
16 input.revenueRecoginitionRuleId = newContract.blng__RevenueRecognitionRule__c;
17 inputs.add(input);
18 }
19 i++;
20 }
21
22 if (inputs != null && inputs.size() > 0) {
23 RevenueRecognitionService revenueRecognitionService = RevenueRecognitionService.getInstance();
24 List<RevenueRecognitionResponse> response = revenueRecognitionService.createRevenueSchedulesForAnyEntity(inputs);
25 }
26}