More than one promotion can be active at the same time. It is possible to choose whether a promotion should be applied:
The order of appliance is important. If two promotions are defined, the appliance order will always be the same for each consumer.
This document explains the different promotion discounts available and their priorities.
A promotion action type is the kind of discount or rebate. There are four different groups:
Each promotion type has a priority. The promotion priority defines the order the promotions are applied in the web shop.
Note
The promotion with the highest priority comes first. If there exist promotions with the same priority, the start dates are taken into consideration: The newest promotion applies first. If the start dates are identical, the promotion IDs are compared and sorted ascendingly.
The following table lists all available promotion types and the corresponding priorities as they are created via DBInit. The priority of an action type can be changed.
Promotion Types | Default Priority |
---|---|
Item Target Price | 1.000 |
Item Percentage Off | 900 |
Item Value Off | 800 |
Shipping Target Price | 700 |
Shipping Percentage Off | 600 |
Shipping Value Off | 500 |
Order Percentage Off | 400 |
Order Value Off | 300 |
Automatic Gift | 200 |
Hidden Gift | 100 |
Info
Hint: Take a look at the Channel Preferences | Promotion Preferences | Type Priorities tab. There you can find the priorities of the different promotion types.
A newly created promotion does not have any rule. In other words, no conditions or actions are defined. Its priority is 0.
Setting its action sets its priority implicitly. In other words, changing the action also changes the promotion's priority. In addition to the implicit priority, it is possible to configure an explicit one. If a promotion has an explicit priority setting, this setting is taken into account while determining the order of appliance.
A promotion can have more than one rule. Each rule can have a different action. In this case, the promotion's priority is defined by the action of the very first rule. The screenshot shows a list of promotions. Promotion1 has two rules: the first one grants a Shipping Percentage Off discount, the second one an Item Percentage Off discount. However, the promotion's priority is set by the Shipping Percentage Off discount (= 600).
Highest ranked promotion messages (this includes all static messages from the promotion message tab and dynamic order messages) will always appear first. Everywhere in the storefront where the number of shown promotion messages is restricted, the promotion priority influences the visibility of messages.
For further details on promotion messages refer to Concept - Promotion Dynamic Message.
The promotion interface offers a method to set the promotion's priority. It is a native attribute in database entity Promotion
.
A newly created promotion has priority 0. The pipelet UpdatePromotionActionPriority
updates the promotion's priority as soon as the first action type is configured. If all action types are deleted afterwards, the priority is set to 0 again.
Two preference definitions are created via DBInit:
Preference | Data Type | Default value | Meaning |
---|---|---|---|
PromotionActionPriorities | multiple string | null | A consecutive order of promotion action types, separated by '|' |
PromotionActionRankingSteps | integer | 100 | Defines the standard step size between two successive priorities (if the preference is not set, it falls back to 100) |
The initial order of action types is provided by calling getDefaultRank()
from PromotionActionPriorityHandler
for each action descriptor. The promotion manager can change the action types in the back office at the promotion's preference section. In that case, the newly created order will be stored as preference PromotionActionPriorities
.
Per default, the step size between priority values is 100. If anyone wishes to change this, a new channel domain preference named PromotionActionRankingSteps
has to be introduced via DBInit. For example:
PrimeTech-PrimeTechSpecials-Site.PromotionActionRankingSteps=50
in ChannelDomainPreferences.properties
(ucm_demo).PrepareDomainPreferences com.intershop.ucm.demo.dbinit.mcs.preference.ChannelDomainPreferences
and click Run. Intershop 7 permits running multiple promotions at the same time. Therefore, it may happen that several valid promotions apply to one basket. To define the calculation order of the promotions, marketing administrators can define a priority for each promotion, also see Priority.
As a result, the promotion with the highest priority is calculated first.
It is possible to define whether a promotion can still apply if another promotion has been applied before, therefore a combination type must be chosen.
Thus, it is possible to define that more than one promotion can be applied to the same order at the same time.
The following options are available:
Combination | Meaning |
---|---|
free combinable | A promotion can be applied even if another promotion has been applied before. |
not combinable | This promotion cannot be applied if another promotion has been applied before, and vice versa: If it applies first, no other promotion can be applied later on. |
partially combinable | This promotion can only be combined with a dedicated set of other promotion action types. If a promotion from the forbidden set has been applied before, this promotion cannot be applied, and vice versa: If this promotion applies first, none of the forbidden ones can apply any more. |
Note
The promotion combination can only be defined by promotion action types. It is not possible to say Promotion A cannot be applied together with Promotion B.
The main class for applying promotions in the basket is PromotionCalculationRule
. It fetches all applicable promotions for the current user.
The result contains a list of promotions ordered by rank descendingly. In other words, the promotion with the highest rank always comes first. If two or more promotions are of the same rank, they are ordered by start date ascendingly. In case the start date is identical, the promotions are ordered by ID ascendingly. (The promotion ID is a unique string which can be set while creating a new promotion.)
Afterwards, for each applicable promotion it is checked whether its condition is satisfied. If so, the discount is granted. However, there are additional circumstances which prevent a discount from being granted even if the promotion condition fits: