zCharge Class
The zCharge class provides a number of values and variables relating to subscription charges.
zCharge Properties
The zCharge class includes the following properties.
Property | Type | Description |
---|---|---|
BILL_CYCLE_DAY | String | The day of the month customer is billed for the charge. |
BILL_CYCLE_TYPE | String |
The billing day for the charge. You can override the value inherited from the Product Rate Plan Charge, but only when creating a new subscription or a New Product amendment. The following values are supported:
The SpecificDayofWeek value is available in the version 7.43 or later. If you set this field toSpecificDayofMonth , you must specify which day of the month as the billing day for the charge in the BILL_CYCLE_DAY field. If you set this field to SpecificDayofWeek, you must specify which day of the week as the billing day for the charge in the WEEKLY_BILL_CYCLE_DAY field. |
CHARGE_TYPE | String |
The type of the charge as defined in the product catalog. |
chargeObject | SObject | Stores the QuoteCharge and QuoteRatePlanCharge field values. |
chargeOverrideReferenceId | String |
The quote rate plan charge id of the initially added charge that is being updated by the current charge. Read-only. |
chargeTiersObjects | List <QuoteCharge_Tier__c> |
A list of the custom tiers or default product catalog tiers based on the value of the hasCustomTiers property:
This property is available as of Zuora Quotes 6.0. Use the populateCustomChargeTiers method to populate custom tiers. |
customfieldNameValueMap | MAP | A map of the custom field name to the label |
DISCOUNT | String | Discount |
DISCOUNT_LEVEL | String | For the Discount type charge, the level at which the discount should apply to. |
EFFECTIVE_PRICE | String | Effective price of the charge |
END_DATE_CONDITION | String | Defines when the charge ends after the charge trigger date. |
fieldsChangedInRulesEngine | List < String > | Defines all of the charge fields modified by the Rules Engine. |
hasCustomTiers | Boolean |
A flag that you can get or set. Indicates if the current charge has custom tiers. Values:
This property is available as of Zuora Quotes 6.0. |
Id | Id |
If the charge is saved, it has a Salesforce record ID. Otherwise null. Read-only. |
INCLUDED_UNITS | String |
Included units in the charge |
isDiscountEditable | Boolean |
Specifies whether the DISCOUNT is editable. The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isDiscountLevelEditable | Boolean |
Specifies whether DISCOUNT_LEVEL is editable. The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isEffectivePriceEditable | Boolean |
Specifies whether the EFFECTIVE_PRICE is editable. The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isEndDateConditionEditable | Boolean |
Specifies whether END_DATE_CONDITION is editable. The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isIncludedUnitsEditable | Boolean |
Specifies whether the INCLUDED_UNITS is editable. The condition is based on the combination of CHARGE_TYPE and MODEL.d MODEL properties combination. Read-only. |
isListPriceBaseEditable | Boolean | Specifies whether the LIST_PRICE_BASE is editable.
The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isListPriceEditable | Boolean | Specifies whether LIST_PRICE is editable. |
isPeriodEditable | Boolean |
Specifies whether PERIOD is editable. The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isQuantityEditable | Boolean |
Specifies whether the QUANTITY is editable. The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isSpecificBillingPeriodEditable | Boolean |
Specifies whether SPECIFIC_BILLING_PERIOD is editable. The condition is based on the combination of CHARGE_TYPE, PERIOD, and MODEL. Read-only. |
isSpecificEndDateEditable | Boolean |
Specifies whether SPECIFIC_BILLING_PERIOD is editable. The condition is based on the combination of CHARGE_TYPE, END_DATE_CONDITION, and MODEL. Read-only. |
isTotalEditable | Boolean |
Specifies whether the TOTAL is editable. The condition is based on the combination of CHARGE_TYPE and MODEL. Read-only. |
isUpToPeriodsEditable | Boolean |
Specifies whether UPTO_PERIODS is editable. The condition is based on the combination of CHARGE_TYPE, END_DATE_CONDITION, and MODEL. Read-only. |
isUpToPeriodsTypeEditable | Boolean |
Specifies whether UPTO_PERIODS_TYPE is editable. The condition is based on the combination of CHARGE_TYPE, END_DATE_CONDITION, and MODEL. Read-only. |
LIST_PRICE | String |
The list price of the charge as defined in the product catalog. |
LIST_PRICE_BASE | String |
The term a recurring list price charge is based on. |
LIST_TOTAL | String |
The total list price of the charge as defined in the product catalog. Read-only. |
MODEL | String |
The charge model as defined in the product catalog. Read-only. |
NAME | String |
The charge name as defined in the product catalog. Read-only. |
PERIOD | String |
The recurring period of the charge as defined in the product catalog. |
PRODUCT_RATE_PLAN_CHARGE_SFDC_ID | String |
Used for binding records of Quote Rate Plan Charges to the Product Rate Plan Charge object in the product catalog. Read-only. |
PRODUCT_RATE_PLAN_CHARGE_ZUORA_ID | String |
Used for binding records of Quote Rate Plan Charges to the Zuora Product Rate Plan Charge. Read-only. |
QUANTITY | String | Quantity of the charge |
SPECIFIC_BILLING_PERIOD | String | Customizes the number of months or weeks for the billing period of the charge. |
SPECIFIC_END_DATE | String | The specific date on which the charge ends. |
SUBSCRIPTION_RATE_PLAN_CHARGE_ID | String | Used for binding records of Quote Rate Plan Charge to the Zuora Subscription Rate Plan Charge. |
TOTAL | String | Total |
UNIT_OF_MEASURE | String |
The unit of measure used for this charge as defined in the product catalog. Read-only. |
UPTO_PERIODS | String | Specifies the length of the period during which the charge is active. |
UPTO_PERIODS_TYPE | String | The period type used to define when the charge ends. |
WEEKLY_BILL_CYCLE_DAY | String |
The day of the week as the bill cycle day for the charge. This field is supported in the version 7.43 or later of Zuora Quotes. The following values are accepted:
|
zCharge Global Methods
The zCharge class includes the following global methods.
Method | Return Type | Description |
---|---|---|
getQuoteRatePlanChargeZuoraId | string | Gets the quote rate plan charge Zuora ID |
overrideListPrice (Decimal newValue) |
void |
Changes the LIST_PRICE to the specified newValue. Supported Versions: 7.0+ |
populateCustomChargeTiers (List<QuoteCharge_Tier__c> tiers) |
void |
Populates the custom tiers for required for calculations. This method is available as of Zuora Quotes 6.0. |
Sample Codes
The following sample code sets custom tiers of a volume pricing charge by updating an existing tier and by adding a new tier:
String quoteId = 'a0Ei000000810ZWEAY'; //a0Ei000000810ZWEAY List<zqu.zChargeGroup> chargeGroups = zqu.zQuoteUtil.getChargeGroups(quoteId); List<zqu.zChargeGroup> chargeGroupsToUpdate = new List<zqu.zChargeGroup>(); List<zqu__QuoteCharge_Tier__c> customTiers = new List<zqu__QuoteCharge_Tier__c>(); //Get the first charge group which should at least contain one Recurring Volume Pricing Charge. zqu.zChargeGroup chargeGroup = chargeGroups[0]; for ( zqu.zCharge charge : chargeGroup.zCharges ) { if( charge.CHARGE_TYPE == 'Recurring' && charge.MODEL == 'Volume Pricing' ) { System.debug( 'custom charge:'+ charge.Id); //Specific custom tiers for current volume pricing charge charge.hasCustomTiers = true; //Get the default tiers from Product Catalog List<zqu__QuoteCharge_Tier__c> tiers = charge.chargeTiersObjects; //Update last tier through giving it 50% discount tiers.get( tiers.size() - 1 ).zqu__Effective_Price__c = tiers.get( tiers.size() - 1 ).zqu__Price__c * 0.5; //Please note the discount should be '50', not '0.5' tiers.get( tiers.size() - 1 ).zqu__Discount__c = 50; //Reset the 'EndingUnit__c' for last tier tiers.get( tiers.size() - 1 ).zqu__EndingUnit__c = 30; zqu__QuoteCharge_Tier__c tier = new zqu__QuoteCharge_Tier__c(); tier.name = String.valueOf( tiers.size() + 1 ); tier.zqu__Tier__c = tiers.size() + 1; //Please set 'StartingUnit__c' correctly based on UOM precision. tier.zqu__StartingUnit__c = 30 + 1; tier.zqu__EndingUnit__c = 40; tier.zqu__Effective_Price__c = 5; tier.zqu__Price__c = 10; //Please note the discount should be '50', not '0.5' tier.zqu__Discount__c = 50; tier.zqu__PriceFormat__c = 'Per Unit'; //Add a new tier into the default tiers tiers.add( tier ); //We should make sure we pass all tiers for current charge. charge.populateCustomChargeTiers( tiers ); break; } } // Persist the updates together with custom tiers chargeGroupsToUpdate = zqu.zQuoteUtil.updateChargeGroups(chargeGroups); zqu.zChargeGroup updatedChargeGroups = chargeGroupsToUpdate[0]; for ( zqu.zCharge charge : updatedChargeGroups.zCharges ) { if( charge.hasCustomTiers == true ) { System.debug('Charge Name: ' + charge.Name + ' has custom tiers:' + charge.chargeTiersObjects); } }
// Define custom field definitions before getting charge groups. zqu.GlobalCustomFieldDefinition.CHARGE_FIELDS = new Set<String>{ 'My_Custom_Field_1__c', 'My_Custom_Field_2__c' }; chargeGroupsToUpdate = zqu.zQuoteUtil.getChargeGroups(chargeGroups); zqu.zChargeGroup updatedChargeGroups = chargeGroupsToUpdate[0]; for ( zqu.zCharge charge : updatedChargeGroups.zCharges ) { // Read a custom field on zCharge charge.chargeObject.get('My_Custom_Field_1__c'); // Update a custom field on zCharg charge.chargeObject.put('My_Custom_Field_1__c', new-value-to-assign); } zqu.zQuoteUtil.updateChargeGroups(chargeGroups);