QTier Class
This article describes the global methods in the QTier class. The QTier class:
- Is designed to minimally represent the QuoteChargeTier objects.
- Is used to interface with QuoteChargeTier objects in the CPQ X.
- Contains utility methods for setting tier level fields.
- Handles recalculation upon field value changes.
QTier Global Methods
The QTier class includes the following global methods.
Method | Type | Description |
---|---|---|
get(String fieldName) | Object |
Retrieves a field value from the QuoteChargeTier record. |
getRecord | QuoteCharge_Tier__c | Retrieves the QuoteChargeTier record that the QTier represents. |
isChanged | Boolean |
Returns true if the state of this record is different from what is last retrieved from DB. |
isSaved | Boolean |
Returns true if this record has been inserted into the DB. |
put(String fieldName, Object value) | Object |
Sets a field value on the QuoteChargeTier record. Returns the previous field value. |
Recalculation Table
A put()
operation on certain fields will trigger a recalculation process. These trigger conditions are detailed in the table below.
When any of these fields are not valid for a particular Charge Model or Charge Type, slight modifications to these formulas will be made to accommodate.
Field Changed | Action(s) Taken | Recalculation Logic |
---|---|---|
Discount__c | Recalculation is applied |
Effective Price = List Price - (List Price * (Discount / 100)) |
Effective_Price__c | Recalculation is applied |
Effective Price = List Price - (List Price * (Discount / 100)) |
Price__c | Recalculation is applied | Discount = (ListPrice - Effective Price) * (100 / List Price) |
Sample Code
Get and Set fields from a Quote Charge Tier
The following sample code shows how to set and retrieve field values on the QuoteChargeTier record through the QTier.
public void test(zqu.QTier tier) { // Get Initial Value System.assertEquals('My Value', (String) tier.get('MyTierField__c')); System.assertEquals(false, tier.isChanged()); // Get Updated Value tier.put('MyTierField__c', 'My New Value'); System.assertEquals('My New Value', (String) tier.get('MyTierField__c')); System.assertEquals(true, plan.isChanged()); }
Update a Field that Results in a Recalculation
The following sample code shows how the recalculation is triggered when updating the Discount__c field value.
public void test(zqu.QTier tier) { // Assert Initial values System.assertEquals(10, (Double) tier.get('zqu__Price__c')); System.assertEquals(0, (Double) tier.get('zqu__Discount__c')); System.assertEquals(10, (Double) tier.get('zqu__Effective_Price__c')); System.assert(Equalsfalse, tier.isChanged()); // Update value and test recalculation tier.put('zqu__Discount__c', 50); System.assertEquals(10, (Double) tier.get('zqu__Price__c')); System.assertEquals(50, (Double) tier.get('zqu__Discount__c')); System.assertEquals(true, plan.isChanged()); System.assertEquals(5, (Double) tier.get('zqu__Effective_Price__c')); }