ffscpq.CreateProjectFromEstimatePluginglobal with sharing class CreateProjectFromEstimatePlugin A class that contains plugins to use after the Create Project action has been completed. ffscpq.CreateProjectFromEstimatePlugin.ICreateProjectFromEstimatePluginglobal interface ICreateProjectFromEstimatePlugin Provides an interface that can be used to create plugins to be executed after the Create 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 CreateProjectFromEstimatePlugin.ICreateProjectFromEstimatePlugin, 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 Create 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 used to create a project from an estimate. */ global with sharing class CreateProjectTimestampPlugin implements ffscpq.CreateProjectFromEstimatePlugin.ICreateProjectFromEstimatePlugin { global ffscpq.CreateProjectFromEstimatePlugin.Response executePlugin( ffscpq.CreateProjectFromEstimatePlugin.Request request ) { /** * The resulting data is retrieved from the estimate product instances used in the Create 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.CreateProjectFromEstimatePlugin.Result> results = request.getResults(); Set<Id> projectIds = new Set<Id>(); for (ffscpq.CreateProjectFromEstimatePlugin.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, Create_From_Estimate_Timestamp__c FROM pse__Proj__c WHERE Id IN :projectIds ]; for (pse__Proj__c project : projects) { project.Create_From_Estimate_Timestamp__c = Datetime.now(); } update projects; // Create the response. return buildResponse(request); } private ffscpq.CreateProjectFromEstimatePlugin.Response buildResponse( ffscpq.CreateProjectFromEstimatePlugin.Request request ) { ffscpq.CreateProjectFromEstimatePlugin.Response response = new ffscpq.CreateProjectFromEstimatePlugin.Response(); response.setRequest(request); return response; } } MethodsexecutePluginResponse executePlugin(ffscpq.CreateProjectFromEstimatePlugin.Request request) A method that executes this plugin implementation. Input Parameters
Return ValueA response that parallels the request. ffscpq.CreateProjectFromEstimatePlugin.Requestglobal with sharing class Request The request structure for executing the plugin. Methods
getResultsglobal List<ffscpq.CreateProjectFromEstimatePlugin.Result> getResults() Retrieves a list that contains the response data of the estimate product instances used in the Create Project action that executed this plugin. Return ValueA list of Results. getAdditionalAggregationFieldPathsglobal List<String> getAdditionalAggregationFieldPaths() Retrieves a string field path of additional fields used to consolidate role requests when creating resource requests. Return ValueA list of String field paths used in role request consolidation. isAggregatedBySkillsglobal Boolean isAggregatedBySkills() Indicates whether the role requests that were used to create a project were consolidated by skills. Return ValueA boolean to indicate if role requests were consolidated by skills. ffscpq.CreateProjectFromEstimatePlugin.Resultglobal with sharing class Result Result containing data of the estimate product instance used in the Create Project action that executes this plugin. Methods
getEstimateIdglobal Id getEstimateId() The ID of the estimate used in the Create Project action which executed this plugin. Return ValueThe ID of the estimate associated with the estimate product instances. getEstimateProductInstanceIdglobal Id getEstimateProductInstanceId() The ID of the estimate product instance used in the Create Project action which executed this plugin. Return ValueThe ID of the estimate product instance. getProjectIdglobal Id getProjectId() The ID of the project used in the Create Project action which executed this plugin. Return ValueThe ID of the project that was created. getInternalBudgetIdglobal Id getInternalBudgetId() The ID of the internal budget with non billable expenses associated with the estimate product instances used in the Create Project action which executed this plugin. Return ValueThe ID of internal budget that was created. getCustomerPurchaseOrderBudgetIdglobal Id getCustomerPurchaseOrderBudgetId() The ID of the customer purchase order budget with billable expenses associated with the estimate product instances used in the Create Project action which executed this plugin. Return ValueThe ID of the customer purchase order budget that was created. getVendorPurchaseOrderBudgetIdsglobal 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 Create Project action which executed this plugin. Return ValueA set of IDs of the vendor purchase order budgets that were created. getStatusglobal ffscpq.EstimateActionStatus getStatus() The ffscpq.EstimateActionStatus enum that corresponds to the status of the Create Project action which executed this plugin. Return ValueAn EstimateActionStatus. getErrorsglobal List<ffscpq.CreateProjectFromEstimatePlugin.Error> getErrors() A list containing errors that resulted from the Create Project action which executed this plugin. Return ValueA list of errors. ffscpq.CreateProjectFromEstimatePlugin.Responseglobal with sharing class Response The response structure for executing the plugin. Methods
Responseglobal Response() setRequestglobal void setRequest(ffscpq.CreateProjectFromEstimatePlugin.Request sourceRequest) Set the source request used by this plugin. Input Parameters
getRequestglobal ffscpq.CreateProjectFromEstimatePlugin.Request getRequest() Retrieves the source request used by this plugin. Return ValueA request. ffscpq.CreateProjectFromEstimatePlugin.Errorglobal with sharing class Error The structure of the errors that occurred during the Create Project action which executed this plugin. MethodsgetMessageglobal String getMessage() The message of the error that occured during the Create Project action which executed this plugin. Return ValueA string error message. |