Defining the Pricing Method
In this step, you will calculate the prices that will be associated to each sales breakdown line. In order to understand how pricing calculation works, have a look at the following definitions.
Definition: For each codified sales breakdown line, the pricing matrix will define how the > price(s) for that line will be calculated.
- In all cases, the price(s) for a sales breakdown line will be calculated using intermediate pricing variables (variables that do intermediate calculations). These calculations can be designed via different tools:
- Using an ad hoc function: sum of sub-lines If a pricing variable for a certain line uses this function, its price will be automatically calculated by the CPQ engine as a sum of the prices of all its sub-lines.
- Using a pricing grid A pricing grid is like a matrix BRC, which can use different input aliases in order to issue a price. The pricing grid can manage prices across different periods and for different currencies.
- Using a factor grid An increase grid is like a matrix BRC, which can use different input aliases in order to issue a factor (meaning, a percentage that needs to be applied to a certain base price). The factor grid can manage factors across different periods (but is independent of a currency).
- Using a BRC A BRC will also allow you to calculate a price or a factor. This should only be done if you cannot design your price with the previously mentioned tools.
For each matched sales breakdown line, the pricing matrix will merely be used to discover the price ranges to be used when looking up the standard item prices in the standard item pricing grid(s).
Example:
In this example, only 2 lines are present. The price of the root line will be calculated based on the sum of its sub-lines (only one in this case). The price of the sub-line is based on a base price (depending on the color), on a markup (depending on the type of customer – end-customer or distributor) and a discount (depending on the volume):
The pricing matrix for the root line can be represented as follows:
The pricing matrix for the sub-line can be represented as follows:
Define the Pricing Matrix
In order to define the pricing matrix, you first need to know how the price for the current sales breakdown line needs to be calculated. Once you know that, you are ready to build your pricing matrix.
The pricing matrix shows 3 sections:
The intermediate pricing variables
- These variables correspond to the basic building blocks of the sales breakdown line price. They can be defined using different tools, as seen here above: ad hoc functions (sum of sub-lines), pricing grids, factor grids, BRC. Whatever option you take to calculate the price, please take into account that there is an initial value, which will allow you to put in a default price that will be used by the system in case the other tools do not issue a result.Tip: It is recommended to use the initial value, because it will allow you to easily identify during modeling which pricing grids, factor grids or BRC did not issue a (correct) result.
The resulting pricing variables
- The resulting pricing variables can only be calculated by BRC. In most circumstances, the BRC will be formula-based.Tip: Although the intermediate variables are referenced using their name and their rank (e.g. basePrice[1]), resulting variables are currently not. They are merely referenced by their rank (1, 2, etc.).
The pricing matrix map
- Each time you create a pricing grid or a factor grid, it will be added to the pricing matrix map, which will allow you to easily go back and forth between the different grids and the original pricing matrix itself.information: The pricing matrix will only be calculated providing that the associated sales
breakdown line is codified. Indeed, if a sales breakdown line is matched with one or multiple standard items, it will automatically be calculated as the sum of all matching standard items.
information: Each intermediate variable is stored in a CPQ object and can be targeted in the BRCs (in particular in the BRC associated to the Resulting Variable) using a CPE.Here is an example of a CPE identifying the first price range of the “myIntermediateVariable” pricing variable:
CPE.rootCP.gp.SBL/Total.SBL/myNestedLine1[current]
.PRGM/myPricingMethodName.myIntermediateVariable[1].value
Warning: Please note that the Sales Method name is not part of the CPE but is given in the configuration file at runtime. Therefore, only one Sales Method can be used at a time.information: It is not possible to associate a Range to an intermediate variable in the table. Indeed, the various ranges of the variable are defined while specifying the content of the variable (through a Pricing, Factor grid, or a BRC.)E.g. for a BRC returning a variable value, the Output parameters are both the Variable AND its range ( CPE.rootCP.gp.SBL/Total.SBL/myLine
.PRGM/myPricingMethodName.myIntermediateVariable.rank) so that you can associate a different value per rank of Variable.
Do not: At this point in time, the resulting variables in a pricing matrix can only depend on the intermediate variables. Moreover, the intermediate variables can only depend on CPE coming from the configuration structure or on external (session) CPE. This means that pricing variables in one pricing matrix cannot depend on pricing variables in another matrix.
In order to define a pricing matrix, please proceed as follows:
How-To:
- [In the explorer]
- Select the explorer corresponding to the sales method you are working with.
- [In the menu toolbar]
- Select the view corresponding to the pricing method you want to define.
- [In the explorer]
- Select the line for which you want to define the pricing matrix by clicking on its description.
- [In the pricing matrix]
Enter the intermediate variables, by providing their
- Name
- Description
- Initial value
- Way of calculation (tick the checkbox or drag & drop the BRC)
- [In the pricing matrix]
Enter the resulting variables, by providing their
- Rank
- Initial value
- BRC
- [In the menu toolbar]
- Execute the Save functionWarning: An initial value allows you to define a “fallback” price: a price which will be used if there is no pricing BRC attached OR if the pricing BRC does not issue a price for the given input.
- Execute the Save function
How to Define a Pricing grid
You will have to define a pricing grid for each variable associated to this type of grid.
Definition: A Pricing Grid allows to associate to a variable various prices identified by their Range, Currency and Validity Period, depending on the values of Aliases (identifying CPE elements) if necessary.
A Pricing grid section contains the following information:
| FIELD | REQUIRED | DESCRIPTION |
|---|---|---|
| Range | Yes | Range value. It corresponds to the range for which you define the price. Several ranges can be defined in a single Pricing grid for a given Currency and Period (and Aliases conditions) |
| FIELD | REQUIRED | DESCRIPTION |
|---|---|---|
| Operator (Alias) | Yes | The following operators can be used: For every alias type Equal (alias = value) Not Equal (alias <> value) In (alias in {value 1, value 2, …}) Not in (alias not in {value 1, value 2, …}) For integer, numeric, monetary and date aliases Less than (alias < value) Less than or equal to (alias <= value) Greater than (alias > value) Greater than or equal to (alias >= value) Between (value 1 <= alias <= value 2) < value < (value 1 < alias < value 2) <= value < (value 1 <= alias < value 2) For text-based aliases Like Not Like Note: For list-based aliases, only the “equals” operator can be used. |
| Alias | No | Depending on the operator, it describes the domain of values taken by the Alias. |
| Period(s) | Yes | Price of the variable for the given period (and with the conditions defined by the alias). As many periods as necessary can be added to the grid. |
How-To:
- [In the explorer]
- Select the explorer corresponding to the sales method you are working on.
- [In the menu toolbar]
- Select the sub-step corresponding to the pricing method you want to define.
- [In the explorer]
- Select the line on which you want to define the pricing properties
- [In the pricing matrix map]
- Click on the box corresponding to the variable for which you want to define a pricing grid.
- The pricing grid now opens.
- Click on the box corresponding to the variable for which you want to define a pricing grid.
- [In the menu toolbar]
- Select the currency on which you want to work and execute the Currency function.
- [In the menu toolbar]
- Click on 'View/Edit Mode' function in order to make the table "editable".
[In the menu toolbar]
In order to create a period,
- Execute the Add period function
- In the popup, enter a name (which will be used as the column heading) and the start date.
- Click on "OK".
- The period is now added as a column of the pricing grid.
[In the menu toolbar]
In order to add a pricing alias
- Execute the Add alias function
- In the popup, enter a name and a CPE. Provide an operator if it has not been deducted.
- Click on "OK"
- The alias is now added as a column of the pricing grid.
- [Via the table and the menu toolbar]
- Insert lines, duplicate lines and enter values for different ranges.
- [Via the menu toolbar]
- Execute the Save function.
How to specify the Factor grid content
You will have to define a factor grid for each variable associated to this type of grid.
Definition: A Factor Grid allows to give to a variable various values identified by their Range and Validity Period, depending on the values of Aliases if necessary.
A Factor grid section contains the same fields as a Pricing Grid.
How-To:
Same process as for Pricing Grid (Except that no currency is associated to the factor grid by definition)
Moreover the Menu Toolbar, ‘Group Pricing’ is replaced by ‘Group Factors’. Please refer to How to Define a Pricing grid.
How to Remove a Period/Alias from a grid
In order to remove a period from a pricing grid or a factor grid, proceed as follows:
How-To:
- [In the explorer]
- Select the explorer corresponding to the sales method you are working on.
- [In the menu toolbar]
- Select the sub-step corresponding to the pricing method you want to define.
- [In the explorer]
- Select the line on which you want to define the pricing properties
- [In the pricing matrix map]
- Click on the box corresponding to the variable for which you want to define a pricing grid.
- The pricing grid now opens.
- Click on the box corresponding to the variable for which you want to define a pricing grid.
- [In the menu toolbar]
- Select the currency on which you want to work and execute the Currency function.
- [In the menu toolbar]
- Click on ‘View/Edit Mode’ function in order to make the table “editable”.
- [In the menu toolbar]
- Execute the Remove period function after having selected the period to be deleted in the combobox.
- [In the menu toolbar]
- Execute the Save function.
In order to remove an alias from a pricing grid or a factor grid, proceed as follows:
How-To:
- [In the explorer]
- Select the explorer corresponding to the sales method you are working on.
- [In the menu toolbar]
- Select the sub-step corresponding to the pricing method you want to define.
- [In the explorer]
- Select the line on which you want to define the pricing properties
- [In the pricing matrix map]
- Click on the box corresponding to the variable for which you want to define a pricing grid.
- The pricing grid now opens.
- Click on the box corresponding to the variable for which you want to define a pricing grid.
- [In the menu toolbar]
- Select the currency on which you want to work and execute the Currency function.
- [In the menu toolbar]
- Click on 'View/Edit Mode' function in order to make the table "editable".
- [In the menu toolbar]
- Execute the Remove alias function after having selected the alias to be deleted in the combobox.
- [In the menu toolbar]
- Execute the Save function.
