Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Introduction

If you want to offer several products together, appero quote offers you three different options:

Name

Function

Usage

Add-on Products

When inserting the product, additional suitable products are displayed for selection in a separate tab. The selection of an additional product can be mandatory, but a fixed product combination can hardly be specified.

Serves mainly for better user guidance in the quoting process. Add-on products behave as independent products after insertion into the quote.

Bricks

Fixed product combinations can also be saved in a brick and thus be transferred to the quote with one click. Different promotion prices can also be defined in a brick.

Bricks do not offer choices like add-on products. The individual components are calculated independently of each other, there is no hierarchy within the combined products.

Bundle Products

Bundles are fixed product combinations consisting of a parent product and one or more child products, which are also mutually dependent in the quote and are offered at a total price.

Bundle products are suitable if I want to offer a fixed (promotional) package that the user should use as is in the quoting process. This kind of price dependencies between parent and child products can neither be mapped by Bricks nor by add-on products.

Note

This chapter is about the configuration and usage of the bundle products.

Configuration

Bundle products are created in the same way as AddOn products in the sf42_quotefx__sf42_ProductEntry__c " AddOn Product" object.

Select the type sf42_quotefx__sf42_Type__c "Component" or "Accessory".
The product hierarchy is created using lookup fields on existing products. Thus, a bundle product consists of a parent product - sf42_quotefx__sf42_ProductID1__c - and a child product - sf42_quotefx__sf42_ProductID2__c.
For each child product, you create a record as follows:

Object: sf42_quotefx__sf42_ProductEntry__c

Field Name

API-Name

Field Type

Used for Type

Explanation

Addon Product

Name

Text

AddOn

Component

Accessory

Internal name. Not used in the quoting process.

Parentproduct

sf42_quotefx__sf42_ProductID1__c

Lookup (Product2)

AddOn

Component

Accessory

Sets the parent product, the head of the bundle.

Childproduct

sf42_quotefx__sf42_ProductID2__c

Lookup (Product2)

AddOn

Component

Accessory

Sets the child product.

Note

The configuration defined below refers to the child product in a bundle product (type 'Component' and 'Accessory')

Type

sf42_quotefx__sf42_Type__c

Picklist

AddOn

Component

Accessory

  • AddOn (Default): The following fields do not apply to this selection.

  • Component: The quantity of the child product depends on the quantity of the parent product.

  • Accessory: The quantity of the child product can be freely edited depending on the setting.

Position

sf42_quotefx__sf42_Position__c

Number (18,0)

Component

Accessory

Set the order of multiple child products.

Display Options

sf42_quotefx__sf42_DisplayOptions__c

Picklist

Component

Accessory

Specifies where the child product should be visible:

  • Everywhere (default)

  • Only in the quote editor

  • Only in PDF

(If the option "Only in PDF" is selected, the product can still be edited in the product detail dialog).

Override Primary Product Group

sf42_quotefx__sf42_OverridePrimaryProductGroup__c

Lookup (Product Group)

Component

Accessory

Select another primary or secondary product group for the child product.

Note

These product groups can be used to define product properties, they are not used to create group sums or to arrange products in the quote.

Override Secondary Product Group

sf42_quotefx__sf42_OverrideSecondaryProductGroup__c

Discount

sf42_quotefx__sf42_Discount__c

Percent (4,2)

Component

Accessory

Set a discount for the child product.

Note

If Bulk prices apply to the product, the Bulk prices will override the discount set here.

Discount Not Editable

sf42_quotefx__sf42_DiscountNotEditable__c

Checkbox

Component

Accessory

If this checkbox is active, all discount and unit price columns in the quote are locked for editing. Discounts via product properties such as Bulk prices can still be assigned.

Ignore Bulk Price Rules

sf42_quotefx__sf42_IgnoreBulkPrices__c

Checkbox

Component

Accessory

If this checkbox is active, all bulk price rules for the child product will be ignored and custom discounts can be applied.

Required

sf42_quotefx__sf42_Required__c

Checkbox (Default: true)

AddOn

Component

Accessory

If this checkbox is active, the employee cannot remove the child product from the bundle.

Quantity

sf42_quotefx__sf42_Quantity__c

Number (16,2)

Component

Accessory

Set a default quantity for the child product.

Minimum Quantity

sf42_quotefx__sf42_MinimumQuantity__c

Number (16,2)

Accessory

Define a minimum or maximum quantity for the child product. The values are checked when you enter them in the editor.

Maximum Quantity

sf42_quotefx__sf42_MaximumQuantity__c

Number (16,2)

Accessory

Bundle calculation options

You set the basis of bundle calculation on the product record (product2) of the parent product in the "Calculation in Bundles" sf42_quotefx__SF42_CalculationInBundles__c field:

Either only the price of the parent product applies or the prices of the child products are added to the sum price. For details see below in the section "Opportunity products calculation".

Bundle products in quote

Bundle products are stored on the quote item in their individual components, recognizable by the object type sf42_quotefx__SF42_QuoLI_Typ__c.

Object: sf42_quotefx__SF42_GenLineItem__c

Bundle component

Object Type sf42_quotefx__SF42_QuoLI_Typ__c

Reference to associated bundle components

Parent product

4

-

Child product

999

Reference to the "Bundle Parent”: sf42_quotefx__SF42_QuoLI_ParentQuoLi__c(Lookup to the associated quote item, i.e. this relation is valid in this quote, not parent at the product2 level).

Outline and numbering

As with AddOn products, the numbering of the subordinate products is based on the "Position number for child product items" setting (Setup Text addOnSubPos):

Note

Please note that the order of bundle products cannot be changed manually in the quote editor. You will receive a corresponding message.

Bundle products in PDF

Please note that the order of bundle products cannot be changed manually in the quote editor. You will receive a corresponding message.

Note

If you want to visually set off the child products in the PDF, please create your own CSS classes for type999.

Also, you cannot currently influence the visibility of the columns of child products in the editor or via configuration. Please control this via the quote CSS using the following sample classes.

CSS pattern classes for the display of child products

To hide or visually modify cells at child products in the quote PDF, please control the individual columns via the CSS of the Style belonging to the quote template. You can simply add to the following sample classes as needed or customize them to your liking.

Hide Listprice column

Code Block
.type999 .Listprice {
  visibility: hidden;
}

Hide Quantity column

Code Block
.type999 .Quantity {
  visibility: hidden;
}

Hide Discount

Code Block
.type999 .Discount {
  visibility: hidden;
}

Hide Endprice

Code Block
.type999 .Endprice {
  visibility: hidden;
}

Hide Sumprice column

Code Block
.type999 .Sumprice {
  visibility: hidden;
}

Hide separator line between child products

Code Block
.type999.prodline {
  display: none;
}

Show a column again

Here at the example of the Sumprice column:

Code Block
.type999 .Sumprice {
  visibility: visible !important;
}

Formatting adjustment

General adjustments of the formatting, e.g. font, font color, font size, can be defined analogously for each column. Here at the example of the list price column:

Code Block
.type999 .Listprice span {
  font-size: 14px !important;
  color: red !important;
  font-style: italic !important;
  font-weight: bold !important;
}
Note

All these adjustments are of course only visible in the PDF, in the quote editor the user sees the columns according to the respective configuration.

Bundle products in the Opportunity process

Calculation of the opportunity products and the opportunity amount

If you copy a quote with bundle products into the opportunity, the components will be stored as independent opportunity products.

The relation of a subordinate to its parent product is stored in the field "Bundle Parent" sf42_quotefx__SF42_BundleParent__c by means of a lookup to the corresponding opportunity product.

The calculation of each product is based on the settings on the parent product record in the "Calculation in Bundles" field:

Product2

sf42_quotefx__SF42_CalculationInBundles__c

Picklist value

Explanation

Calculation in the quote editor

Calculation of the opportunity product

Use Parent Price

The prices of the child products are ignored for the price of the bundle.

Only the price of the parent product counts.

In an Opportunity, only for the parent product the unit and sum price will be calculated, the child products will be shown with amount 0.

Child-to-Parent Rollup

The total prices of the child products add up to the unit price of the parent product (or are added to its existing unit price).

Note

The list price of the parent product is always calculated from the SumPrice of the child products.
Subsequent discounts from multi-level sales such as SpecialDiscountDistributor or SpecialDiscountPartner on the child products are therefore ignored in the bundle price.

The list price of the parent product is calculated differently for the two Bundle types:

a) Component:
Parent list price (usually price book entry) + Child SumPrice / Parent quantity

b) Bundle accessories:

Parent list price (usually price book entry) + Child SumPrice

Each opportunity product is calculated separately, the parent product is issued with amount 0 or the proportional price if the price book entry is > 0.

In this way, the correct calculation of the opportunity amount is ensured at the same time.

Info

The "Calculation in Bundles" setting on the parent product thus also influences how you can evaluate the individual prices of the bundle components in reporting.

Capabilities and limitations

The following is a list of basic possibilities and limitations when using bundle products.

Area

Explanation

Possible combinations

There can be no combination of add-on and bundle products. Similarly, nesting of bundle products, i.e. bundles as child products in a bundle, is not allowed.

Combination of subordinate products of Component type and Bundle Accessories in a bundle is also not supported.

Price dependencies

Price dependencies such as Price Calculation from Product Group or Product can only be considered within child products. Thus, the parent product cannot be used to calculate a child product, likewise products outside the bundle cannot refer to child products of a bundle for price dependencies and vice versa.

Product properties

All components of a bundle, i.e. parent and child products, can have “Product Properties with/without Price Influence”. Bulk prices are also taken into account in the calculation.

The calculation is then included in the total price depending on the bundle configuration.

Custom product properties are not supported in bundles.

MediaVelox

MediaVelox product properties are not displayed on bundle parents.

Summation in quote

Child products cannot be included individually in group totals. The bundle is only included in the totals with the total price and the product groups of the parent product.

Similarly, subordinate products cannot be used to calculate a total discount from a discount matrix.

Validation

If one of the child products does not have an active price book entry, the whole bundle will be disabled and cannot be added to the quote. The user will receive a corresponding notification message.

Product search

The product is found under the name of the parent product. The child products of a bundle can still be added to the quote as normal individual products via the product search.

VAT

Bundle products should currently only be created with a uniform VAT rate, as different VAT rates on parent and child products of a bundle are currently not supported. In this case, use the alternatives Bricks or AddOn products.

Opportunity Process

Currently, the quote process with bundle products cannot be started from the opportunity product search yet. Please add the products in the quote editor first.

Lower Price Limit

The so-called Lowsell Price is calculated for the Bundle Parent based on its list price, taking into account all discounts on position and sum level, which results in the Special Discount (sf42_quotefx__SF42_QuoLI_SpecialDiscount__c). Only the Lowsell Price of the Bundle Parent is used to calculate price floors or VAT.

To calculate the Lowsell Price and Special Discount for the Child Products, their so-called BuyPriceDistributor is multiplied by the Special Discount of the Bundle Parent. This results in the lowest unit price, taking into account the sum discounts and discounts on Parent level on a pro rata basis.
However, this value can only be used for reporting purposes, for example, and has no influence on the quote calculation.

If lower price limits are to be defined for an approval process, the calculation therefore always refers to the list price of the parent product. If, for example, the price book entry of the parent product is €0 and the bundle price of €1000 is made up of the sum of the child products, then the lower price limit is calculated based on this initial bundle price of €1000.
Lower price limits for child products are not taken into account, their approval level always remain at 0.

Particularities in the calculation

The checkbox "List Price Is Editable" has no function for the parent product of a bundle if the calculation is set to "Child-to-parent Rollup".

Apex Hooks

The external pricing, so called Apex Hooks, can currently not be applied to bundle products.

Bundle Products in the Quoting Process