Skip to main content

QPlanBuilder Class

Zuora

QPlanBuilder Class

This functionality is in the Early Adopters phase. We are actively soliciting feedback from a small set of early adopters.

This article describes the global method of the QPlanBuilder class. The QPlanBuilder class is designed to build QPlan objects. The QPlanBuilder provides a global method to create new quote line items from product catalog records.

QPlanBuilder Global Methods

The QPlanBuilder class includes the following global methods.

Method Type Description
makeFromCatalog(Id quoteId, List<Id> productRatePlanIds) List<QPlan>

Makes a List of QPlans from Product Catalog based on the Product Rate Plan Ids passed into the method. This method is used to build NewProduct QPlans.

Security Considerations

  • Users must have the Object Read access to the following objects and Sharing access to the relevant records when triggering an action to set up new products through QPlanBuilder:
    • ZProduct
    • ProductRatePlanCharge
    • ProductRatePlanChargeTier
    • UnitOfMeasure
  • Users do not need the Read access to the ProductRatePlan object, as Sharing permission for Master-Child relationships is controlled by the Master object, ZProduct.
  • Users must have the Sharing access to a Quote in order to use QPlanBuilder to stage products to be added to the Quote. Otherwise, an exception is thrown prompting to check for access to the quote.

Sample Code

Make New Quote Plans from the Product Catalog

The following sample code shows how to build a list of QPlans for a Quote based on a list of Product Rate Plan Ids.

public void test(){
    String quoteId = 'quoteId_xxx';
    List<Id> productRatePlanIds = new List<Id>{'rpId_xxx1', 'rpId_xxx2', 'rpId_xxx3'};
    List<zqu.QPlan> plans = QPlanBuilder.makeFromCatalog(quoteId, productRatePlanIds);
    System.assertEquals(plans.size() == 3);
    for(zqu.QPlan plan : plans){
        // Check the type of Plan by looking at the Amendment
        System.assertEquals('NewProduct', qPlan.getAmendment.get('zqu__Type__c'),);
    }
}