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'));
}