Revenue Management API Developer Reference

ffrr.ForecastService

global with sharing class ForecastService

Methods

retrieveNew

global static List<ffrr.ForecastService.ForecastLine> retrieveNew(Id parentRecordId, Integer parentLevel, ffrr.ViewService.Tab tab)

Creates zero value forecast lines from the source records with forecast templates attached, that match the filter criteria. The method retrieves those forecast line items when expanding a summary item on the Forecast Revenue page for the specified parent item, applying the supplied filters. The returned data includes both detail and summary items (which may then be used to expand deeper into the available data).

Input Parameters

Name Type Description
parentRecordId Id The source record id of the item that is being expanded.
parentLevel Integer Settings level of item being expanded. For primary level items use 0 or null.
tab ffrr.ViewService.Tab Tab filters to be applied.

Return Value

This service returns a list of ffrr.ForecastService.ForecastLine objects.

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.

//Note: This sample demonstrates how to call the retrieveNew method and therefore
//relies on there being data within the system (if no data is available, no data
//will be retrieved). If you wish to add Settings, Templates, Recognition Years
//and Periods, and the corresponding data items then the results that are returned
//will alter and, depending on the data, demonstrate drilling down into data

//Setup the recognition date that we'll be using
Date recognitionDate = Date.newInstance(2013, 01, 05);
Id yearId = [SELECT Id FROM ffrr__RecognitionYear__c WHERE Name = '2017'][0].Id;

//Setup the items that we'll be filtering by. For the purposes of this sample we
//won't add any filters
ffrr.ViewService.Tab filters = new ffrr.ViewService.Tab();
ffrr.ViewService.TabFilter tabFilter = new ffrr.ViewService.TabFilter();

if (UserInfo.isMultiCurrencyOrganization())                  //If this is a multi-currency org...
    tabFilter.currencyName = UserInfo.getDefaultCurrency();      //...set the currency filter
tabFilter.recognitionDate = recognitionDate;
tabFilter.years = new List<Id>{yearId};

filters.tabFilter = tabFilter;

//Note: The objectType is the object type of the group/tab being queried - adjust as necessary
filters.objectType = Opportunity.getSObjectType();

//Extract the top level items (e.g. projects)
List<ffrr.ForecastService.ForecastLine> newForecastLines = ffrr.ForecastService.retrieveNew(null, null, filters);

ID parentRecordID = null;
//Output the retrieved draft lines
for(ffrr.ForecastService.ForecastLine newForecastLine : newForecastLines )
{
    System.debug('Forecast line (Root): '+newForecastLine);

    //To demonstrate drilling down into data, see if there exists a summary line (i.e. something that we can drill into)
    //and record the line's record id.
    if(newForecastLine.lineType == ffrr.CalculationService.LineType.SUMMARY)
    {
        parentRecordID = newForecastLine.record.id;
    }
}

//Note: The following section of code demonstrates how to drill into a summary item. It will only
//execute if we identified something to drill into though in the above loop
if (parentRecordID != null)
{
    newForecastLines = ffrr.ForecastService.retrieveNew(parentRecordID, 1, filters);

    //Output each of the child lines that we retrieved
    for (ffrr.ForecastService.ForecastLine newForecastLine : newForecastLines)
    {
        System.debug('Forecast line (Child): ' + newForecastLine);
    }
}

retrieveDrafts

global static List<ffrr.ForecastService.ForecastLine> retrieveDrafts(Id parentRecordId, Integer parentLevel, ffrr.ViewService.Tab tab)

Retrieves draft forecast line records when expanding a summary item on the Forecast Revenue page for the specified parent item, applying the supplied filters. The returned data includes both detail and summary items (which may then be used to expand deeper into the available data).

Input Parameters

Name Type Description
parentRecordId Id The source record ID of the item that is being expanded.
parentLevel Integer Settings level of item being expanded. For primary level items use 0 or null.
tab ffrr.ViewService.Tab Tab filters to be applied.

Return Value

This service returns a list of ffrr.ForecastService.ForecastLine objects.

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.

//Note: This sample demonstrates how to call the retrieveDrafts method and therefore
//relies on there being data within the system (if no data is available, no data
//will be retrieved). If you wish to add Settings, Templates, Recognition Years
//and Periods, and the corresponding data items then the results that are returned
//will alter and, depending on the data, demonstrate drilling down into data

//Setup the recognition date that we'll be using
Date recognitionDate = Date.newInstance(2013, 01, 05);
Id yearId = [SELECT Id FROM ffrr__RecognitionYear__c WHERE Name = '2017'][0].Id;

//Setup the items that we'll be filtering by. For the purposes of this sample we
//won't add any filters
ffrr.ViewService.Tab filters = new ffrr.ViewService.Tab();
ffrr.ViewService.TabFilter tabFilter = new ffrr.ViewService.TabFilter();

if (UserInfo.isMultiCurrencyOrganization())                  //If this is a multi-currency org...
    tabFilter.currencyName = UserInfo.getDefaultCurrency();  //...set the currency filter
tabFilter.recognitionDate = recognitionDate;
tabFilter.years = new List<Id>{yearId};

filters.tabFilter = tabFilter;

//Note: The objectType is the object type of the group/tab being queried - adjust as necessary
filters.objectType = Opportunity.getSObjectType();

//Extract the top level items (e.g. projects)
List<ffrr.ForecastService.ForecastLine> draftForecastLines = ffrr.ForecastService.retrieveDrafts(null, null, filters);

ID parentRecordID = null;
//Output the retrieved draft lines
for(ffrr.ForecastService.ForecastLine draftForecastLine : draftForecastLines )
{
    System.debug('Forecast line (Root): '+draftForecastLine);

    //To demonstrate drilling down into data, see if there exists a summary line (i.e. something that we can drill into)
    //and record the line's record id.
    if(draftForecastLine.lineType == ffrr.CalculationService.LineType.SUMMARY)
    {
        parentRecordID = draftForecastLine.record.id;
    }
}

//Note: The following section of code demonstrates how to drill into a summary item. It will only
//execute if we identified something to drill into though in the above loop
if (parentRecordID != null)
{
    draftForecastLines = ffrr.ForecastService.retrieveDrafts(parentRecordID, 1, filters);

    //Output each of the child lines that we retrieved
    for (ffrr.ForecastService.ForecastLine draftForecastLine : draftForecastLines)
    {
        System.debug('Forecast line (Child): ' + draftForecastLine);
    }
}

retrieveSpecific

global static List<ffrr.ForecastService.ForecastLine> retrieveSpecific(Id parentRecordId, Integer parentLevel, ffrr.ViewService.Tab tab, Id forecastId)

Retrieves saved forecast line records for a specific forecast record when expanding a summary item on the Forecast Revenue page for the specified parent item, applying the supplied filters. The returned data includes both detail and summary items (which may then be used to expand deeper into the available data).

Input Parameters

Name Type Description
parentRecordId Id The source record id of the item that is being expanded.
parentLevel Integer Settings level of item being expanded. For primary level items use 0 or null.
tab ffrr.ViewService.Tab Tab filters to be applied.
forecastId Id The ID of the forecast record which lines will be retrieved.

Return Value

This service returns a list of ffrr.ForecastService.ForecastLine objects.

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.

//Note: This sample demonstrates how to call the retrieveSpecific method and therefore
//relies on there being data within the system (if no data is available, no data
//will be retrieved). If you wish to add Settings, Templates, Recognition Years
//and Periods, and the corresponding data items then the results that are returned
//will alter and, depending on the data, demonstrate drilling down into data

//Setup the recognition date that we'll be using
Date recognitionDate = Date.newInstance(2013, 01, 05);
Id yearId = [SELECT Id FROM ffrr__RecognitionYear__c WHERE Name = '2017'][0].Id;

//Setup the items that we'll be filtering by. For the purposes of this sample we
//won't add any filters
ffrr.ViewService.Tab filters = new ffrr.ViewService.Tab();
ffrr.ViewService.TabFilter tabFilter = new ffrr.ViewService.TabFilter();

if (UserInfo.isMultiCurrencyOrganization())                  //If this is a multi-currency org...
    tabFilter.currencyName = UserInfo.getDefaultCurrency();      //...set the currency filter
tabFilter.recognitionDate = recognitionDate;
tabFilter.years = new List<Id>{yearId};

filters.tabFilter = tabFilter;

//Note: The objectType is the object type of the group/tab being queried - adjust as necessary
filters.objectType = Opportunity.getSObjectType();

//Note: The following code implies that there exists a forecast record and we have its id.
ID forecastRecordID = 'a0sa00000011op1';

//Extract the top level items (e.g. projects)
List<ffrr.ForecastService.ForecastLine> specificForecastLines = ffrr.ForecastService.retrieveSpecific(null, null, filters, forecastRecordID);

ID parentRecordID = null;
//Output the retrieved draft lines
for(ffrr.ForecastService.ForecastLine specificForecastLine : specificForecastLines )
{
    System.debug('Forecast line (Root): '+specificForecastLine);

    //To demonstrate drilling down into data, see if there exists a summary line (i.e. something that we can drill into)
    //and record the line's record id.
    if(specificForecastLine.lineType == ffrr.CalculationService.LineType.SUMMARY)
    {
        parentRecordID = specificForecastLine.record.id;
    }
}

//Note: The following section of code demonstrates how to drill into a summary item. It will only
//execute if we identified something to drill into though in the above loop
if (parentRecordID != null)
{
    specificForecastLines = ffrr.ForecastService.retrieveSpecific(parentRecordID, 1, filters, forecastRecordID);

    //Output each of the child lines that we retrieved
    for (ffrr.ForecastService.ForecastLine specificForecastLine : specificForecastLines)
    {
        System.debug('Forecast line (Child): ' + specificForecastLine);
    }
}

retrieveLatest

global static List<ffrr.ForecastService.ForecastLine> retrieveLatest(Id parentRecordId, Integer parentLevel, ffrr.ViewService.Tab tab, String category)

Retrieves the latest version of forecast lines when expanding a summary item on the Forecast Revenue page for the specified parent item and forecast category, applying the supplied filters. The returned data includes both detail and summary items (which may then be used to expand deeper into the available data).

Input Parameters

Name Type Description
parentRecordId Id The source record id of the item that is being expanded.
parentLevel Integer Settings level of item being expanded. For primary level items use 0 or null.
tab ffrr.ViewService.Tab Tab filters to be applied.
category String The forecast category to retrieve the latest version of forecast lines for.

Return Value

This service returns a list of ffrr.ForecastService.ForecastLine objects.

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.

//Note: This sample demonstrates how to call the retrieveLatest method and therefore
//relies on there being data within the system (if no data is available, no data
//will be retrieved). If you wish to add Settings, Templates, Recognition Years
//and Periods, and the corresponding data items then the results that are returned
//will alter and, depending on the data, demonstrate drilling down into data

//Setup the recognition date that we'll be using
Date recognitionDate = Date.newInstance(2013, 01, 05);
Id yearId = [SELECT Id FROM ffrr__RecognitionYear__c WHERE Name = '2017'][0].Id;

//Setup the items that we'll be filtering by. For the purposes of this sample we
//won't add any filters
ffrr.ViewService.Tab filters = new ffrr.ViewService.Tab();
ffrr.ViewService.TabFilter tabFilter = new ffrr.ViewService.TabFilter();

if (UserInfo.isMultiCurrencyOrganization())                  //If this is a multi-currency org...
    tabFilter.currencyName = UserInfo.getDefaultCurrency();      //...set the currency filter
tabFilter.recognitionDate = recognitionDate;
tabFilter.years = new List<Id>{yearId};

filters.tabFilter = tabFilter;

//Note: The objectType is the object type of the group/tab being queried - adjust as necessary
filters.objectType = Opportunity.getSObjectType();

//Extract the top level items (e.g. projects)
List<ffrr.ForecastService.ForecastLine> latestForecastLines = ffrr.ForecastService.retrieveLatest(null, null, filters, 'Best');

ID parentRecordID = null;
//Output the retrieved draft lines
for(ffrr.ForecastService.ForecastLine latestForecastLine : latestForecastLines )
{
    System.debug('Forecast line (Root): '+latestForecastLine);

    //To demonstrate drilling down into data, see if there exists a summary line (i.e. something that we can drill into)
    //and record the line's record id.
    if(latestForecastLine.lineType == ffrr.CalculationService.LineType.SUMMARY)
    {
        parentRecordID = latestForecastLine.record.id;
    }
}

//Note: The following section of code demonstrates how to drill into a summary item. It will only
//execute if we identified something to drill into though in the above loop
if (parentRecordID != null)
{
    latestForecastLines = ffrr.ForecastService.retrieveLatest(parentRecordID, 1, filters, 'Best');

    //Output each of the child lines that we retrieved
    for (ffrr.ForecastService.ForecastLine latestForecastLine : latestForecastLines)
    {
        System.debug('Forecast line (Child): ' + latestForecastLine);
    }
}

retrieveByForecastIds

global static List<ffrr.ForecastService.Forecast> retrieveByForecastIds(List<Id> forecastIds)

Retrieves forecasts for the specified forecast ID's. A list of ffrr.ForecastService.Forecast objects is returned.

Input Parameters

Name Type Description
forecastIds List<Id> List of forecast id to be retrieved.

Return Value

This service returns a list of ffrr.ForecastService.Forecast objects.

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.

//Note: This sample demonstrates how to call the retrieveByForecastIDs method and therefore
//relies on there being data within the system (if no data is available, no data
//will be retrieved). If you wish to add Settings, Templates, Recognition Years
//and Periods, and the corresponding data items then the results that are returned
//will alter.

//Create a List to hold existing forecast ids.
List<ID> forecastIDs = new List<ID>();
forecastIDs.add('a1ga00000111sg1');
forecastIDs.add('a1ga00000111sg2');
forecastIDs.add('a1ga00000111sg3');

//Call the method to retrieve the forecasts
List<ffrr.ForecastService.Forecast> forecasts = ffrr.ForecastService.retrieveByForecastIDs(forecastIDs);

retrieveByPrimaryRecordIds

global static List<ffrr.ForecastService.Forecast> retrieveByPrimaryRecordIds(List<Id> primaryRecordIds)

Retieves forecasts by top level parent record ID. A list of ffrr.ForecastService.Forecast objects is returned.

Input Parameters

Name Type Description
primaryRecordIds List<Id> A list of the top level parent ID's.

Return Value

This service returns a list of ffrr.ForecastService.Forecast objects.

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.

//Note: This sample demonstrates how to call the retrieveByPrimaryRecordIDs method and therefore
//relies on there being data within the system (if no data is available, no data
//will be retrieved). If you wish to add Settings, Templates, Recognition Years
//and Periods, and the corresponding data items then the results that are returned
//will alter.

//Create a List to hold existing primary record ids.
List<ID> primaryRecordIDs = new List<ID>();
primaryRecordIDs.add('a1ga00000111sg1');
primaryRecordIDs.add('a1ga00000111sg2');
primaryRecordIDs.add('a1ga00000111sg3');

//Call the method to retrieve the forecasts
List<ffrr.ForecastService.Forecast> forecasts = ffrr.ForecastService.retrieveByPrimaryRecordIDs(primaryRecordIDs);

generateForecasts

global static Id generateForecasts(ffrr.ViewService.Tab tab)

Starts the Async Apex Job that generates the Draft forecasts and forecast lines for all the source records that match the filter criteria. The Job ID is returned.

Input Parameters

Name Type Description
tab ffrr.ViewService.Tab Tab filters to generate forecasts and forecast lines for.

Return Value

This service returns an ID object.

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.

//Note: This sample demonstrates how to call the generate method for a specific object
//within a specific tab, and therefore relies on there being data within the system.
//For the sample to run Settings, Templates and data records should be available. If
//the data isn't available then the results will vary.

//Get the years for which you wish draft forecasts to be generated.
List<ffrr__RecognitionYear__c> years =  [SELECT Id FROM ffrr__RecognitionYear__c];
List<Id> yearIds = new List<Id>();
for(ffrr__RecognitionYear__c year : years)
{
 yearIds.add(year.Id);
}

//Setup the items that we'll be filtering by. For the purposes of this sample we
//won't add any filters
ffrr.ViewService.Tab filters = new ffrr.ViewService.Tab();
ffrr.ViewService.TabFilter tabFilter = new ffrr.ViewService.TabFilter();

if (UserInfo.isMultiCurrencyOrganization())                  //If this is a multi-currency org...
tabFilter.currencyName = UserInfo.getDefaultCurrency();      //...set the currency filter
tabFilter.years = yearIds;

filters.tabFilter = tabFilter;

//Note: The objectType is the object type of the group/tab being queried - adjust as necessary
filters.objectType = Opportunity.getSObjectType();

//Call the generate method to start the Async Apex Job and get the Job id.
ID asyncJobID = ffrr.ForecastService.generateForecasts(filters);

ffrr.ForecastService.Forecast

global class Forecast extends ViewService.Reference

Contains the required details of a forecast record. See other constructors of this class in the Apex Classes under ffrr.ForecastService within Salesforce. See the Salesforce help for more information.

This class extends ffrr.ViewService.Reference

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.

//Create the forecast, source record and year reference data that we'll need
//Create the reference to the forecast
ffrr.ViewService.Reference sampleForecast = new ffrr.ViewService.Reference();
sampleForecast.Id = 'a1ga00000111sg6';
sampleForecast.Name = 'My Forecast';

//Create the reference to the source record
ffrr.ViewService.Reference sampleRecord = new ffrr.ViewService.Reference();
sampleRecord.Id = 'a0ba00000512cc6';
sampleRecord.Name = 'My Record';

//Create a reference to the year
ffrr.ViewService.Reference sampleYear = new ffrr.ViewService.Reference();
sampleYear.Id = 'a0sa00000011op1';
sampleYear.Name = 'My Project';

//Create the Forecast
ffrr.ForecastService.Forecast fSample = new ffrr.ForecastService.Forecast();

//Populate the fields specific to the ffrr.ForecastService.Forecast
fSample.Id = sampleForecast.Id;
fSample.name = sampleForecast.Name;
fSample.record = sampleRecord;
fSample.year = sampleYear;
fSample.version = 1;
fSample.locked = false;
fSample.description = 'My Description';
fSample.category = 'Best';
fSample.totalForecast = 1000000.00;

Properties

Name Type Description
record ffrr.ViewService.Reference The reference to the source record.
year ffrr.ViewService.Reference The reference to the forecast's year.
version Integer The forecast's version.
locked Boolean True = The forecast is locked. False = The forecast is unlocked.
description String The forecast description.
category String The forecast category.
totalForecast Decimal The total forecast amount.

Methods

Forecast

global Forecast()

Forecast

global Forecast(ffrr.ViewService.Reference forecast, ffrr.ViewService.Reference record, ffrr.ViewService.Reference year, Boolean locked, String description, String category, Integer version, Decimal totalForecast)

ffrr.ForecastService.ForecastLine

global class ForecastLine implements Comparable

Contains the required details for the forecast line. See other constructors of this class in the Apex Classes under ffrr.ForecastService within Salesforce. See the Salesforce help for more information.

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.

//Create the forecast, source record, account template, period line, parent/item reference data that we'll need
//Create the fororecast
ffrr.ForecastService.Forecast sampleForecast = new ffrr.ForecastService.Forecast();
sampleForecast.Id = 'a0ba00000512cc6';
sampleForecast.Name = 'My Forecast';

//Create the reference to the source record
ffrr.ViewService.Reference sampleRecord = new ffrr.ViewService.Reference();
sampleRecord.Id = 'a0sa00000011op1';
sampleRecord.Name = 'My Record';

//Create the reference to the account
ffrr.ViewService.Reference sampleAccount = new ffrr.ViewService.Reference();
sampleAccount.Id = 'a0sa00000011ac1';
sampleAccount.Name = 'My Account';

//Create the template
ffrr.CalculationService.Template sampleTemplate = new ffrr.CalculationService.Template();
sampleTemplate.Id = 'a0va00000059tb8';
sampleTemplate.Name = 'My Template';

//Create the period line
ffrr.ForecastService.PeriodLine samplePeriodLine = new ffrr.ForecastService.PeriodLine();
samplePeriodLine.Id = 'a0va00000059pl5';
samplePeriodLine.Name = 'My Period Line';

//Create the parent/item references
ffrr.ViewService.Reference projectReference = new ffrr.ViewService.Reference();
projectReference.Id = 'a0sa00000011op1';
projectReference.Name = 'My Project';

ffrr.ViewService.Reference milestoneReference = new ffrr.ViewService.Reference();
milestoneReference.Id = 'a0ga00000026abx';
milestoneReference.Name = 'My Milestone';

ffrr.ViewService.Reference timecardReference = new ffrr.ViewService.Reference();
timecardReference.Id = 'a0va00000059tb8';
timecardReference.Name = 'My TimeCard';

//Create the ForecastLine
ffrr.ForecastService.ForecastLine flSample = new ffrr.ForecastService.ForecastLine(
        new List<ffrr.ForecastService.Forecast>{sampleForecast},
        sampleRecord,
        sampleRecord.Id,
        sampleTemplate,
        sampleAccount,
        1000000.00,
        2000000.00,
        ffrr.CalculationService.LineType.DETAIL,
        new List<ffrr.ViewService.Reference>{projectReference, milestoneReference, timecardReference},
        new List<ffrr.ForecastService.PeriodLine>{samplePeriodLine}
);

Properties

Name Type Description
forecasts List<ffrr.ForecastService.Forecast> List of forecasts associated with the forecast line.
record ffrr.ViewService.Reference ID and Name of the source record.
account ffrr.ViewService.Reference Account name and ID.
template ffrr.CalculationService.Template The template associated with this line.
totalRevenue Decimal The total revenue amount.
totalForecast Decimal The total forecast amount.
unallocated Decimal The difference between total revenue and total forecast.
periodLines List<ffrr.ForecastService.PeriodLine> List of period information associated with this line.
parentPath List<ffrr.ViewService.Reference> List of ID's and names of the parent items.
lineType ffrr.CalculationService.LineType The type of the forecast line.
hasLockedForecasts boolean True = one or more of the forecasts is locked. False = none of the forecasts is locked.
linkRecordId Id The ID of the source record used to construct the hyperlink in the user interface.

Methods

ForecastLine

global ForecastLine(List<ffrr.ForecastService.Forecast> forecasts, ffrr.ViewService.Reference record, ffrr.CalculationService.Template template, ffrr.ViewService.Reference account, Decimal totalRevenue, Decimal totalForecast, ffrr.CalculationService.LineType lineType, List<ffrr.ViewService.Reference> parentPath, List<ffrr.ForecastService.PeriodLine> periodLines)

ForecastLine

global ForecastLine(List<ffrr.ForecastService.Forecast> forecasts, ffrr.ViewService.Reference record, Id linkRecordId, ffrr.CalculationService.Template template, ffrr.ViewService.Reference account, Decimal totalRevenue, Decimal totalForecast, ffrr.CalculationService.LineType lineType, List<ffrr.ViewService.Reference> parentPath, List<ffrr.ForecastService.PeriodLine> periodLines)

ffrr.ForecastService.PeriodLine

global class PeriodLine extends ViewService.Reference

Contains period information for the associated forecast line record.

This class extends ffrr.ViewService.Reference

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.

//Create the year reference data that we'll need
ffrr.ViewService.Reference sampleYear = new ffrr.ViewService.Reference();
sampleYear.Id = 'a1ga00000111sg6';
sampleYear.Name = '2014';

//Create the period line
ffrr.ForecastService.PeriodLine plSample = new ffrr.ForecastService.PeriodLine();

//Populate the fields specific to ffrr.ForecastService.PeriodLine
plSample.Id = 'a1ga00000111pl1';
plSample.Name = '0001/2014';
plSample.percentage = 10.00;
plSample.value = 1000000.00;
plSample.year = sampleYear;

Properties

Name Type Description
forecast Id The forecast record id associated with the period line.
forecastLine Id The forecast line record id associated with the period line.
year ffrr.ViewService.Reference The ID and name of the year that this period belongs to.
percentage Decimal The percentage value for this period.
value Decimal The forecast amount for this period.

Methods

PeriodLine

global PeriodLine()

PeriodLine

global PeriodLine(Id id, String name, Id forecast, Id forecastLine, Decimal percentage, Decimal value, ffrr.ViewService.Reference year)

© Copyright 2009–2017 FinancialForce.com, inc. All rights reserved. Various trademarks held by their respective owners.