Quote Model Options
How to define your quote model?
In order to define your own quote model please check the following steps:
- [Log-in into CPQ Designer]
Once logged, open the standard model.
- [From the Quote Designer]
- Save the quote As a new quote model:
- Save the quote As a new quote model:
- [Implement the business Logic]
- You have just created a new quote model. You can now implement your own computations and
actions.
- You have just created a new quote model. You can now implement your own computations and
- [Adjust the quote model for specific integration]
Quote integrated to CCS, salesforce.com or any other third party software may require some adjustments.
For salesforce.com integration, please refer to the corresponding Administration and customization guides.
How to setup the services used in the quote model?
You can setup your own services either directly in the XML setting file or if they are common (i.e. available for all end-users), you can define them in the cartService.properties file
CONFIGURATOR SERVICE INITIALIZATION
For each Configurator service (named “CONF_XX” in the table below), provide the following properties:
| PARAMETER | DESCRIPTION |
|---|---|
| service.CONF_XX.confType | Major version of the Configurator. Fixed value: CP7 |
| service.CONF_XX. xmlLayoutURI | Physical path determining the layout configuration file |
| service.CONF_XX. xmlManufacturingLayoutURI | Physical path determining the layout configuration file used to visualize the generated manufacturing data |
| service.CONF_XX. xmlConfigurationURI | Physical path determining the run configuration file |
| service.CONF_XX. xmlSavedConfigurationURI | Physical path determining the file in which the configuration result will be saved |
| service.CONF_XX_(US, FR…) | Description of the service displayed in the Quote UI |
In order to inject a setting (or override a given value) from the declaration of the service you have to define the CPE of the setting and its value as follows: service.CONF_XX.CPE.Settings.Session.MySetting=MySettingValue
CATALOG SERVICE INITIALIZATION
For each Catalog service (named “CAT_XX” in the table below), provide the following properties:
| PARAMETER | DESCRIPTION |
|---|---|
| service.CAT_XX.catalogType | Major version of the Catalog. Fixed value: CT7 |
| service.CAT_XX. xmlLayoutURI | Physical path determining the layout configuration file |
| service.CAT_XX. xmlCatalogURI | Physical path determining the run configuration file |
| service.CAT_XX. xmlSavedCatalogURI | Physical path determining the file in which selected products will be saved. |
| service.CAT_XX_(US, FR…) | Description of the service displayed in the Quote UI |
| service.CAT_XX.targetCPE | Allows opening a Catalog service directly on the object pointed by a given CPE |
| service.CAT_XX.targetPage | Allows opening a Catalog directly on a given collection page |
In order to inject a setting (or override a given value) from the declaration of the service you have to define the CPE of the setting and its value as follows: service.CAT_XX.CPE.Settings.Session.MySetting=MySettingValue
targetPage / targetCPE
In cartServices.properties, targetPage and targetCPE settings may be used to point or open a service directly on a specific object with its dedicated UI page.
These settings have to be added to an existing service. For example:
### Source Service CAT ###
service.CAT_XX.catalogType=CT7
service.CAT_XX.xmlLayoutURI=catXXUI.xml
service.CAT_XX.xmlCatalogURI=catalog.xml
service.CAT_XX.xmlSavedCatalogURI=saved-catalog.xml
service.CAT_XX.targetCPE=CPE.workspace/CL/cat.CL/col.CL/colX
service.CAT_XX.targetPage=collectionPage
service.CAT_XX.FR=Catalog
service.CAT_XX.US=Catalog
In that case, opening the catalog from the quote will display at first the collection page of collection colX.
You can point to various types of objects in the catalog tree (Collections, StandardItems, SalesProducts, GuidedSelling).
For instance:
service.CAT_XX.targetCPE=CPE.workspace/CL/cat.CL/col.CL/colX
service.CAT_XX.targetCPE=CPE.workspace/CL/cat.CL/col.CL/colX.SI/siX
service.CAT_XX.targetCPE=CPE.workspace/CL/cat.CL/colGuided.CP/guidedX
The “.workspace” in the CPE must be respected.
For each kind of object one wants to point on through the targetCPE setting, there is a dedicated UI page to specify with the targetPage setting. It can be any UI page available in the UI xml file specified in the service (xmlLayoutURI).
See below table for examples of corresponding values between targetCPE object type and targetPage:
| OBJECT TYPE | TARGETCPE EXAMPLE | TARGETPAGE |
|---|---|---|
| collection | CPE.workspace/CL/cat.CL/col.CL/colX | homePage, collectionPage |
| collection with a GS attached to the collection | CPE.workspace/CL/colX | collectionPage, needAnalysisPage |
| SI, SP | CPE.workspace/CL/cat.CL/col.CL/colX.SI/siX | productPage |
| configuration | CPE.workspace/CP/cp.FO… | configurationPage |
REPORT SERVICE INITIALIZATION
For each report service (named RPT_XX in the table below), provide the following properties:
| PARAMETER | DESCRIPTION |
|---|---|
| service.RPT_XX.appBuiltXML | For reports based on dynamically generated XML content, specifies the general XML structure |
| service.RPT_XX.appBuiltXMLPolicy | For reports based on dynamically generated XML content, specifies the custom policy that rules the elements included in the XML structure (see below for more details) |
| service.RPT_XX. appBuiltXMLType | For reports based on dynamically generated XML content, indicates, indicates whether the XML content should contain both codes and descriptions (value: “complete”) or only the codes (value: “fast”) |
| service.RPT_XX.encoding | Specifies the XML encoding (default value: “UTF-8”). Must not be changed |
| PARAMETER | DESCRIPTION |
|---|---|
| service.RPT_XX. mainDataSourceType | Specifies the main data source to be used for reports. Possible values: “POOL” (existing data source pool), “DB” (database), “appBuiltXML” (dynamically generated XML buffer) and “specificXML” (specific XML file) |
| service.RPT_XX. outputFormat | Report format. Possible values: “User Choice” (default value), “PDF”, “RTF” (Rich Text Format), “HTML”, “XLS”, “DOCX” or “XLSX” |
| service.RPT_XX.subDirectory | Physical sub path used to isolate the various reports. |
| service.RPT_XX.reportFile | Physical sub path pointing to the report template file used to generate the report |
| service.RPT_XX. reportLanguage | Report language. Possible choices: the quote language (value: “entity”), the user language (value: “user”) or a fixed language (value: “FR”, “US”) |
| service.RPT_XX. reportMultiLanguage | Indicates whether reports point to physically different language-dependent reports. It can be “yes” or “no” |
| service.RPT_XX.xpathXML | Indicates the XML entry point to be used by the Xpath request |
| service.RPT_XX. allowTableContentSelect | Indicates whether the report should print a table of content (only applicable if it has been provided in the report template) |
| service.RPT_XX. allowParagraphSelect | Indicates whether paragraphs are managed in the report (only applicable if paragraphs have been provided in the report template) |
| PARAMETER | DESCRIPTION |
|---|---|
| service.RPT_XX. settingsAutoSave | Allows to save the reports settings automatically. It can be “yes” or “no” |
| service.RPT_XX. keepLastDocumentOnly | If several documents are generated during the current session for the current service, only the last one is kept. It can be “yes” or “no” |
| service.RPT_XX.testFile | When this parameter is defined with a path (folder/file), the quote XML content is saved in the file pointed by this path anytime the report generation is triggered. If not defined, the XML is not saved. |
- By default, the generated file is named as follows:
serviceID_SimpleDateFormat{_Counter).pdf
The _Counter element is not included in the filename if only one file is generated during the session. As soon as at least two files are generated the same day (same SimpleDateFormat) and during the same session, the _Counter element will not be included in the filename for the first generated document, will be equal to 1 for the second generated document, will be equal to 2 for the third generated document, etc.
- a parameter "reportFileName" can be used to define the name of the output file.
- its value can be set both in the jasper template or as a cart session value - typically sent by the CRM. In case it is found in both, the cart session value overrides the template value.
- any " " characters will be replaced by "_" characters.
<parameter name="reportFileName" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["myName"]]></defaultValueExpression>
</parameter>
{reportFileName value}{_Counter).pdf
In that case, the _Counter element is not included in the filename if only one file is generated during the session. As soon as at least two files are generated during the same session,
the _Counter element will not be included in the filename for the first generated document, will be equal to 1 for the second generated document, will be equal to 2 for the third generated document, etc.
- In case the reportFileName has invalid characters, the report name is set to be the default value for the reportFileName parameter from the report template
- In case there is not a default value for the reportFileName parameter from the report template, the format is
serviceID_SimpleDateFormat{_Counter).pdfNote: At runtime, the used entry template for jasper is looked up into the following directory:{CPQ_Home}/conf/run/reports/jasper/{subDirectory}/{reportFile} Or
{CPQ_Home}/conf/run/reports/jasper/{subDirectory}/{LanguageID}/{reportFile} if Multilanguage = ‘yes’.
Note: At runtime, the files and images uploaded to generate a report are NOT stored. This means the document will be generated properly after the upload.However the uploaded file is not persisted. That means that trying to generate the document in another session without uploading new documents / images will not work.
Report content optimization policy
When generating reports automatically, the more elements are included, the more the generation takes time. One way to optimize the report generation thus consists in reducing the size of the content processed by Jasper.
To reduce the size of this XML flow, a policy mechanism can be configured in the cartServices.properties file as a parameter of the report service:
service.RPT_XX.appBuiltXMLPolicy
This parameter can have several values:
- full: all the elements are included in the XML flow
- light: all the elements, except the itemXML structure, are included in the XML flow
- custom: the full content can be customized
In the case of a custom policy, the inclusion of the following elements in the XML flow is (de)activable according to a Boolean:
- quoteHeader: inclusion of quote header data
- totalCells: inclusion of quote footer data
- productSublines: inclusion of SI/CP sublines
- confItemXML: inclusion of complete configurable products XML structure
- catItemXML: inclusion of complete catalog products XML structure
- quoteLines: inclusion of quote linesNote: By default, if the parameter is not filled, its boolean value will be equal to "true", meaning that the element (quote header, etc.) IS INCLUDED in the XML flow
The following parameter allows to select the quote column(s) to include in the XML flow. All other columns are ignored:
- columnName: the separator used between column names is "~"Note: By default, if the parameter is not filled, all the columns are sent to Jasper.
For instance, the syntax of this policy mechanism within the cartServices.properties file can be:
service.PROPOSAL.appBuiltXMLPolicy=custom;quoteHeader=true;totalCells=true;
quoteLines=true;productSublines=true;confItemXML=true;catItemXML=true;columnName=Item Qty~ListPrice~TotalListPrice
ELINKPAGE SERVICE INITIALIZATION
For each eLinkPage service (named LNKP_XX in the table below), provide the following properties:
| PARAMETER | DESCRIPTION |
|---|---|
| service.LNKP_XX.href | External URL associated with the eLinkPage service |
| service.LNKP_XX.target [Deprecated] | Define the page display destination: _popup: the page is displayed in a new window; _contentFrame: in a frame within CPQ |
| service.LNKP_XX.noParams | Prevents additional parameters to be passed in the redirection URL: 1:Yes; 0:No |
| service.LNKP_XX.windowParameters | if the target is “_popup”, additional window parameters can be set such as: toolbar=<yes/no>, width=, height=, etc. |
