View source | Discuss this page | Page history | Printable version   

Retail:Discounts and Promotions Rules



Commercial Extension Module (zero cost) Discounts and Promotions is a free commercial module that comes with the Openbravo for Retail distribution starting from RMP17 (Retail Maintenance Pack).

It provides four new Promotion Type implementations. This document explains how to define promotions based on new rules. Before using this document, it is recommended to first make oneself familiar with promotions in general which is explained in the Discounts and Promotions document.

New discounts engine

Bulbgraph.png   Note: Starting from 3.0RR19Q4, the WebPOS includes the new discount engine

The discounts engine has been reimplemented using newer technologies and patterns. The new implementation has been designed as an independent component, built on plain Javascript functions, which can be reused and deployed in different ways. The WebPOS will use this new engine, but it will also be used as part of a Webservice that can be consumed by external systems, to provide a list of discount candidates which should be applied to a given ticket.

Even though the implementation is completely new and built from scratch, from a functional point of view it should work essentially the same as the previous one. Old definitions of discount rules and configuration are still valid, and each discount should work like before.

Still, there has been a few changes and improvements in the new implementation:

Like in the previous version of the engine, all the specific filters are checked to confirm whether the discount can be applied to a particular order or not. In order for the discount to be applied, the order must fulfill the criteria for all the filters. So, as an example, if a discount excludes some business partners, includes some specific products, and some specific characteristic values, it will be applied only if the order is not linked to any of those business partners, includes at least some of the products, and those products also have the specified characteristics.

Promotion Types

In the following sections each promotion type included in this module is explained in detail.

Additional modules can implement new rules, such as:

Retail discounts and promotions can be used together with the Coupons functionality, to implement discounts that apply to a given customer, and with a limited number of uses.

Fixed Percentage Discount

How to Define

The only field to fill is Discount %, which defines the percentage to be discounted.

How it Works

It discounts a fixed percentage of the base price.

Buy X pay Y of same product

How to Define

This rule applies to specific Products or to all products inside specific Product Categories. These can be defined in the Filter Options.

How it Works

When there are at least X units of a product that is eligible, the promotion is applied. For each X units, Y are paid. So for each X units, X-Y units are discounted.


Buy X pay Y of different product

This rule is similar to the previous one, but the numbers for X and Y are calculated by summing all quantities of any of the products the rule can be applied to.

How to Define

How it Works

This promotion can be applied whenever there sum of the units of all products that fit the filter for the promotion is at least X.

Grouping of products is done in the most favourable way for the customer. The most expensive products are grouped first and in case some of the candidate products cannot be included in the promotion (because total quantity is not a multiple of X), these are the cheapest ones, see example for ticket 1 below for a detailed explanation on this topic.

The following 2 examples depict how products are selected to be included in the promotion. If subtype is Apply Average Price, groupings would be done in the same way.


Buy X and get Y as gift

This rule defines what the number of units (X) of a product needs to be bought, in order to be able to discount Y units of another product.

How to Define

How it Works

This promotion is only applied when in the ticket there are at least the number of units described as Quantity for all the products in the list of the rule, in this case, lines of products marked as Gift Product will be discounted in a number of units equal to Quantity of this product in the rule definition.



A pack is a list of products with a fixed price when they are all included in the ticket. A pack also works as a product in Web POS, allowing you to sell a pack, when a pack is added as it was a product, new lines for each of the products in the packs are inserted in the ticket.

How to Define

The packs are grouped in a product category called Pack. An image for this category can be defined by selecting the type pack in Discounts and promotion types window (System Administrator role is required to access) and then uploading an image for it.

How it Works

This promotion is only applied when the ticket includes all the products of a defined pack.


Using packs from Web POS

When a promotion of type pack is defined a new product category called "pack" appears in the browse tab of Web POS. This product category contains all the defined packs.

View larger

To sell a pack, just browse the category and click into the selected pack. This action will include the products in the ticket and the promotion will be applied.

View larger

Discretionary Discounts

Unlike the rest of promotions and discounts, this kind of discounts is not automatically applied to the ticket in base of some rules. It is the cashier who needs to manually apply them.

Discretionary discounts types

User defined ones allow the user that inserts the discount to edit the amount or percentage to be discounted from the line. Fixed ones predefine this discount, user is allowed to select one of the available discounts, but she cannot edit it.

How to Define

Bulbgraph.png   This option is included starting from 3.0RR18Q2
View larger
Bulbgraph.png   This option is included starting from 3.0RR19Q1
View larger


This utility can be secured through preferences.

There are 2 preferences which must be set as Y in order to enable discretionary discounts.

Note: The menu item to access to discretionary discounts will be disabled until the ticket have lines.

View larger
Role Based Security
Bulbgraph.png   This option is included starting from RMP26

It is possible to define for a Discretionary Discount which roles can apply it. Note a user/role in order to apply a Discretionary Discount needs to be granted also with the preference explained in the section above.

Security based on role is assigned in the same way other filters are: using the Role subtab together with the Included Roles field in Discounts and Promotions window.

Approvable Discounts
Bulbgraph.png   This option is included starting from RMP26

Discretionary discounts marked as Approval Required, require of a supervisor to approve the ticket before it is paid. Note the approval is requested prior to close the ticket but not when the discounts are added.

The preference to define supervisors for this action is Web POS Discretionary Discount Approval. For more information on how to configure supervisors read this document.

Using Discretionary discounts from web POS

1. Create at least one discretionary discount. In this case we will create two discount. (fixed percentage and user defined percentage)

View larger
View larger

2. Add products to the ticket, and through the menu select Receipt discounts (Before Ticket discounts)

View larger

3. Select the discount that you want to apply.

View larger
View larger
View larger

4. Select the lines which will be affected by the discount. (All the lines can be selected checking Apply to all lines)

View larger

5. Indicate if this discount will override existing promotions. If this field is checked, no more promotions will be applied to affected lines. When unchecked, discretionary discounts are applied before any other discount.

6. Apply the discount.

View larger

7. The new discount is applied to the ticket

View larger
Delete Discretionary discounts
Bulbgraph.png   This option is included starting from RR17Q2

If you have one or more lines selected you can go to EDIT tab and click Delete Discount button. Once clicked a popup will be raised asking for the discounts to remove. If you click Cancel button nothing will be removed.

View larger
Delete Discretionary discounts with multiple instances
Bulbgraph.png   This option is included starting from RR18Q2

If you have several instances of the same promotion to delete in the same line, the "Discounts to delete" popup shows each promotion instance separately to allow the user to delete only one instance if necessary.

View larger
Multiple instances per line
Bulbgraph.png   This option is included starting from RR18Q2

If you configure a discretionary promotion as "Allow multiple instances per line" the user is able to apply the same discretionary promotion more than once per line.

View larger

Discounts & Promotion per Hour

Bulbgraph.png   This option is included starting from RR19Q3

It is possible to define the Start time and the End time within the day in the definition of Discounts and promotions. This configuration will only be applicable for Openbravo Web POS, not in the Openbravo backoffice.

In the new section Availability, you can set the time in the current day when the promotion is active.

View larger

You can select a time interval for the whole week or for each day of the week.

For whole week mark the checkbox All Week and week day are hidden and you can introduce Starting Time and Ending Time.

You can select different hours for each day of the week if you uncheck the All week checkbox and mark the day of the week and enter Start time and End time for each day.

When the promotion is applied in WebPOS, there is a margin of a few minutes before and after the start and end time respectively. To configure this margin use the preference: Extra time for hourly discounts (in minutes)

Bulbgraph.png   This option is included starting from RR22Q2

New Availability tab has been added to replace Availability section.

With this new tab, it is possible to define more than one Start time and End time for the whole week or for each day of the week.

View larger

Discounts which include or exclude certain characteristic values

Bulbgraph.png   This option is included starting from RR20Q3

It is also possible to define discounts that should be applied only when certain characteristic values are present in a product, and that should not be applied if certain characteristic values are present. Both are defined independently, so it is possible to define discounts that should be applied if some values are set, if some values are not present, or if several values are present and others not present.

This is defined in two subtabs of the Discounts and Promotions window, named "Included characteristics" and "Excluded characteristics".

View larger

Both for included and excluded characteristic values, you have two different options:

Discounts incompatibilities

Bulbgraph.png   This option is included starting from RR21Q1

From this release, it is possible to define discount rules, or discount types, incompatible with one particular discount rule:

View larger

If defined, then if any of these discount rules or discount types are applied to a line, then this discount will not be applied to the line, even if the rest of the conditions to apply it are fulfilled.


1. Promotions that require multiple lines to be checked in order to know if they can be applied or not (Buy X pay Y of different product and Buy X and get Y as gift), cannot be used in a chain of promotions in case multiple ones are applicable to the same line. However, simple promotions can be applied before. Therefore, in their definition, Apply Next Discount field must be unflagged.

2. When a line participates in a promotion, even though not all the units in that line are part of the promotion, the whole line is considered to be in the promotion, so these units that are not participating cannot participate in another promotion.

3. Even for a single promotion rule, the best possible combination for the customer is done, this rule is not applied among different promotions. This means that in case two different promotions can be applied to the same line, the one with a higher priority will be applied first, even when the other one might be more favourable to customer.

4. Manual (discretionary) discounts are always applied first, and only once thy are applied, automatic discounts are considered.


5.Field Product Category is not working with hierarchical Product Category. If you want to include/exclude categories for a promotion you need to include all categories in the list. If we add a category, it will affect to products of this category, it will not affect products of categories hierarchically below/above the added category

Retrieved from ""

This page has been accessed 39,814 times. This page was last modified on 2 December 2022, at 06:24. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.