One catalogue, different prices depending on the customer
A B2B distributor sold the same SKUs to very different customer profiles, each with its own negotiated price grid.
The context
The shop served several categories of professional customers: resellers, purchasing groups, companies ordering on a one-off basis. Each had negotiated different terms, sometimes by product family, sometimes by annual purchase volume. PrestaShop natively offers customer groups with simple discounts, but this mechanism stopped being enough once the rules grew more complex: a different discount depending on the brand, a margin floor never to go below, negotiated exceptions product by product for certain accounts.
Managing this with manual discounts entered account by account would have become unmanageable as the number of professional customers grew.
What I did
-
Scoping the actual rules
Gathering all the pricing rules actually applied, including exceptions documented nowhere but in the sales team's heads.
-
Designing the rules engine
Building a module that calculates the displayed price from a hierarchy of rules: base price, group discount, family discount, account exception, with a clear priority between levels.
-
Dedicated admin interface
A back-office screen letting the sales team create and edit a grid without technical involvement for every change in terms.
-
Margin floor check
Adding a safeguard preventing a combination of discounts from pushing a price below a minimum margin threshold defined per product.
What needed the most care
-
Consistency with native promotions
The engine had to coexist with PrestaShop's existing promotion rules, without double application or priority conflicts.
-
Performance at display time
Price calculation runs on every product page and listing view: the logic was designed to stay fast even with a large number of active rules.
-
Traceability of the displayed price
Being able to tell, for a given price, which rule was applied — useful when a customer questions their rate.
Frequently asked questions
Does this system replace PrestaShop's native customer groups?
How many rules can coexist without slowing the shop down?
Can the sales team edit the grids on its own?
What happens when rules contradict each other?
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.