ffrr.RevenueScheduleServiceglobal with sharing class RevenueScheduleService Contains methods for Revenue Schedule operations. Methods
generateglobal static List<Id> generate(Set<Id> sourceRecordIds) Takes a set of input source recordIds and generates and inserts multiple ffrr__RevenueRecognitionSchedule__c and multiple associated ffrr__RevenueRecognitionScheduleLine__c. The schedules and lines are populated with information from the source records, as defined by the associated ffrr__Settings__c, using the calculation type from the associated ffrr__Template__c. Input Parameters
Return ValueThe Ids of the created ffrr__RevenueSchedule__c records. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // In this example the Revenue Schedule Service is used to create a Revenue Schedule for each // source record Id passed in to the service method, and return a list of associated Revenue Schedule Ids // If any of the sources are not set up for revenue recognition then no schedules will be generated. // Retrieve the Ids of the Performance Obligations that will be used as the source Ids from which to generate Revenue Schedules List<ffrr__PerformanceObligation__c> sourceRecords = [SELECT Id FROM ffrr__PerformanceObligation__c WHERE ffrr__AccountName__c = 'FF']; Set<Id> sourceRecordIds = new Set<Id>(); for( ffrr__PerformanceObligation__c sourceRecord : sourceRecords ) { sourceRecordIds.add(sourceRecord.Id); } // Get the List of Revenue Schedule Ids that have been generated by this service List<Id> revenueScheduleIds = ffrr.RevenueScheduleService.generate(sourceRecordIds); generateglobal static Map<Id, ffrr.RevenueScheduleService.GenerateResult> generate(Set<Id> sourceRecordIds, ffrr.RevenueScheduleService.GenerateConfig config) Takes a set of input source recordIds and a configuration and generates and inserts multiple ffrr__RevenueRecognitionSchedule__c and multiple associated ffrr__RevenueRecognitionScheduleLine__c. The schedules and lines are populated with information from the source records, as defined by the associated ffrr__Settings__c, using the calculation type from the associated ffrr__Template__c. Input Parameters
Return ValueThe Ids of the created ffrr__RevenueSchedule__c records. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // In this example the Revenue Schedule Service is used to create a Revenue Schedule for each // source record Id passed in to the service method, and return a map of source Ids to associated results. // The generate method is called with a GenerateConfig object that sets the all or none parameter to false. // If a source is not set up for revenue recognition then no schedules will be generated for it. // If a source is set up for revenue recognition then a schedule will be generated for it. // Retrieve the Ids of the Performance Obligations that will be used as the source Ids from which to generate Revenue Schedules List<ffrr__PerformanceObligation__c> sourceRecords = [SELECT Id FROM ffrr__PerformanceObligation__c WHERE ffrr__AccountName__c = 'FF']; Set<Id> sourceRecordIds = new Set<Id>(); for( ffrr__PerformanceObligation__c sourceRecord : sourceRecords ) { sourceRecordIds.add(sourceRecord.Id); } ffrr.RevenueScheduleService.GenerateConfig config = new ffrr.RevenueScheduleService.GenerateConfig(); config.allOrNone = false; // Get the results that have been generated by this service Map<Id, ffrr.RevenueScheduleService.GenerateResult> results = ffrr.RevenueScheduleService.generate(sourceRecordIds, config); for(Id sourceId : results.keySet()) { ffrr.RevenueScheduleService.GenerateResult result = results.get(sourceId); // Log the Id of the source record for which this result is associated with System.debug('Source Record Id ' + result.sourceRecordId); // Log the Id of the schedule that was generated System.debug('Schedule Id ' + result.scheduleId); // Log the status of the generate for this source record Id System.debug('Success ' + result.success); // Log any errors that were thrown for(String e : result.errors) { System.debug('error: ' + e); } } generateAsyncglobal static Id generateAsync() Generates and inserts multiple ffrr__RevenueRecognitionSchedule__c and multiple associated ffrr__RevenueRecognitionScheduleLine__c asynchronously for all the valid objects available in the Org. The schedules and lines are populated with information from the source records, as defined by the associated ffrr__Settings__c, using the calculation type from the associated ffrr__Template__c. Return ValueId of the executing fferpcore__ProcessRun__c record. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // In this example the Revenue Schedule Service is used to asynchronously create a Revenue Schedule for each // available source record in the org, and return the Async Apex Job Id. // If a source is not set up for revenue recognition then no schedules will be generated for it. // If a source is set up for revenue recognition then a schedule will be generated for it. // Get the Id of Async Apex Job generating the Revenue Schedules Id batchJobId = ffrr.RevenueScheduleService.generateAsync(); // Get AsyncApexJob status List<AsyncApexJob> batchJob = [SELECT Id, Status FROM AsyncApexJob WHERE Id = :batchJobId]; generateAsyncglobal static Id generateAsync(Set<Id> sourceRecordIds) Takes a set of input source recordIds and generates and inserts multiple ffrr__RevenueRecognitionSchedule__c and multiple associated ffrr__RevenueRecognitionScheduleLine__c asynchronously. The schedules and lines are populated with information from the source records, as defined by the associated ffrr__Settings__c, using the calculation type from the associated ffrr__Template__c. Input Parameters
Return ValueId of the executing fferpcore__ProcessRun__c record. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // In this example the Revenue Schedule Service is used to asynchronously create a Revenue Schedule for each // source record Id passed in to the service method, and return the Async Apex Job Id. // If a source is not set up for revenue recognition then no schedules will be generated for it. // If a source is set up for revenue recognition then a schedule will be generated for it. // Retrieve the Ids of the Performance Obligations that will be used as the source Ids from which to generate Revenue Schedules List<ffrr__PerformanceObligation__c> sourceRecords = [SELECT Id FROM ffrr__PerformanceObligation__c WHERE ffrr__AccountName__c = 'FF']; Set<Id> sourceRecordIds = new Set<Id>(); for( ffrr__PerformanceObligation__c sourceRecord : sourceRecords ) { sourceRecordIds.add(sourceRecord.Id); } // Get the Id of Async Apex Job generating the Revenue Schedules Id batchJobId = ffrr.RevenueScheduleService.generateAsync(sourceRecordIds); // Get AsyncApexJob status List<AsyncApexJob> batchJob = [SELECT Id, Status FROM AsyncApexJob WHERE Id = :batchJobId]; recognizeglobal static ffrr.RevenueScheduleService.RecognizeResult recognize(Set<Id> revenueScheduleLineIds, ffrr.RevenueScheduleService.RecognitionInformation recognitionInformation) Recognizes revenue for the given revenue schedule lines. Input Parameters
Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // In this example the Revenue Schedule Service is used to create a Revenue Recognition Transaction for each // Revenue Schedule Line Id passed in to the service method. // The recognize method is called with a RecognitionInformation object that sets the recognition date. // Retrieve the Ids of the Revenue Schedule Lines that will be used to create Revenue Recognition Transactions from. Map<Id, ffrr__RevenueScheduleLine__c> scheduleLinesByIds = new Map<Id, ffrr__RevenueScheduleLine__c>([SELECT Id, Name FROM ffrr__RevenueScheduleLine__c]); ffrr.RevenueScheduleService.RecognitionInformation recognitionInformation = new ffrr.RevenueScheduleService.RecognitionInformation(); recognitionInformation.setRecognitionDate(Date.newInstance(2022, 01, 31)); // Get the results that have been generated by this service ffrr.RevenueScheduleService.RecognizeResult result = ffrr.RevenueScheduleService.recognize(scheduleLinesByIds.keySet(), recognitionInformation); for(Id successfulLineId : result.getSuccessfulLineIds()) { System.debug('Successful Line Id ' + successfulLineId); } for(Id invalidLineId : result.getInvalidLineIds()) { System.debug('Invalid Line Id ' + invalidLineId); for(String error : result.getErrorsForId(invalidLineId)) { System.debug('Error ' + error); } } recognizeAsyncglobal static Id recognizeAsync(ffrr.RevenueScheduleService.RecognitionFilters recognitionFilters, ffrr.RevenueScheduleService.RecognitionInformation recognitionInformation) Recognizes all revenue on all revenue schedule lines up until today. Input Parameters
Return ValueId of the executing fferpcore__ProcessRun__c record. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // In this example the Revenue Schedule Service is used to asynchronously create a Revenue Recognition Transaction with associated lines for each // source record type and revenue stream based on the Revenue Schedule Line Id passed in to the service method. // If the provided ffrr.RecognitionFilters configuration object has no fromDate all valid records from start of time will be retrieved // If the provided ffrr.RecognitionFilters configuration object has no untilDate all valid records until end of time will be retrieved // If the provided ffrr.RecognitionFilters configuration object has no revenueScheduleLineIds all valid records will be retrieved in conjunction of the fromDate and untilDate // Retrieve the Ids of the Revenue Schedule Lines that will be used to create Revenue Recognition Transactions from. Map<Id, ffrr__RevenueScheduleLine__c> scheduleLinesByIds = new Map<Id, ffrr__RevenueScheduleLine__c>([SELECT Id, Name FROM ffrr__RevenueScheduleLine__c]); ffrr.RevenueScheduleService.RecognitionFilters recognitionFilters = new ffrr.RevenueScheduleService.RecognitionFilters(); recognitionFilters.setFromDate(Date.newInstance(2022, 01, 01)); recognitionFilters.setUntilDate(Date.newInstance(2022, 01, 31)); ffrr.RevenueScheduleService.RecognitionInformation recognitionInformation = new ffrr.RevenueScheduleService.RecognitionInformation(); recognitionInformation.setRecognitionDate(Date.newInstance(2022, 01, 31)); // Sets the optional revenue schedule line Ids to be taken into consideration when recognizing schedules recognitionFilters.setRevenueScheduleLineIds(scheduleLinesByIds.keySet()); // Calls recognition service ffrr.RevenueScheduleService.recognizeAsync(recognitionFilters, recognitionInformation); ffrr.RevenueScheduleService.GenerateConfigglobal with sharing class GenerateConfig Class that contains the configuration to be used for generating schedules Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // Configure the way generate revenue schedules should be performed ffrr.RevenueScheduleService.GenerateConfig config = new ffrr.RevenueScheduleService.GenerateConfig(); // Set the allOrNone configuration to false to continue with schedule generation process even if one or more of the schedules could not be created config.allOrNone = false; Properties
MethodsGenerateConfigglobal GenerateConfig() ffrr.RevenueScheduleService.GenerateResultglobal with sharing class GenerateResult Class that contains the results given back from the generate method. Properties
ffrr.RevenueScheduleService.RecognitionFiltersglobal inherited sharing class RecognitionFilters Identifies the information to be recognized by a recognize method. Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // Configure the way recognizing of Revenue Schedules should be performed ffrr.RevenueScheduleService.RecognitionFilters recognitionFilters = new ffrr.RevenueScheduleService.RecognitionFilters(); // Sets the date (inclusive) dictating when we start taking Revenue Schedule Lines into consideration for recognition recognitionFilters.setFromDate(Date.newInstance(2022, 01, 01)); // Sets the date (inclusive) dictating when we stop taking Revenue Schedule Lines into consideration for recognition recognitionFilters.setUntilDate(Date.newInstance(2022, 01, 31)); // Sets the optional revenue schedule line Ids to be taken into consideration when recognizing schedules // If passed in only those schedule lines will be recognized, otherwise all valid schedule lines will be recognized Map<Id, ffrr__RevenueScheduleLine__c> scheduleLinesByIds = new Map<Id, ffrr__RevenueScheduleLine__c>([SELECT Id, Name FROM ffrr__RevenueScheduleLine__c]); recognitionFilters.setRevenueScheduleLineIds(scheduleLinesByIds.keySet()); Methods
RecognitionFiltersglobal RecognitionFilters() setFromDateglobal void setFromDate(Date fromDate) Sets the date (inclusive) dictating when we start taking Revenue Schedule Lines into consideration for recognition Input Parameters
setUntilDateglobal void setUntilDate(Date untilDate) Sets the date (inclusive) dictating when we stop taking Revenue Schedule Lines into consideration for recognition Input Parameters
setRevenueScheduleLineIdsglobal void setRevenueScheduleLineIds(Set<Id> revenueScheduleLineIds) Sets the optional revenue schedule line Ids to be taken into consideration when recognizing schedules If passed in only those schedule lines will be recognized, otherwise all valid schedule lines will be recognized Input Parameters
setRevenueScheduleLineIdsglobal void setRevenueScheduleLineIds(List<Id> revenueScheduleLineIds) Sets the optional revenue schedule line Ids to be taken into consideration when recognizing schedules If passed in only those schedule lines will be recognized, otherwise all valid schedule lines will be recognized Input Parameters
ffrr.RevenueScheduleService.RecognitionInformationglobal inherited sharing class RecognitionInformation Information required by the recognition process Sample Code//Note: This sample code is for demonstration purposes only. It is not intended for //use in a production environment, is not guaranteed against defects or errors, and //is in no way optimized or streamlined. // Configure the way recognizing of Revenue Schedules should be performed ffrr.RevenueScheduleService.RecognitionInformation recognitionInformation = new ffrr.RevenueScheduleService.RecognitionInformation(); // Sets the date which will appear on all the Revenue Recognition Transaction Lines as their recognition date recognitionInformation.setRecognitionDate(Date.newInstance(2022, 01, 31)); // Gets the currently set recognitionDate Date recognitionDate = recognitionInformation.getRecognitionDate(); MethodsRecognitionInformationglobal RecognitionInformation() setRecognitionDateglobal void setRecognitionDate(Date recognitionDate) Sets the date which will appear on all the Revenue Recognition Transaction Lines as their recognition date Input Parameters
ffrr.RevenueScheduleService.RecognizeResultglobal inherited sharing class RecognizeResult Config to allow us to turn off sending of emails, useful for system tests to avoid salesforce limitations. Don't globally expose this parameter. Methods
RecognizeResultglobal RecognizeResult() getSuccessfulLineIdsglobal Set<Id> getSuccessfulLineIds() getInvalidLineIdsglobal Set<Id> getInvalidLineIds() getErrorsForIdglobal Set<String> getErrorsForId(Id invalidID) |