Newer Version Available

This content describes an older version of this product. View Latest

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.

Always review field validations and mapping to ensure you can trigger your process without any errors.

Important

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}