Data Model - Columns, Lines, & Fields
Columns & Fields Overview
The Columns & Fields menu allows you to:
- Define columns, line templates, and cells
- Define fields
- Manage system columns and fields
When a new quote model is created, by default it has 4 system columns: Item, Quantity, Update Date, and Creation Date. It also has one PRODUCT type line template. You can edit these but they cannot be deleted.
The following are the 3 main parts of the screen:
ACTION BAR (1)
- Add a column or line template,
- Duplicate,
- Delete,
- View and edit resolution variables,
- View and edit resolution order
- View line template hierarchy,
- Filter the grid representing columns and line templates,
- Arrange columns.
Filtering Columns and Lines
From the filter button, you are able to filter the elements displayed in the page:
- Columns - you can select columns you want to display .
- Line Templates - you can select line templates you want to display.
- Components - you can select components you want to display. All columns defined in the selected components are displayed. This filter doesn't affect the display of the lines.Note: This filter affects only the display in the Quote Designer. It doesn't affect the display at runtime (which is defined on the Grid widget)
LEFT PANE (2)
The left pane shows different information according to what is selected in the grid (3) which can be a column, line, or cell:
- Nothing selected in the grid (3) = the left pane (2) shows the list of columns, lines templates, authorized line templates, and dynamic filters. If you click on a column or line on the left (2), it is selected in the quote model on the right (3).
- A line, column or cell is selected in the grid (3) = information for that selection is shown on the left (2) and you can edit the information.
The left pane (2) is made up of collapsible headings. Click on the arrows next to the headings to
open and close the lists. Click on an item in the list to edit the information. You can also hide the left pane by clicking the arrow on the bar that separates the left pane from the right pane. Click again to re-open the left pane.
GRID (3)
The grid shows all columns, line templates, and cells of the quote model. The first column (type of line template) and first row (column headers) are docked. The order of the line templates doesn't affect the resolution order. The columns do not represent the order they will be shown in Performance Quoting which is defined in the Layout (User Interface menu). You can:
- Move columns and lines (drag and drop),
- Select a column, line template, or cell by clicking on it,
- Copy, paste, and delete with a right click on a column, line, or cell.
QUOTE MODEL DEFINITION
When there is no line selected on the page, the left pane contains information related to the quote model.
COLUMNS
This section lists all columns available in the quote model. You can click on a column to edit it (see Columns)
LINE TEMPLATES
This section lists all line templates available in the quote model. You can click on a line template to
edit it (see Line Templates)
AUTHORIZED LINE TEMPLATES
This section lists all line templates authorized at root level. Indeed, if a line template shouldn't be added at root level in the quote (for example, a line template can be added only in a folder or as a sub-line), you should remove it from this list.
DYNAMIC FILTERS
This section lists all dynamic filters defined at quote level. If a dynamic filter related to columns is added here, this domain will be applied on all line templates. In addition, this section contains all dynamic filters related to fields in order to be attached to the quote.
Columns
Columns are generic - they only have a name, description, and type.
ADD A COLUMN
- Click Add Column at the top of the screen.
- Set the Number of columns to create to 1 (see next paragraph to create multiple columns).
- Fill in the name and description.
- Select the type:
| TYPE | DESCRIPTION | TYPE | DESCRIPTION |
|---|---|---|---|
| Boolean | Monetary | You must select the currency | |
| Integer | Percentage | ||
| Long | JSON | ||
| Big Decimal | XML | ||
| String | Locale | ||
| Date Time | Unit of Measure | ||
| Locale Date | HTML | ||
| Business | Used to store SI (from CPQ catalog) or DIMENSION (from Dimension service) | URL | |
| Currency | Scale Grid | Use for columns that use a scale grid. You must select a currency | |
| Period | This type of column is available only if the option is activated on your environment. |
- Check Encrypted if necessary (only available if this option is enabled on your environment).
- Add additional properties
- Read Permissions - select the list of session states you want to grant the read permission
- Views / Components - select the components where you want to add this column
- Click Add.
If a column is selected in the grid when you create a new column, it is inserted after the selected column. If no column is selected, it is inserted at the end of the row. Once created, the new column is automatically selected.
From the action bar, you can also Duplicate and Delete columns (except for the system columns).
This action is final and data cannot be recovered.
ADD SEVERAL COLUMNS SIMULTANEOUSLY
To add several columns at the same time, proceed as follows:
- Click Add Column at the top of the screen.
- Set the Number of columns to create.
- Fill in a name and description.
- The naming convention is that the first created column will have exactly that name. The subsequent ones will have a prefix with a number (e.g. Name, Name_2, Name_3...).
- The description is exactly the same for all created columns.
- Select the type (see previous paragraph). The same type will apply to all columns created.
- Check Encrypted if necessary (only available if this option is enabled on your environment). This information will apply to all columns created.
- Add additional properties
- Read Permissions: select the list of session states you want to grant the read permission. This information will apply to all columns created.
- Views / Components: select the components which you want to add to this column. This information will apply to all columns created.
- Click Add.
EDIT A COLUMN
To edit a column, select the column in the grid by clicking on the column heading (the column is highlighted yellow) or click on the column in the list of columns in the left pane.
Identification
In the left pane, you can edit the identification (name, description, type, linked period column, and encrypted). Depending on the type of column, the information may be different, for example if the
type is monetary or scale grid, you must update the currency. Changes made will automatically be applied to the column in the grid. To go back to the list of columns, click on the name of the column.
This action is final and data cannot be recovered.
Note:
The encrypted option is only available if the option is activated on your environment.
The description is stored and displayed for the locale that is selected. You can also choose to display the name or description in the application by clicking the dropdown menu in the upper right corner and changing the display preferences.
Multi-select
This option allows the end user to select multiple values when answering to this column cells.
This option is only available for following datatypes: Integer, Long, Big Decimal, String, Business, Percentage.
Show Converted Prices
Monetary and Monetary per quantity columns have an option to automatically show converted prices in the quote UI.
Setting that option to true provides you the access to a widget, which shows you the current cell's price converted in all currencies declared in the quote model.
This option is available only if at least 2 currencies are declared in the quote model.
Conditional Formatting
Conditional formatting can be defined on a column. Then, on cells, the user can disable the conditional formatting if needed (by default, the conditional formatting is applied on all cells. See Disable Conditional Formatting)
You can define several conditional formatting rules on a given column.
The rules are executed in the order of the definition (in the example above, BadBaseValue will be applied first). As soon as a rule is valid, the formatting is applied and all other rules are ignored.
From the Conditional formatting section, you can reorder your rules. A conditional formatting rule is defined with:
- Name: allowing to identify a rule uniquely
- Conditions: the conditions define if the rule must be applied or not (Note: only the column where the conditional formatting applies can be used in the condition section)
- Formatting: if a rule is valid, the following formatting is applied
Static condition
The condition could consist of comparing the column/cell value with a Static value.
In the example below, the value in the BaseValue monetary column is compared (Lower than) to the static value 10 USD:
Dynamic Condition
The condition could also be defined dynamically by comparing the value of the column/cell with the value from another column/cell or field.
In the example below, the value in the BaseValue monetary column is compared (Lower than) to the value in the Expert column (Aggregate):
Formatting
On columns, the formatting can be applied to the:
- Background color (Remark: the background color is applied only on cells. This means if the cell is displayed in the left pane, the background color won't be applied)
- Font color
- Font style
Validation Rule
Validation rules can be defined on a column. You can define several validation rules on a given column
The rules are executed in the order of the definition (in the example above, ValidCPU will be first applied). As soon as a rule is invalid, the validation message is raised in the user interface. From the Validation Rule section, you can reorder your rules.
A validation rule is defined with:
- Name: allowing to identify a rule uniquely
- Conditions: the conditions define if the value entered is invalid or not (Note: only the column where the validation rule applies can be used in the condition section)
- Message: if a rule is invalid, the validation message is raised in the quote user interface
Static condition
The condition could consist of comparing the column/cell value with a Static value.
In the example below, the value in the CPU column is compared (Not in) to the static values i5 or
i7:
Dynamic Condition
The condition could also be defined dynamically by comparing the value of the column / cell with the
value from another column / cell or field.
In the example below, the value in the CPU column is compared (Not equal) to the value in the
MultipleField field (Aggregate):
Validation Error Message
A validation message must be defined to be raised in the quote interface or in the error browser.
By default, the message can be set directly in the validation rule. It is then considered as expressed in the default language.
This message can nonetheless be translated into other languages in the Translations menu of the Quote Designer.
Scaled pricing
Select the type of Scale Grid:
- Reference scale
- Negotiated scale
- Select the Reference Scale column
- Select the Target price column
Advanced
See the Advanced section for Cells.
Permissions
You can also define the column visibility with the read permission: Check the session states to give permission to see the column.
You have the ability to define the message that could be displayed in a personalized tooltip when hovering on the column header in the quote grid.
The Additional Information section is meant for you to define this message in the default language of the model.
You can then translate this message into other languages supported in your model in the Translation menu. Check the Information property of the corresponding column:
EDIT SEVERAL COLUMNS SIMULTANEOUSLY
You have the opportunity to edit several columns simultaneously in the Quote Designer. When editing a specific section in the left part for a given column, you can also decide to apply your modifications to other columns of the same type at the same time.
This applies to the following sections:
Conditional Formatting
- Advanced
This is made possible via the use of the Scope tab for every one of the above sections.
For example, to apply the same Conditional Formatting rules to several columns, proceed as follows:
- Select a column by clicking on its header
- In the left part, in the Conditional Formatting section, click on Add. Note that two tabs are available in the modal window opening - Data and Scope
In the Data tab, you can define the conditional formatting rule as described above. In the
Scope tab, you can decide to which column this rule will apply.
- Define a condition and a formatting in the Data tab and then click on the Scope tab. A list of columns eligible for the application of this condition is displayed.
- The current column is pre-selected and cannot be deselected. Select the other columns to which the formatting should be applied and click Done.
- The formatting condition is then applied to all selected columns.
The same behavior applies in the sections listed above.
LINK SEVERAL COLUMNS SIMULTANEOUSLY TO A PERIOD COLUMN
You have the opportunity to link several columns simultaneously to a Period column in the Quote Designer.
To do so, you have to be on the Columns & Line Templates page under the Data Model tab and follow these steps:
- Click on the dedicated button at the top of the grid
- In the pop-up panel, you can then select available columns to be linked to the Period Column. You can also add or remove the link with the middle actions.
- Once you're done, you can save your selection. As a result, all columns selected show that they are linked to the Period column in the left part.
Line Templates
Line templates define the type of line, the list of cells in the line, and how they are applied to quote lines (matching rules). Line templates allow different behaviors for quote lines.
ADD A LINE TEMPLATE
- Click on Add Line Template.
- Set the Number of line templates to create to 1 (see next paragraph to create multiple columns).
- Fill in the name and description.
- Select the type:
- PRODUCT - Elements coming from a catalog where a line corresponds to a SKU or an entry in a Configurable Product hierarchy.
- SPECIFIC - A line that doesn't correspond to an actual SKU from a catalog. The line is created by the user in the quote.
- FOLDER - A folder allows the user to create a hierarchy in the quote.
- GENERATED FOLDER - A generated folder automatically creates a hierarchy in the quote by replicating the product catalog's hierarchy.
- BUNDLE PRODUCT - Elements coming from a catalog where a line corresponds to a SKU and that has sub-lines.
- BUNDLE SPECIFIC - A line that has sub-lines but doesn't correspond to an actual SKU from a catalog. The line is created by the user in the quote.
- SUBSCRIPTION* - A root line for a product added from a catalog, and identified as a subscription product.
- CHARGE* - Sub-lines of a subscription line, the charges of the subscription Rate Plan.
- AGGREGATION_LINE - A line automatically generated by the system that groups quote rows by a common characteristic. It can have other AGGREGATION_LINE rows as children.
- Check Encrypted if available (only available if this option is enabled on your environment).
- Add additional properties:
- Update Permissions - select the list of session states you want to grant the update permission
- Creation Permissions - select the list of session states you want to grant the create permission
- Deletion Permissions - select the list of session states you want to grant the delete permission
- Click Add.
If a line is selected in the grid when you create a new line template, it is inserted after the selected line. If no line is selected, it is inserted at the bottom of the grid. Once created, the new line is automatically selected.
From the action bar, you can also Duplicate and Delete line templates.
This action is final and data cannot be recovered.
*Important: SUBSCRIPTION and CHARGE type line templates are only for users that are using the Subscription Management module.
Aggregation line templates
- Only one AGGREGATION_LINE template is allowed per quote model.
- Only the Update permission is available for this template type. Create and Delete permissions are not available as lines are managed automatically by the quote.
ADD SEVERAL LINE TEMPLATES SIMULTANEOUSLY
To add several line templates at the same time, proceed as follows:
- Click Add Column at the top of the screen.
- Set the Number of line templates to create.
- Fill in the name and description.
- The naming convention is that the first created column will have exactly that name. The
subsequent ones will have a prefix with a number (e.g. Name, Name_2, Name_3...).
- The description is exactly the same for all created line templates.
- The naming convention is that the first created column will have exactly that name. The
- Select the type (see previous paragraph). The same type will apply to all line templates created.
- Check Encrypted if necessary (only available is this option is enabled on your environment). This information will apply to all line templates created.
- Add additional properties
- Update Permissions: select the list of session states you want to grant the update permission. This information will apply to all line templates created.
- Creation Permissions: select the list of session states you want to grant the create permission. This information will apply to all line templates created.
- Deletion Permissions: select the list of session states you want to grant the delete permission. This information will apply to all line templates created.
- Click Add.
If a line is selected in the grid when you create a new line template, it is inserted after the selected line. If no line is selected, it is inserted at the bottom of the grid. Once created, the new line is automatically selected.
From the action bar, you can also Duplicate and Delete line templates.
This action is final and data cannot be recovered.
Important
SUBSCRIPTION and CHARGE line templates are only for users that are using Subscriptions.
Aggregation line templates
- Only one AGGREGATION_LINE template is allowed per quote model.
- Only the Update permission is available for this template type. Create and Delete permissions are not available as lines are managed automatically by the quote.
EDIT A LINE TEMPLATE
To edit a line template, select the line in the grid by clicking on the first cell with the line template type (when selected the line is highlighted yellow) or click on the line template in the list in the left pane.
Once selected, you can edit the information for that line template in the left pane. Depending on the type of line template, different sections are displayed.
Identification
In the left pane, you can edit the identification: Name, description, type, and if it can be a root product (PRODUCT type only). The description is stored and displayed for the locale that is selected. You can also choose to display the name or description in the application by clicking the dropdown
menu in the upper right corner and changing the display preferences.
This action is final and data cannot be recovered.
Matching rules
Matching rules are used to decide which line template is assigned to a line when it is added to a quote. Matching rules use resolution variables to determine this.
To add a matching rule to a line template:
- Click Edit.
- Select a resolution variable from the dropdown list in the search box or create a new one by clicking on Create resolution variable. (Note: From version 12.11, using the system variable
_SYS_ROW_ITEM in the matching rule is DEPRECATED)
- If you create a new resolution variable, a popup window opens.
- Fill in the name and type (string by default).
- Click Save and it is added to the matching rule.
- Select the operator and enter a value (can be case sensitive).
- Click on the pencil icon to add a key (optional) that is used to map the resolution variable to a property in the catalog. Each key corresponds to a catalog data source. If you have 2 catalog data sources, you must define 2 keys. For a child line, the parent product map is displayed. See line resolution for more information.Warning: You need at least one data source to be able to define a key.
- Enter the filter logic (the order in which the resolution variables are applied).
- Click Save.Note: Resolution variables can be edited/viewed in the Resolution Variables table accessed from the Line resolution menu on the action bar. See line resolution for more information.
Product map
For PRODUCT and BUNDLE PRODUCT type lines templates, you can define a Product Map in order to:
- Retrieve the needed information to execute children's matching rules: see Resolution variable
- Retrieve information on the line that are part of the SBL: Locale variables
The Product Map is executed once the line template is assigned in order to solve children's line template or to get information that are part of the configuration on the root line.
Define the product map. To define a product map:
- Click Edit.
The resolution variables used in the child's matching rules are added to the product map automatically.
- If needed, you can add additional resolution variables on this map by clicking on Add resolution variable. In addition, in order to retrieve information on the lines that are part of the SBL you can create locale variables.
- In the Key column, enter the key to retrieve (ex: CPE.currentSBL, etc.) or keep it empty if you want to use the same key as defined at data source level.Note: See Managing a Configuration Process in Your Quote for more information.
Subscription Map
Only for SUBSCRIPTION type lines templates. Define a Subscription Map in order to retrieve information sent by the Subscription Management module:
- Resolution Variables for information needed to execute children's matching rules
- Local variables for all other information
- The Subscription Map is executed once the line template is assigned.
Define the Subscription map:
- Click Edit.
The resolution variables used in a child's matching rules are added to the Subscription map automatically.
- You can add additional local variables on this map by clicking on Create local variable. 3. In the Key column, select the type of Subscription information you want to retrieve. See available keys in the "Mapping Subscription Management Output" section in the Examples topic.
Child products
line templates.
This section allows you to define which PRODUCT type line templates (or CHARGE type line templates for Subscriptions) you want to associate as a child to the line template you are editing.
To define child products:
- Click Edit.
- Select the line template from the dropdown list. You can select more than one.
- Click Save.Note: The order of the child products in the popup is the resolution order of the child products for the selected line template.
Authorized line templates
Define the line templates that can be used in the FOLDER type line template you are editing.
You can select certain line templates from the dropdown list or click All types to select all. Click Save when finished.
Automated Structure Data Source
For GENERATED FOLDER line templates, a structure data source should be defined as the source of truth to get the catalog hierarchy to replicate in the quote. This data source will also be used to retrieve labels translations to be used as folders descriptions.
This data source has to be picked in the list of catalog data providers.
Automated Hierarchy
For PRODUCT, BUNDLE PRODUCT and SUBSCRIPTION line templates, a Automated hierarchy line template can be selected. In that case, line items will be automatically created in a folder which replicates the catalog hierarchy from which the inserted line item is originated.
This data source has to be picked in the list of GENERATED FOLDER line templates.
Eligible Line templates for Automated hierarchy
Only line templates with a No duplicate FPK policy can be managed by an Automated Hierarchy.
Cells
This section lists the columns that have a behavior defined for the line template (user input, formula, etc.). Click on a cell from the list to edit it. When you are editing a cell, it is selected in the grid.
Dynamic filters
Dynamic filters allow you to filter a domain (list of available values) for a column/field based on other values. For example, you can filter the "ship to" locations based on the "sold to" locations. See Connect for more information on Dynamic Filters.
You can add dynamic filters by clicking Add dynamic filters.
Edit the name (name of the table defined in the Dynamic Filter service) or delete the dynamic filter from the list by clicking on the corresponding icon.
Functional primary key (FPK)
The functional primary key (FPK) rule is associated to the line template and is used to manage identical lines and if you want to take into account the line hierarchy for the FPK computation. See Anatomy of a Quote for more information.
- Select the policy to be used when identical lines are detected for this line template:
- No control - the same line can be added several times in the quote
- Conflicts - the same line can be added in the quote but all identical lines will be in error
- No duplicate - a line cannot be added in the quote if it already exists
- Check Take Hierarchy into account if you want the line hierarchy to be taken in to account when applying the FPK.
- Select the columns you want to be used for the FPK and order them in the selected columns panel.
If no FPK specified on the line template, the FPK will be defined with the system column RowItem, the policy will be set to NO CONTROL and the hierarchy is not taken into account.
The following cell/column types are available for use in the FPK definition :
- User Input
- Resolution Variable
- Formula
- Data Source(Catalog, POM, External etc.)
In the event of having a computed column (Data Source, Formula) in an FPK definition, the FPK functionality would first compute all cells participating in the FPK definition and only then construct the key.
Known Limitation - FPK Defined with Resolution Variable
The Functional Primary Key (FPK) is used for line matching (when the policy is 'NO DUPLICATE' or 'CONFLICT').
If the FPK is defined with some columns computed from resolution variables, utilizing Excel or JSON import to merge data on Configured Products lines or Bundle Products is not supported.
More particularly, because the matching cannot happen for resolution variables, quote line data will not be merged. As a result, new lines will or may be added to the quote.
Known Limitation - FPK and Smart Mass Update
If a cell is participating in Smart Mass Update it cannot be part of the FPK definition
For Import operation with NO_DUPLICATE policy, all cells participating in the FPK have to be available in the import file for the matching to happen.
If a row doesn't have all cells for the FPK it will be missed in the matching check and the line will be created, thus introducing the possiblity of a duplicate row.
If that's the case, the system will display a warning message in the cart pointing out that existence of duplicates.
Specificity for GENERATED FOLDER line templates
FPK for GENERATED FOLDER line templates will be handled automatically by the system, and
thus is disabled in the quote designer for those line templates. It will be defined as such:
- No Duplicate
- Hierarchical
- FPK is built based on
- row_item
- line template name
Cliques
The clique concept has been designed to help the administrator to define a cyclic computation formula with inter-dependencies.
For now, only one standard clique is available and there is no capability to define and add custom ones.
The clique that is delivered as part of the product will handle the following use case:
Input variables
- UP: Unitary Price (Currency / UoM)
- QTY: Quantity (UoM)
- UC: Unitary Cost
Core variables
- DP: Discount Percentage (between 0 and 1)
- UDA: Unitary Discount Amount
- TDA: Total Discount Amount
- UNP: Unitary Net Price
- TNP: Total Net Price
- MP: Margin Percentage (between 0 and 1)
- UMA: Unitary Margin Amount
- TMA: Total Margin Amount
initial state
- DP = pivot value (1 - (UNP/UP))
- UDA = UP * DP
- TDA = UP * QTY*DP
- UNP = UP * (1 - DP)
- TNP = QTY * UP * (1 - DP)
- MP = (UP * (1 - DP) - UC) / (UP * (1 - DP))
- UMA = UP * (1 - DP) - UC
- TMA = QTY * (UP * (1 - DP) - UC)
When any of those values change, all other variables are recomputed so that everything remains consistent.
To add a clique:
- Click on Add clique.
- Give the clique a name.
- Select the columns that you want to be a part of the clique.
- Click Save.
You can add more than one clique to a line template. Each clique must have a different name.
Optional Columns in Cliques
Except for the pivot variables in a given clique, all other columns are optional by default. As a consequence, only the variables set in the above window are updated when one is modified in the quote grid. It also implies that you do not have to create corresponding columns in the quote model for variables that you do not use in the clique.
Data source maps
If you want to retrieve information from a data source (such as price or product properties), you must first define a data source map (see Data Source), then associate the map to the line template.
This section contains the list of data source maps associated with the line template. You can add, edit, and delete a data map for the line template. When a map is applied on a line template, it affects all the columns listed in the map. If a column contains a formula, the data source map overrides the formula.
Permissions
You can update, create, and delete permissions on the line template in the Permissions section. For each type of access right, click the dropdown list and select what session states you want to give the permission to. For BUNDLE type line templates, there is also a section for the sub-lines. You will be able to define if you can Create/Update or Delete sub-lines for this line template.
LINE HIERARCHY
To view the line hierarchy, click the Line Hierarchy button located in the upper right of the screen. This allows you to visualize the line templates and their nesting.
Cells
For each line template, you can define what is displayed or the behavior of each cell.
EDIT A CELL
To edit a cell, select the cell by clicking on it in the grid (when selected the cell is highlighted yellow). Once selected, you can edit the information for that cell in the left pane.
User input
Define if the cell is user input or not by selecting true or false.
Required
Set the cell as Required, meaning that the cell must have a value set in order for the quote to be valid. This mechanism guides you at the time of quoting and helps you to visually identify if an important value is missing.
While the required cell does not have a value, a Validation Error icon is visible in the cell itself, and a dedicated Validation message is displayed in the Error Browser.
Required and User Input
A Required cell must be User Input otherwise, you could not set its required value.
Auto Set
This flag applies for the cells whose domain of value is driven by Dynamic Filters.
A cell driven by the Dynamic Domain service can only take predefined values within a list that can be filtered down depending on the criteria of the corresponding Dynamic Filter.
At runtime, you must choose between the available values to fill in this cell. Depending on the filtering criteria, it may happen that only one value is available.
If this cell is flagged as Auto Set, then this single value is automatically selected by the system, thus preventing you from having to manually select it.
Unselect
If a value has been auto-set because it was the only one available and the Auto Set flag was activated on a Dynamic Filter driven column, but the premises of the filter changed so that more than one value is now available, the previously auto-set value is then automatically unselected. In other words, the auto set can be reverted back if more than one value is made available in the Dynamic Filter.
Domain
Depending on the type of column, you can define a static domain for the cell. The following table shows the type of cell and the list of settings available:
| TYPE | SETTINGS | TYPE | SETTINGS |
|---|---|---|---|
| Boolean | N/A | Monetary | N/A |
| Integer | Min/max/multiple of List of values From JSON | Percentage | Min/max/multiple of List of values From JSON |
| Long | Min/max/multiple of List of values From JSON | JSON | N/A |
| Big Decimal | Min/max List of values From JSON | XML | N/A |
| String | List of values Regex Max size From JSON | Locale | Value From JSON |
| Date Time | Min/max List of values From JSON | Unit of Measure | Value Type From JSON |
| Locale Date | Min/max List of values From JSON | HTML | N/A |
| Business | From JSON | URL | N/A |
| Currency | Value From JSON | Scale Grid | N/A |
| Period | N/A |
To add a domain, enter the values/information, then click Add. For a list of values, you can add up to 20 values. If you need more than 20, you must create a dynamic filter.
Domain From JSON
The domain can be built from a JSON field.
You need to select from which JSON-typed field the domain will be retrieved and then specify the JSON Path to retrieve this information.
Dynamic Filter
When a column is also associated with a dynamic filter, the domain defined here is considered as an additional restriction of the one coming from the dynamic filter service.
For example:
The following domain is defined in the Dynamic filter and associated to the line template:
Color: Blue, white, red
Then, for the same line template, the following domain is associated to the cell: List of Values:
Black, Blue, Red. At runtime, the domain available will be : Blue, Red
Permissions
You can manage update permissions on the cell in the Permissions section. For each type of access right, click the dropdown list and select the groups you want to give the permission to.
Calculation
There are 3 types of calculations you can add to a cell:
- Formula
- Resolution variable
- External (data map)
If a map is associated to the line template, the calculation is automatically set depending on the map definition (read mode). An open link redirects you to the map definition from the data source page. If the user clicks on edit, he is able to enter a formula or to select a resolution variable.
When a cell is computed by a data map, the left pane displays the data map information and the user can open it.
Disable Conditional Formatting
By default, conditional formatting rule(s) apply to all the cells of a column. This function can be used to disable the conditional formatting rule(s) on a specific cell.
Rulable
Define if the cell is rulable by selecting true or false. If a cell is rulable, User Rules can be applied to the cell. This does not apply if the cell is an output of a data source.
Smart Mass Update
Define if the cell is flagged Smart Mass updatable. At runtime, when changing a value on a cell that is marked as such, the system will automatically look for similar lines, and report the value as a user input on the same column for those lines.
Only user input values will trigger a Smart Mass Update.
Data Source
For Business type columns only. Define the data source on the cell. There are 2 types of data sources:
- Catalog
- Dimension
Select the data source type and the name. Defining a data source allows you to search for a value when you edit the cell at runtime.
Validation Rule
Validation rules can be defined on a cell. You can define several validation rules on a given column
The rules are executed in the order of the definition (in the example above, ApprovalRequired will be first applied). As soon as a rule is invalid, the validation message is raised in the user interface. From the Validation Rule section, you can reorder your rules.
A validation rule is defined with:
- Name: allowing to identify a rule uniquely
- Conditions: the conditions define if the value entered is valid or not (Note: only the column where the validation rule applies can be used in the condition section)
- Message: if a rule is invalid, the validation message is raised in the quote user interface
Static condition
The condition could consist of comparing the column/cell value with a Static value.
In the example below, the value in the Approval column is compared (Not Equal) to the static
value Approved:
Dynamic Condition
The condition could also be defined dynamically by comparing the value of the column / cell with the value from another column / cell or field.
In the example below, the value in the Approval column is compared (Not equal) to the value in the
globalApproval field (Aggregate):
Validation Error Message
A validation message must be defined to be raised in the quote interface or in the error browser.
By default, the message can be set directly in the validation rule. It is then considered as expressed in the default language.
This message can nonetheless be translated into other languages in the Translations menu of the Quote Designer.
Guidance
For monetary or percentage type columns, you can define a guidance widget. Click Edit to open the popup window. In the Min/Max tab, you can define the minimum and maximum values of the guidance widget.
In the Benchmark tab you can select benchmark columns (maximum 5). If no benchmark is associated, the guidance is not applied to the cell.
In the Base Value tab, define the base value to be used in the guidance widget.
In the Colors tab, define the colors for the guidance widget segments using a color picker. The number of colors depends on the number of benchmarks you defined in the Benchmark tab.
In the Score tab, define the score column you want to display on the widget.
Once everything is set up, Click Save.
The guidance widget will be displayed at runtime to help the user to select the right price/discount level.
- The Base Price corresponds to the List Price and the widget allows you to see the price difference between this price and the selected price (displayed on the right).
- Benchmarks (Expert, Target, Floor) in the example above, are displayed on the left. They correspond to columns in the quote model.
- The score is a column displayed on the top right.
- Minimum and maximum are used for display purposes. They can be defined as a static value (0, 100) or as columns.
Known limitation - Scale Grid Price
The Guidance could be used to change only the Base Price of the Scale Grid.
In that event, the Guidance attributes can only be of the same type as the Scale Grid Base Price (Monetary).
Advanced
The advanced section allows you to define the following on a cell:
- Selector
- Grid Renderers
- Formatter
Selectors and masks
Depending on the type of the column (and/or if a data source is linked to the cell ), you can assign a selector to the cell:
| TYPE | SELECTORS AVAILABLE |
|---|---|
| String | DropDown, Input, Text Area |
| Boolean | Checkbox |
| Monetary | LiveConverter, Input, DropDown, Spinner |
| Currency | Input, DropDown |
| UoM | Input, DropDown |
| Integer | DropDown, Input, Spinner |
| TYPE | SELECTORS AVAILABLE |
|---|---|
| Big Decimal | DropDown, Input, Spinner |
| Long | DropDown, Input, Spinner |
| Business Value | Search, DropDown, Input |
| Dimension | Dimension, Input, DropDown |
| HTML | WYSIWYG, Input, DropDown |
| Locale | Input, DropDown |
| Percentage | DropDown, Input, Spinner |
| DateTime | Datepicker, DropDown, Input |
| Date | Datepicker, DropDown, Input |
| URL | URL |
| PERIOD | Datepicker, DropDown, Input |
Depending on the selector chosen, you can define the properties of the selector:
| SELECTOR | OPTIONS |
|---|---|
| Checkbox | No setting |
| Datepicker | No setting |
| Dimension | Display unauthorized (TRUE/FALSE) Force same width (TRUE/FALSE) Multiline (TRUE/FALSE) Start from (Left, Right) Display mode (All, Name, Description) Nb characters for search (integer, default 3) |
| Dropdown | Display unauthorized (TRUE/FALSE) Force same width (TRUE/FALSE) Multiline (TRUE/FALSE) Start from (Left, Right) Display mode (All, Name, Description) Nb characters for search (integer, default 3) Check Eligibility (true/false) |
| Input | Clear text (TRUE/FALSE) Before icon (Free text) Before icon pair (Free text) Width (integer) Only for business columns: Business Display Mode (All, Name, Description) → display 1 or 2 inputs |
| Live Converter | No setting |
| Search | Display unauthorized (TRUE/FALSE) Force same width (TRUE/FALSE) Multiline (TRUE/FALSE) Start from (Left, Right) Price key (Free text) Display mode (All, Name, Description) Nb characters for search (integer, default 3) |
| Spinner | No setting |
| Text Area | Inline (TRUE/FALSE) Lock Width (TRUE/FALSE) Resize (TRUE/FALSE) |
| URL | No setting |
| WYSIWIG | Font Size (integer) (All following are TRUE/FALSE) Cut Undo/Redo Insert Special Character Full screen Bold Italic Underline Strikethrough Clear formatting Bullet list Numeric List Indent Outdent Align Left Align Center Align Right Brush Link |
By selecting the INPUT selector, you can also define a mask.
There are 7 predefined masks and the capability to create a custom mask:
- ZIP CODE US (ddddd)
- ZIP CODE FR (ddddd)
- Phone US ((ddd) dd ddd-dddd)
- Phone FR ([1-9]d dd dd dd dd)
- Quantity (dd)
- Email ([email protected])
- Serial Custom (xx ddd xx)
If you select Custom, you can define the following properties:
- Allow Decimal (true/false)
- Allow Leading Zeroes (true/false)
- Allow Negative (true/false)
- Decimal Limit (integer)
- Decimal Symbol (string)
- Include Thousands Separator (true/false)
- Integer Limit (true/false)
- Prefix (string)
- Regex
- Require Decimal (true/false)
- Suffix (string)
- Thousands Separator Symbol (string)
Grid Renderers
For BUSINESS type columns, you can define the renderer used when the data is displayed in a Grid.
The renderer is defined with 3 properties:
- Display image (true/false)
- Title (empty, Description, Name, Long description)
- Text (empty, Description, Name, Long description)
- Multiline (None, Title, Text)
The image will be retrieved from the Catalog (Rich Media Object). The first image associated to the product with the usertype quotex will be retrieved.
The Long description corresponds to the RMO Text associated to the product. The first RMO Text with the usertype quotex will be retrieved.
Example in Smart CPQ:
The Multiline setting can be used to display either the title or the text on several lines instead of one by default:
| MULTILINE | TITLE | TEXT | DENSITY NORMAL | DENSITY COMPACT | DENSITY TIGHT |
|---|---|---|---|---|---|
| None | Name OR Description OR Long Description | Name OR Description OR Long Description | |||
| None | Empty | Name OR Description OR Long Description | |||
| None | Name OR Description OR Long Description | Empty | |||
| Title | Name OR Description OR Long Description | Empty |
| MULTILINE | TITLE | TEXT | DENSITY NORMAL | DENSITY COMPACT | DENSITY TIGHT |
|---|---|---|---|---|---|
| Title | Name OR Description OR Long Description | Name OR Description OR Long Description | |||
| Text | Empty | Name OR Description OR Long Description | |||
| Text | Name OR Description OR Long Description | Name OR Description OR Long Description |
Formatter
Depending on the type of the column, you can define a formatter:
| TYPE | OPTIONS |
|---|---|
| Text | |
| Boolean | |
| Monetary | Grouping separator Decimal separator Decimal count Currency position |
| Currency | Currency display (Name, code, symbol) |
| Integer | Grouping separator |
| TYPE | OPTIONS |
|---|---|
| Big Decimal | Grouping separator Decimal separator Decimal count |
| Long | Grouping separator |
| Business Value | Display mode (All, Name, Description) |
| Dimension | |
| HTML | |
| Locale | |
| Percentage | Grouping separator Decimal separator Decimal count |
| UoM | UoM display (code, label) |
| DateTime | displayTimezone (true/false) |
| Date | |
| URL | |
| PERIOD |
EDIT SEVERAL CELLS SIMULTANEOUSLY
You have the opportunity to edit several cells of the same type simultaneously in the Quote Designer.
When editing a specific section in the left part for a given cell, you can also decide to apply your modifications to other cells of the same type at the same time.
This applies to the following sections:
- Calculation
- Guidance
- Domains
- Advanced
- Data Source (for Business type of cells)
The following settings can also be edited in mass:
- User Input
- Rulable
- Smart Mass Update
Scope for Sections
The edition of sections listed above is made possible via the use of the Scope tab.
For example, to apply the same calculation formula to several cells, proceed as follows:
- Select a cell by clicking on it
- In the left part, in the Calculation section, click on Edit. Note that two tabs are available in
the modal window opening - Data and Scope
In the Data tab, you can define the formula as described above. In the Scope tab, you can decide to which column this rule will apply.
- Define a formula in the Data tab and then click on the Scope tab. A table with line templates and columns allows selecting cells eligible for the application of this formula.
- The current cell is pre-selected and cannot be deselected. Select the other cells to which the formula should be applied and click on Save.
- The formula is then applied to all selected cells.
The same behavior applies in the sections listed above.
Guidance
In the case of the definition of Guidance for a given cell, the scope is reduced to the cells of the same column only, as it does not make sense to apply the same guidance to cells from different columns.
In that scenario, the Scope tab contains a dropdown list of line templates, with the current one
pre-selected.
Scope for Settings
Some of the cell settings are not set within dedicated windows, but more simply with a toggle. These settings can still be applied to several cells at the same time but in a different way than in the scenarios described in the previous paragraph.
In order to mass edit settings, proceed as follows:
- Right-click on a line template containing the cells to update. In the menu, click on Configure Cell Settings:
Alternatively, you can right-click on a column containing the cells to update:
Note: that two tabs are available in the modal window opening - Data and Scope. - In the Data tab, you can:
- select the setting(s) to update by checking the corresponding box in the Override
column
- set a value for the setting (true or false) by checking or not the box at the right-end of the corresponding line.
Example
In this example:
- the User Input setting will be updated with the value true.
- the Rulable setting will not be updated.
- the Smart Mass Update setting will be updated with the value false.
- select the setting(s) to update by checking the corresponding box in the Override
- In the Scope tab, select the cells to update with the values from the Data tab.
If you have selected a line template initially (step 1 above):
Or, if you have selected a column:
- Click Save.
RIGHT CLICK ON A CELL
On right click, the user can perform several actions:
- Copy cell - The whole cell is copied (meaning all the properties such as formula, permissions, domains, etc.). A copied cell can be pasted only on a cell with the same type.
- Copy formula to clipboard - if a formula exists, you can copy it to your clipboard
- Paste cell - Only available if a cell with the same type is copied. By pasting a cell, it will replace the current properties.
- Delete cell - Delete cell will delete all the properties of the cell (note: when the cell is computed by a data source, this calculation can't be deleted as the association is done at line template level)
It may happen that a copy to clipboard is prevented by your browser settings or the system embedding Smart CPQ. To still allow you to copy to clipboard the content of a cell or a row for instance, a modal window may pop up.
From there, you can manually select the content of the cell and copy it in text, CSV or HTML format by clicking on Select all or by using keyboard shortcuts.
The copied content can then be pasted elsewhere on your computer. Example for a cell:
Example for a row:
Line Resolution
You can add products or bundles from the catalog. These lines will be added in the quote with the PRODUCT or BUNDLE PRODUCT type line template. In order to be able to define which line template is assigned for each product, matching rules are executed. Matching rules are based on resolution variables.
From the action bar, you can:
- Define the resolution order - the order of execution of the matching rule.
- Edit the resolution variables - you can change the name and type of the resolution variables as well as define keys (data sources). You cannot create resolution variables from this screen, they are created when you define a matching rule (see Line Templates).
RESOLUTION ORDER
The resolution order defines the order in which the matching rules for each line template are executed. As matching rules are executed sequentially, the first line template that matches is assigned to the line. You can reorganize this order by clicking on the arrows displayed on the right of the list.
RESOLUTION VARIABLES
Resolution variables are used in matching rules to retrieve the information needed to solve a line template. The Resolution Variables window lists all the resolution variables defined in your quote model. You can edit them (change the name and type) and define keys. The keys are used to retrieve information from the data sources (catalog and product maps) that is used to solve the line template. For example, in Smart CPQ Catalog, keys are represented with a CPE (CPE.currentItem.wks/BPS/bpsProperties.BP/bpType.value).
Fields
A field is a quote variable that is used to display information in the quote (header or widget) and can be synchronized to a CRM. To access fields, go to DATA MODEL > Fields.
When nothing is selected, the list of fields appears in the left pane and on the right in the grid. When a field is selected, you can edit it in the left pane. By default, there are system fields that are already created in the application. You can edit the system fields but you cannot duplicate or delete them.
ADD A FIELD
- Click Add Field in the action bar.
- Set the Number of fields to create to 1 (see next paragraph to create multiple columns).
- Fill in a name, description, and type. For monetary type, also select the currency.
- Check Encrypted if necessary (only available if this option is enabled on your environment).
- Add additional properties
- Update Permissions: select the list of session states you want to grant the update permission.
- Read Permissions: select the list of session states you want to grant the create permission.
- View / Components: select the components where you want to add this field.
- Click Add.
From the action bar, you can also Duplicate and Delete fields (except for the system fields). Once the field is created, it is selected on the list and you can edit the field in the left pane.
This action is final and data cannot be recovered.
ADD SEVERAL FIELDS SIMULTANEOUSLY
- Click Add Field in the action bar.
- Set the Number of fields to create.
- Fill in a name, description, and type. For monetary type, also select the currency.
- The naming convention is that the first created field will have exactly that name. The subsequent ones will have a prefix with a number (e.g. Name, Name_2, Name_3...).
- The description is exactly the same for all created fields.
- The type is exactly the same for all created fields.
- Check Encrypted if necessary (only available is this option is enabled on your environment). This information will apply to all fields created.
- Add additional properties
- Update Permissions: select the list of session states you want to grant the update permission. This information will apply to all fields created.
- Read Permissions: select the list of session states you want to grant the create permission. This information will apply to all fields created.
- View / Components: select the components where you want to add these fields. This information will apply to all fields created.
- Click Add.
From the action bar, you can also Duplicate and Delete fields (except for the system fields). Once the fields are created, you can edit them in the left pane.
This action is final and data cannot be recovered.
EDIT A FIELD
To edit a field, select the field in the left pane or in the grid (it is highlighted in yellow).
You can edit the following information in the left pane (the section depends on the type of field):
- Identification
- User input
- Required
- Auto Set
- Conditional Formatting
- Validation Rule
- Calculation
- Domain
- Guidance
- Permissions
- AdvancedWarning: Renaming or deleting a field deletes all associated data in existing quotes impacting live and historical records.
This action is final and data cannot be recovered.
Identification
In the left pane, you can edit the identification (name, description, type, and encrypted). Depending on the type of field, the information may be different, for example, if the type is monetary, you must update the currency. The description is stored and displayed for the locale that is selected. You can also choose to display the name or description in the application by clicking the dropdown menu in the upper right corner and changing the display preferences.
User Input
See User Input for cells.
Required
See Required for cells.
Multi-select
This option allows the end user to select multiple values when answering to this column cells.
This option is only available for following datatypes: Integer, Long, Big Decimal, String, Business, Percentage.
Show Converted Prices
Monetary and Monetary per quantity fields have an option to automatically show converted prices in the quote UI.
Setting that option to true will provide the access to a widget to the end-user, which will show them the current field's price converted in all currencies declared in the quote model.
This option is available only if at least 2 currencies are declared in the quote model.
Auto Set
See Auto Set for cells.
Conditional Formatting
See Conditional Formatting for Columns.
Validation Rule
See Validation Rule for cells.
Calculation
See Calculation for cells.
Domain
See Domain for cells.
Data Source
See Data Source for cells.
Guidance
See Guidance for cells.
Permissions
See Permissions for cells.
Advanced
See Advanced settings for cells.
Information
You have the ability to define the message that could be displayed in a personalized tooltip when hovering on the field label in the quote interface.
The Additional Information section is meant for you to define this message in the default language of the model.
You can then translate this message into other languages supported in your model in the Translation menu. Check the Information property of the corresponding field:
EDIT SEVERAL FIELDS SIMULTANEOUSLY
You have the opportunity to edit several fields of the same type simultaneously in the Quote Designer. When editing a specific section in the left part for a given field, you can also decide to apply your modifications to other fields of the same type at the same time.
This applies to the following sections:
- Conditional Formatting
- Calculation
- Domains
- Advanced
- Data Source (for Business type of fields)
The following settings can also be edited in mass:
User Input
Scope for Sections
The edition of the sections listed above is made possible via the use of the Scope tab. For example, to apply the same calculation formula to several fields, proceed as follows:
- Select a field by clicking on it
- In the left part, in the Calculation section, click on Edit. Note that two tabs are available in the modal window opening - Data and Scope
In the Data tab, you can define the formula as described above. In the Scope tab, you can decide to which fields this rule will apply.
- Define a formula in the Data tab and then click on the Scope tab. A list of fields eligible for the application of this formula is displayed.
- The current field is pre-selected and cannot be deselected. Select the other fields to which the formula should be applied and click on Save.
- The formula is then applied to all selected fields.
The same behavior applies in the sections listed above.
Scope for Settings
Some of the field settings are not set within dedicated windows, but more simply with a toggle. These settings can still be applied to several fields at the same time but in a different way than in the scenarios described in the previous paragraph.
In order to mass edit settings, proceed as follows:
- Right-click on a field. In the menu, click on Configure Field Settings:Note: that two tabs are available in the modal window opening - Data and Scope.
- In the Data tab, you can:
- select the setting(s) to update by checking the corresponding box in the Override
column
- set a value for the setting (true or false) by checking or not the box at the right-end of the corresponding line.
Example
In this example, the User Input setting will be updated with the value true.
In this example, the User Input setting will be updated with the value false.
In this example, the User Input setting will not be updated.
- select the setting(s) to update by checking the corresponding box in the Override
- In the Scope tab, select the fields to update with the values from the Data tab.
- Click Save.
USING FIELDS IN THE QUOTE
As previously stated, fields are used to display information in the quote header or in a widget which are defined in the quote layout in the User Interface menu. However, to be able to define this in the layout, you need to first create a field, then a quote view with a component that includes the field.
Once these are created, you can define the view in the layout for a header or a widget.
System Columns & Fields
The system columns and fields are listed in the DATA MODEL > System Columns & Fields menu.
Click on Columns or Fields in the left pane and the list of columns or fields appears on the right. The name, description, type and encryption are shown. System columns and fields cannot be deleted however you can edit the description and check encryption if desired.
SYSTEM COLUMNS
| NAME | DESCRIPTION |
|---|---|
| _SYS_ROW_CREATION_DATE | Row creation date - date and time of the creation of the line. |
| _SYS_ROW_UPDATE_DATE | Row update date - date and time of the last update of the line. |
| _SYS_ROW_ITEM | Row item - line identifier. This column is automatically filled when a product is added from the catalog. |
| _SYS_ROW_QUANTITY | Row quantity - line quantity. This column is automatically filled when a product is added from the catalog. |
| _SYS_ROW_UPDATE_USER | Row update user - username of the last updater. |
| _SYS_ROW_CREATION_USER | Row creation user - username of the creator of the line. |
| _SYS_ROW_CHANGE_MARK | Change tracking - used when the change tracking is active. Displays if the line is new, deleted or updated. This feature is not compatible with Configurable Products or Subscriptions. |
| _SYS_ROW_CONFIGURATION_DATA | Row configuration data - technical column storing configuration details. |
| _SYS_ROW_TYPE | Row type - type of line (PRODUCT, FOLDER, etc.). |
| _SYS_ROW_DATAPROVIDER_NAME | Row data provider name - name of the data source when the line is added from a catalog. |
| _SYS_ROW_TEMPLATE | Row template - name of the line template. |
SYSTEM FIELDS
| NAME | DESCRIPTION |
|---|---|
| _SYS_DATA_LOCALE | Data locale - quote data locale (set at quote creation). |
| _SYS_EFFECTIVE_DATE | Effective date - can be used to store the quote effective date. |
| _SYS_STATUS | Status - used to store the quote status. |
| _SYS_EXT_QUOTE_ID | External quote ID - reference of the quote in external system (Salesforce, MS Dynamics). |
| _SYS_REF_CURRENCY | Reference currency - reference currency (currency used for storage). |
| _SYS_CREATION_DATE | Creation date - date and the time of the quote creation. |
| _SYS_QUOTE_ID | Quote ID |
| _SYS_NBR_WARNING | Number of warnings - number of warning in the quote. |
| _SYS_OWNER | Owner - owner username. |
| _SYS_NBR_ERROR | Number of errors - number of error in the quote. |
| _SYS_UPDATE_DATE | Update date - date and time of the last update. |
| _SYS_CREATION_USER | Creation user - creator username |
| _SYS_UPDATE_USER | Update user - username of the last user that updated the quote. |
| _SYS_AMENDMENT_DATE | Amendment Date - Date used in amendment workflows, especially for Agreements and Subscriptions. |
| _SYS_START_DATE | Start Date - Date used as a contract start date, in particular for Agreements and Subscriptions. |
| _SYS_END_DATE | End Date - Date used as a contract end date, in particular for Agreements and Subscriptions. |
Supported Data-Types
COLUMN DATA-TYPES
Performance Quoting manages the following data-types:
| Type | Description | Performance Quoting JSON Public Format |
| Boolean | Boolean value (True/False). Can be displayed with a checkbox | |
| Integer | Numeric value with no decimal part (Max: 2147483647) | |
| Long | Numeric value with no decimal part (Max: 9223372036854775807) | |
| Big Decimal | Contains a big decimal value | |
| String | Text value. | |
| Date Time | Contains a date and time. | |
| Local Date | Contains only a date | |
| Business | A business value allows to store PROS Business data: Standard Item (SI) : this value contains 4 properties (Type (SI), Name, Description and Namespace) Dimension: this value contains 3 properties (Type (DIMENSION), Name and Description) |
| Currency | Contains a currency. The currency code is defined in the Quote model. Currency codes follow the ISO 4217 norm (3 characters). Then, the currency service is called to retrieve all the needed information (Description, Symbol ...) | |
| Monetary | A Monetary value is a Big Decimal linked to a currency. When the currency is updated, the value is converted based on the conversion rates retrieved from the currency service. | |
| Percentage | Contains a percentage value. The value stored is automatically formatted at runtime (ex: 0.1 is stored and 10% is displayed at runtime. In addition, at runtime, the user will enter 10 to store 0.1) | |
| JSON | The JSON type is leveraged for example to store the CRM context. In order to browse this value, EXECUTE JSON PATH formula has to be leveraged. | |
| XML | The XML type can be parsed with the EXECUTE PATH formula. It allows to store data in XML format. | |
| Locale | Contains a locale (en_US, fr_FR ...) | |
| Unit of Measure | Contains a Unit of Measure | |
| HTML | The HTML type allows to store Rich Text in HTML format. At runtime, a WYSIWYG allows the user to edit it. | |
| URL | Contains a URL. The value contains 3 properties: URL, the text displayed and the text on hover (tooltip) |
| Scale Grid | Contains a scale grid structure. See Examples (How to) - Examples - Modeling Scale Pricing for more details | |
| Period | Contains the period for the line dates. | |
| Measure | A Monetary value is a Big Decimal linked to a Unit of Measure. When the Unit of Measure is updated, the value is converted based on the conversion rates retrieved from the UoM service. | |
| Currency per Quantity | Contains a currency, a quantity, and a Unit of Measure. Currency and UoM services are called to retrieve all the needed information (Description, Symbol, etc.). Currency per Quantity cells/fields domains can only be associated with Dynamic Domains, or computed based on a Currency and Unit of Measure cell/field. | |
| Monetary per Quantity | A Monetary per Quantity value is a Big Decimal linked to a Currency per Quantity. When the Currency per Quantity is updated, the value is converted based on the conversion rates retrieved from Currency and UoM services. Some restrictions on this data type will apply, the filter and sorting will only understand values from the same UoM type. Similarly, Mass updates and User rules aren't usable with this data type. Also, views cannot be built based on filters on this data type. |
MULTIPLE VALUES
From a JSON value, a list of value can be retrieved and used to define a domain for a given cell
(see Quote Designer - Data Model - Columns & Fields - Cells ). On standard integration (for example from the CRM), when a list of values has to be sent for a given field, the JSON is formatted with the "multiple" keyword.
Example from SFDC:
Example - Multiple values from SFDC
{
"Delivery": {
"multiple": [
{
"string": "Truck"
},
{
"string": "Plane"
},
{
"string": "Train"
}
]
}
}
Formula Examples
XML AND JSON MANIPULATION
Two functions allow convenient XML and JSON Manipulation. They allow extraction of data from larger XML or JSON content. Both functions always return a string value. Both will only return the first matching element in case of multiple matching. If no match is found an empty string is returned. Both functions are only able to return single leaves / final values. They cannot return a sub-structure of the tree.
EXECUTEXPATH
This function executes an XPath request on an XML content and returns the first matching result as string, or an empty string.
Supported XPath request formats are XPath 2.0 and XPath 3.1
Signature: string EXECUTEXPATH(string xmlContent, string request)
Examples
Consider the following XML content:
<?xml version="1.0" encoding="UTF-8"?>
<phonebook>
<company name='PROS'>
<address>
<number>185</number>
<street>rue Galilée</street>
<zipCode>31670</zipCode>
<city>LABEGE</city>
<country>FRANCE</country>
</address>
</company>
<company name='CS' status="SSII">
<address>
<number>185</number>
<street type="alley">rue Brindejonc des Moulinais</street>
<zipCode>31670</zipCode>
<city>TOULOUSE</city>
<country>FRANCE</country>
</address>
</company>
</phonebook>
If this XML content is assigned to a string variable xmlContent, then you can use the following statements:
If this XML content is assigned to a XML variable, you can perform some request to get data.
Ex : Get the ZipCode (EXECUTEXPATH(xml,"number(/phonebook/company[@name='PROS']/address/zipCode/text())"))
Get the Street (EXECUTEXPATH(xml,"string(/phonebook/company[@name='PROS']/address/street/text())"))
EXECUTEJSONPATH
This function executes a JSONPath request on a JSON content and returns the first matching result as string, or an empty string. ExecuteJsonPath will always return a "leaf" value, and cannot be used to return a whole node - in that case it will throw an exception. JSONPath original specifications: https://goessner.net/articles/JsonPath/
Signature: string EXECUTEJSONPATH(string jsonContent, string request)
Example
Consider the following JSON content:
{
"phonebook": {
"company": {
"name": "PROS",
"address": {
"number": "185",
"street": "rue Galilée",
"zipCode": "31670",
"city": "LABEGE",
"country": "FRANCE"
}
}
}
}
If this JSON content is assigned to a JSON variable, you can perform some request to get data.
Ex: Get the ZIP code (EXECUTEJSONPATH(json,"$.phonebook.company[?(@.name=='PROS')].address.zipCode"))
There are several kinds of JSONPath requests that can be performed, as detailed below:
| FORMULA | DESCRIPTION | APPLIED TO |
|---|---|---|
| ExecuteJsonPath(string jsonContent, string request) | Execute the json query in the provided json content, and sends out the result in a string format | Field Cell |
| ExecuteJsonPathBoolean(string jsonContent, string request) | Execute the json query in the provided json content, and sends out the result in a boolean format | Field Cell |
| ExecuteJsonPathCurrency(string jsonContent, string request) | Execute the json query in the provided json content, and sends out the result in a currency format | Field Cell |
| ExecuteJsonPathDate(string jsonContent, string request) | Execute the json query in the provided json content, and sends out the result in a date format | Field Cell |
| ExecuteJsonPathDatetime(string jsonContent, string request) | Execute the json query in the provided json content, and sends out the result in a date time format | Field Cell |
| ExecuteJsonPathDecimal(string jsonContent, string request) | Execute the json query in the provided json content, and sends out the result in a decimal format | Field Cell |
VSUM_BY AND VSEARCH
Both functions aim at setting a cell value for a "current line". To set the value, the engine will scan "other rows" based on an criteria between columns to find matching rows. A formula is applied on matching rows column values. Criteria is between one column of current row, and one column of other rows. Both columns should share a same type. Equality is the only handled criteria. It is case-sensitive. A list of line templates can limit the other rows scope. The list can be null and will be
ignored with possible performance issues.
Administrators should be very careful when using them and should get in touch with Performance Quoting technical experts in order to ensure the viability of any design relying on them.
VSEARCH
VSEARCH retrieves a value on another row. If more than one row matches an error is returned. Signature: VSEARCH(colCurrent, colOther, formula, templates).
Formula is executed on the other matching row. It can only target matching row cells, matching row parent cells, and fields.
Example: The example below is an illustration of how VSEARCH can be used to find the Discount value of a given food category.
| LINE TEMPLATE | ITEM | CATEGORY | TYPE | DISCOUNT | LISTUNITPRICE | NETUNITPRICE |
|---|---|---|---|---|---|---|
| LTSpecific_1 | GlobalDiscount1 | Fruits | 10% | |||
| LTSpecific_1 | GlobalDiscount1 | Consumables | 20% | |||
| LTProduct_1 | Apples | Fruits | 100 | 90 =(1- VSEARCH(Type,Category,Discount,LTSpecific_1) )*ListUnitPrice | ||
| LTProduct_1 | Bananas | Fruits | 200 | 180 =(1- VSEARCH(Type,Category,Discount,LTSpecific_1) )*ListUnitPrice | ||
| LTProduct_1 | Paper Plates | Consumables | 300 | 240 =(1- VSEARCH(Type,Category,Discount,LTSpecific_1) )*ListUnitPrice |
In this example, for each NetUnitPrice cells belonging to LTProduct_1, the engine searches through lines belonging to LTSpecirfic_1. It finds the one whose 'Category' value equals the current 'Type' value. It retrieves the Discount value of the matching row.
VSUM_BY
VSUM_BY sums a value on other rows.
Signature: VSUM_BY (colCurrent, colOther, formula, templates).
Formula is executed on the other matching rows. It can only target matching row cells, matching row parent cells, and fields.
Example: The example below is an illustration of how VSUM can be used to sum the values of products of a given Food Type.
| LINE TEMPLATE | ITEM | CATEGORY | TYPE | LISTUNITPRICE | TOTAL CATEGORY PRICE |
|---|---|---|---|---|---|
| LTSpecific_1 | GlobalDiscount1 | Fruits | 250 = VSUM_BY(Category, Type, ListUnitPrice, LTProduct_1) | ||
| LTSpecific_1 | GlobalDiscount1 | Consumables | 300 = VSUM_BY(Category, Type, ListUnitPrice, LTProduct_1) | ||
| LTProduct_1 | Apples | Fruits | 100 | ||
| LTProduct_1 | Bananas | Fruits | 150 | ||
| LTProduct_1 | Paper Plates | Consumables | 300 |
In this example, for each TotalCategoryPrice cells belonging to LTSpecific_1, the engine searches through lines belonging to LTProduct_1. It finds all rows whose 'Type' value equals the current 'Category' value. It sums the ListUnitPrice value of matching rows.
Aggregation Lines & Views
MODELING AGGREGATION LINES AND VIEWS
The aggregation lines let you automatically generate summary rows in a quote. These rows group together existing quote lines that share common characteristics - such as brand, color, or category - and display consolidated totals for each group.
Aggregation lines are fully managed by the system and are refreshed automatically as the quote changes.
CREATING AN AGGREGATION LINE TEMPLATE
The first step to use aggregation lines consists of the creation of a line template.
An aggregation line template is a special type of line template. It defines which lines to aggregate and how to group them.
The creation of this type of line template just requires to select AGGREGATION_LINE as the type.
Aggregation line templates
- Only one AGGREGATION_LINE template is allowed per quote model.
- Only the Update permission is available for this template type. Create and Delete permissions are not available as lines are managed automatically by the quote.
CONFIGURING GROUPING RULES
The second step consists of defining which lines will participate to the aggregation and on which criteria.
The grouping rule defines how lines will be grouped together. It consists of two parts: an optional filter to restrict which lines are considered, and an ordered list of grouping variables.
In order to define the aggregation rules for a given AGGREGATION_LINE template, proceed as follows:
- In the Quote Designer, navigate to Data Model in the main menu bar and select Column and Lines.
- Select the AGGREGATION_LINE Template that you have created at the previous step above.
- In the left part of the designer, access the Aggregation Definition section and click on Add.
- The first screen allows you to specify the scope of the lines that will be aggregated by defining rules to filter the content of the quote. In the below example, only the lines in the quote of type PRODUCT or SPECIFIC will be part of aggregations. This step is optional. If no rule is defined, then all quote lines are included in aggregations.
Period-related variables cannot be used in the filter.
- Click Next.
- The second screen allows you to define the columns that will drive the aggregation. In the example below, the lines filtered down in the first screen will be aggregated per brand:
- Only TEXT and BUSINESS types of variables can be used for the grouping.
- Period-related or multiple-value variables are not allowed.
- The number of grouping variables must be between 1 and 3 (maximum 3 levels of aggregation).
- The order in which the variables are selected determines the levels of grouping hie
Save.
- When the rule is properly defined, then it is visible in the left part of the Quote Designer:
CONFIGURING AN AGGREGATION VIEW
In order to show aggregation lines in the quote, the last step consists of declaring a grid widget and associating a quote view where aggregation lines are visible.
In the view you use to display aggregation lines in your quote grid, make sure to set
the Aggregation Line visibility to Aggregation line only or All lines to make aggregation lines visible:
MODELING ADDITIONAL AGGREGATION LINES FEATURES
The following features are optional but provide additional capabilities linked to aggregation lines.
Configuring the Filter Action
Once aggregation lines are in place in a dedicated grid based on a dedicated view, you have the opportunity to define an action to display in another grid / view the lines participating to a specific aggregation line.
More in details, imagine two grids side-by-side in the quote interface: one is displaying aggregation lines only, whereas the other shows only standard quote lines. With the Apply Aggregation Line
Filter action defined, you can select an aggregation line and click on the action.
The grid displaying only standard quote lines is then filtered down to show only the lines participating to this aggregation line.
The Apply Aggregation Line Filter action must be explicitly configured to be available to users. You can add it to grid widget actions and pinned actions.
In order to configure this action, proceed as follows:
- In the Quote Designer, navigate to User Interface in the main menu bar and expand the
Actions section in the left part.
- Open the Filter repository of actions and click on + to add a widget.
- Give it a name and description and select Apply Aggregation Line Filter as the type. Optionally set permissions. Click on Add.
- Set the view showing standard quote lines that participated to the aggregation:
- Click on the link Go to View Definition.
- In the Aggregation Line visibility section in the right part, make sure that No aggregation line is selected.
- The last step consists of making the action available on the corresponding grid.
Configuring Interactions with Quote Lines
Aggregation lines are linked with standard quote lines in the sense that the aggregated data is coming from those quote lines. Any change on quote lines participating to the aggregation could thus impact aggregation lines. Conversely, in addition to this one-way relationship, you have means to perform a change on an aggregation line that could trigger an update of the associated quote lines. A specific formula (PARENT_AGGREGATION) must be used on the quote line participating to the aggregation so it can be updated if a specified column of the aggregation line changes (See an example here).
To configure such a scenario in the Quote Designer, you must materialize the parent relationship of a quote line template with an aggregation line template and specify which column of the aggregation line should update the corresponding column of its parent quote lines.
We assume here that you already have a line template for quote lines and one for aggregation lines and that each have a column representing the same type of data (e.g. discount).
In the Quote Designer, proceed as follows:
- Navigate to Data Model in the main menu bar and select Column and Lines.
- Select the quote line template representing the lines participating and select the cell to update from aggregation lines (e.g. discount)
- In the left part, navigate to the Calculation section and click Edit.
- Enter the formula with the line template of the aggregation line and the column on the aggregation line template triggering the update of quote lines:
Save.
Thanks to this formula, anytime you will set a value in this column of the corresponding aggregated line (e.g. discount), the corresponding cell of the quote lines participating to the aggregation will be updated with the same value.
For example:
The update is possible only from the lowest level in the hierarchy of aggregation lines. It means that if you have more than one level of aggregation, then only the level of the lowest children can be leveraged for the modification of quote lines.
