The Promo basket validation processing will apply promotions using a Best Deal calculation. This ensures that promotions do not overlap and so discounts cannot be stacked (except where a basket level discount is applied on top of line level discounts). For more information on how the Promo engine applies these rules, see Best Deal and Conflict Resolution.
In the majority of cases the best deal rules of the Promo engine will meet the needs of typical promotion configurations. For more complex scenarios, or where you have a set of promotions that should be stacked (or applied before other promotions) Promo provides the Always Apply functionality. An example of where this might be applicable is where you have a staff discount that should be applied either before all standard promotions, or on top of all standard promotions.
The Always Apply functionality is available where the setting Permit layering promotions outside Best Deal is configured with a value of true.
The Always Apply functionality provides new fields when creating and modifying promotions (see Configuration Promotions / Basic Information). By selecting the Always Apply tickbox, the promotion is configured to be processed outside of the best deal processing. The When to apply field indicates whether the promotion should be applied before the best deal promotions or after the best deal promotions.
Apply Before Best Deal
When the Promo basket validation establishes the promotions that can be applied to a basket, it will group them based on whether they are configured as Always Apply (before best deal), Best Deal, or Always Apply (after best deal). The Always Apply (before best deal) will be applied to a basket first. Each promotion that is applied to a basket, when configured as Always Apply (before best deal) will use the same price of the products, which is the price from the basket request. Each promotion applied in this way does not take into account previously applied promotions.
For example if there are two promotions valid to be applied to the basket, and they are both configured as Always Apply (before best deal) they will both be applied and the discounts the calculate will be based on the original price of the products and will be stacked.
Apply After Best Deal
After the Promo engine has applied the Always Apply (before best deal) and the Best Deal promotions to a basket, it will then apply promotions configured as Always Apply (after best deal). Each promotion that is applied to the basket will use the prices as they were after all previous promotions have been applied.