Services CPQ API Developer Reference

ffscpq.AddToProjectFromEstimatePlugin

global with sharing class AddToProjectFromEstimatePlugin

A class that contains plugins to use after the Add to Existing Project action has been completed.

ffscpq.AddToProjectFromEstimatePlugin.IAddToProjectFromEstimatePlugin

global interface IAddToProjectFromEstimatePlugin

Provides an interface that can be used to create plugins to be executed after the Add to Existing Project action is complete. This enables the custom Apex classes to be executed. To set up a plugin, create a fferpcore__Plugin__mdt record with a fferpcore__ExtensionPoint__c of AddToProjectFromEstimatePlugin.IAddToProjectFromEstimatePlugin, and a ClassName that matches an Apex class which implements that interface.

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.

/**
 * This Add to Project From Estimate plugin uses the Add_From_Estimate_Timestamp__c custom date/time field on the Project object.
 * It indicates the most recent time that records were added to a project from an estimate.
 */
global with sharing class AddToProjectTimestampPlugin implements ffscpq.AddToProjectFromEstimatePlugin.IAddToProjectFromEstimatePlugin {
    global ffscpq.AddToProjectFromEstimatePlugin.Response executePlugin(
        ffscpq.AddToProjectFromEstimatePlugin.Request request
    ) {
        /**
         * The resulting data is retrieved from the estimate product instances used in the Add to Existing Project action which executed this plugin.
         * The IDs of the projects related to these estimate product instances are then stored in a set.
         */
        List<ffscpq.AddToProjectFromEstimatePlugin.Result> results = request.getResults();
        Set<Id> projectIds = new Set<Id>();

        for (ffscpq.AddToProjectFromEstimatePlugin.Result result : results) {
            // Only the data of successfully processed estimate product instances are used.
            if (result.getStatus() == ffscpq.EstimateActionStatus.SUCCESSFUL) {
                projectIds.add(result.getProjectId());
            }
        }

        // Select the Add_From_Estimate_Timestamp__c field on the projects. Retrieve the time and date from the org and add it to the Add_From_Estimate_Timestamp__c field.
        List<pse__Proj__c> projects = [
            SELECT Id, Add_From_Estimate_Timestamp__c
            FROM pse__Proj__c
            WHERE Id IN :projectIds
        ];

        for (pse__Proj__c project : projects) {
            project.Add_From_Estimate_Timestamp__c = Datetime.now();
        }

        update projects;

        // Create the response.
        return buildResponse(request);
    }

    private ffscpq.AddToProjectFromEstimatePlugin.Response buildResponse(
        ffscpq.AddToProjectFromEstimatePlugin.Request request
    ) {
        ffscpq.AddToProjectFromEstimatePlugin.Response response = new ffscpq.AddToProjectFromEstimatePlugin.Response();

        response.setRequest(request);

        return response;
    }
}

Methods

executePlugin

Response executePlugin(ffscpq.AddToProjectFromEstimatePlugin.Request request)

A method that executes this plugin implementation.

Input Parameters

Name Type Description
request ffscpq.AddToProjectFromEstimatePlugin.Request A request.

Return Value

A response that parallels the request.

ffscpq.AddToProjectFromEstimatePlugin.Request

global with sharing class Request

The request structure for executing the plugin.

Methods

getResults

global List<ffscpq.AddToProjectFromEstimatePlugin.Result> getResults()

Retrieves a list that contains the response data of the estimate product instances used in the Add to Existing Project action that triggered this plugin.

Return Value

A list of Results.

getAdditionalAggregationFieldPaths

global List<String> getAdditionalAggregationFieldPaths()

Retrieves a string field path of additional fields used to consolidate role requests when creating resource requests.

Return Value

A list of String field paths used in role request consolidation.

isAggregatedBySkills

global Boolean isAggregatedBySkills()

Indicates whether the role requests that were added to the associated project were consolidated by skills.

Return Value

A boolean to indicate if role requests were consolidated by skills.

ffscpq.AddToProjectFromEstimatePlugin.Result

global with sharing class Result

Result containing data of the estimate product instance used in the Add to Existing Project action that executes this plugin.

Methods

getEstimateId

global Id getEstimateId()

The ID of the estimate used in the Add to Existing Project action which executed this plugin.

Return Value

The ID of the estimate associated with the estimate product instances.

getEstimateProductInstanceId

global Id getEstimateProductInstanceId()

The ID of the estimate product instance used in the Add to Existing Project action which executed this plugin.

Return Value

The ID of the estimate product instance.

getProjectId

global Id getProjectId()

The ID of the project used in the Add to Existing Project action which executed this plugin.

Return Value

The ID of the project that records associated with the estimate product instance were added to.

getInternalBudgetId

global Id getInternalBudgetId()

The ID of the internal budget with non billable expenses associated with the estimate product instances used in the Add to Existing Project action which executed this plugin.

Return Value

The ID of internal budget that was created.

getCustomerPurchaseOrderBudgetId

global Id getCustomerPurchaseOrderBudgetId()

The ID of the customer purchase order budget with billable expenses associated with the estimate product instances used in the Add to Existing Project action which executed this plugin.

Return Value

The ID of the customer purchase order budget that was created.

getVendorPurchaseOrderBudgetIds

global Set<Id> getVendorPurchaseOrderBudgetIds()

A set of IDs of vendor purchase order budgets from the estimate vendor line items associated with the estimate product instances used in the Add to Existing Project action which executed this plugin.

Return Value

A set of IDs of the vendor purchase order budgets that were created.

getStatus

global ffscpq.EstimateActionStatus getStatus()

The ffscpq.EstimateActionStatus enum that corresponds to the status of the Add to Existing Project action which executed this plugin.

Return Value

An EstimateActionStatus.

getErrors

global List<ffscpq.AddToProjectFromEstimatePlugin.Error> getErrors()

A list containing errors that resulted from the Add to Existing Project action which executed this plugin.

Return Value

A list of errors.

ffscpq.AddToProjectFromEstimatePlugin.Response

global with sharing class Response

The response structure for executing the plugin.

Methods

Response

global Response()

setRequest

global void setRequest(ffscpq.AddToProjectFromEstimatePlugin.Request sourceRequest)

Set the source request used by this plugin.

Input Parameters

Name Type Description
sourceRequest ffscpq.AddToProjectFromEstimatePlugin.Request - The source request used by this plugin.

getRequest

global ffscpq.AddToProjectFromEstimatePlugin.Request getRequest()

Retrieves the source request used by this plugin.

Return Value

A request.

ffscpq.AddToProjectFromEstimatePlugin.Error

global with sharing class Error

The structure of the errors that occurred during the Add to Existing Project action which executed this plugin.

Methods

getMessage

global String getMessage()

The message of the error that occured during the Add to Existing Project action which executed this plugin.

Return Value

A string error message.

© Copyright 2009–2024 Certinia Inc. All rights reserved. Various trademarks held by their respective owners.