Skip to main content

ProductActionUtil Class

Zuora

ProductActionUtil Class

The ProductActionUtil class contains the methods that can be used to create future dated Update/Delete product actions.

To create and manage future dated amendments, the following Advanced Quoting Configuration Setting must be selected in the Zuora Config tab:

  • Enable Orders
    We are actively soliciting feedback from a small set of early adopters for the Orders feature. If you wish to have access to the feature, submit a request at Zuora Global Support.
Return Type Method Description
zChargeGroup createRatePlanRemoval
(zqu.zChargeGroup ratePlanToRemove,
Date removalDate)
Returns the original charge group that will be removed at a future date.

Currently, this method only accepts newly added charge groups.

zChargeGroup createRatePlanUpdate
(zqu.zChargeGroup ratePlanToUpdate,
Date updateDate)
Returns the original charge group that will be updated at a future date.

Currently, this method only accepts newly added charge groups.

 Quote Class Global Methods

Return Type Method Description
Quote Products addQuoteProducts(List<Product> products) Accepts a list of Product objects and is responsible for incorporating new quote products into the quote. It processes the provided list of Product objects, groups them, adds them to the quote, and returns a list of QuoteProduct objects successfully added. If no new products are provided, it returns an empty list.
Quote Products updateQuoteProducts(List<QuoteProduct> quoteProductsToUpdate) Takes a list of QuoteProduct objects as a parameter and is responsible for updating specific quote products. If no products are provided for an update, it returns the list of updated quote products without performing any additional updates. Otherwise, it returns a list of quote products that were successfully updated.
Quote Products deleteQuoteProducts(List<QuoteProduct> quoteProductsToDelete) Accepts a list of QuoteProduct objects and categorizes quote products to be deleted into two lists: those that can be deleted immediately if the QuoteProduct does not have a charge group, and if the QuoteProduct has a Charge Group, those that need to be deleted upon the save operation, which is returned through this method.
Quote getNewInstanceByEntity(String entityId) Accepts an Entity Id and returns a newly created Quote record instance by populating default values and associating it with the Entity.
Quote createNewInstance(Quote__c quoteSObject) Accepts only a 'Quote__c' record, which is used for the creation of a new 'Quote' instance. It sets up default values and record types for the Quote. Additionally, this method returns the quote record.
zChargeGroup getAddedChargeGroups() Returns the list of added charge groups associated with the quote, allowing external codes or classes to access and work with this information if needed.
zChargeGroup getUpdatedChargeGroups() Returns the list of updated charge groups associated with the quote, allowing external codes or classes to access and work with this information if needed.
zChargeGroup getDeletedChargeGroups() Returns the list of deleted charge groups associated with the quote, allowing external codes or classes to access and work with this information if needed.


QuoteProduct Class Global Methods

Return Type Method Description
zChargeGroup addRatePlanActions(List<zChargeGroup> actionsToAdd) Queue up rate plan actions for addition to the QuoteProduct, and they will be processed or executed later according to the logic within the class.
zChargeGroup updateRatePlanActions(List<zChargeGroup> actionsToUpdate) Stage rate plan actions for updating within the QuoteProduct. It doesn't perform the actual updates immediately but instead prepares a list of rate plan actions to be updated at a later stage or as part of another process. It provides a way to manage and track these updates before they are executed (basically, it prepares the list).
zChargeGroup deleteRatePlanActions(List<zChargeGroup> actionsToDelete) Manage the deletion of rate plan actions by filtering out and moving them from the ratePlanActions list to the ratePlanActions to be deleted list based on the provided actions to Delete.

Code Sample

The following code sample adds a future dated amendment to a quote via the createRatePlanUpdate method.

zqu.Quote currentQuote = zqu.Quote.getInstance('<quoteId>');

//Add a product to the quote
zqu.Product productToAdd = zqu.Product.loadProduct('<productId>');
currentQuote.addQuoteProducts(new List<zqu.Product>{productToAdd});

//Add a future update to the newly added product
zqu.ProductActionUtil actionUtil = new zqu.ProductActionUtil(); 
for (zqu.QuoteProduct qp : currentQuote.getAddedQuoteProducts()) {
    List<zqu.zChargeGroup> futureUpdates = new List<zqu.zChargeGroup>();
    futureUpdates.add(actionUtil.createRatePlanUpdate(qp.chargeGroup, Date.today().addMonths(6)));
    qp.addRatePlanActions(futureUpdates);
}

//Save both the newly added product and the future update
currentQuote.save();