Discount Prioritization

March 7, 2023


Erply distinguishes:
Price lists
Simple discounts
Any kind of advanced discount, where the discount depends on the customer’s shopping cart.
Manual discount (Made at the POS by the cashier. Applies to the cart.)

Order of Discount Application

Erply discounts in the following order:
Price lists
Manual discounts

These three levels (price list → manual discount → promotion) are largely independent, meaning that a discount applied in one step never prevents another discount from being applied in the next step.

Discount order exception:
When a promotion “buy these specific items for a fixed price X”. In these scenarios, the manual discount will be re-applied after the promotion.

Order of Price Lists

Price lists can be broadly identified as “store price lists” and “customer price lists”.
A customer price list is one that is associated with a customer group or an individual customer. These will likely be a rare occurrence (as they don’t allow variations per province), so let us focus on “store price lists.”

Store price lists apply in the following order:
Region price lists.
Customer group-specific region price lists.
Store price lists.

Price lists do not stack or accumulate. A price list % is discounted from the product card price, NOT the precious price list. (If needed, this can be configured differently.)
The last price in the list (not the lowest price) wins. (This can be configured differently if needed). This means that if there are five price lists assigned to one location, Price List 5 will win, not Price List 1.
Within one price list, if there is any overlap, a price will override a percent.

For franchises:
When a user is preparing a store price list, they cannot add any items that are already on a franchise-level price list during the same period.
However, if a franchisee store has already launched their own price list, it won’t get automatically disabled/overridden by a flyer or a Manager’s Special.

Order of Promotions

Promotions are applied according to their type, and within each type, from oldest to newest.

The order of types is:
Get X amount of specific products for a fixed price
Promotions triggered by a specific product. Item discounts, then receipt discounts.
Promotions triggered by invoice total. Item discounts, then receipt discounts.
Promotions triggered by reward points.

A basket item that triggers a promotion cannot trigger any other promotions (this can be overridden by marking both promotions as stackable), nor receive an item-level discount.
A basket item that has received an item-level discount cannot receive another item-level discount, nor trigger any other promotions.

Receipt discounts ($ off, % off), however, will all stack freely, without limitations, and will apply to items that have already received an item-level discount.

Manual Operations in POS

POS allows line-item discounts and receipt discounts.
Receipt discount is the same % applied to all item rows, so a receipt discount will override any line discounts before it.