Available for projects & agency overflow · Quick reply, from the person who does the work

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.

Describe my issue Send a message

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

  1. Scoping the actual rules

    Gathering all the pricing rules actually applied, including exceptions documented nowhere but in the sales team's heads.

  2. 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.

  3. Dedicated admin interface

    A back-office screen letting the sales team create and edit a grid without technical involvement for every change in terms.

  4. 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?
No, it builds on them and complements them. Native groups remain the basis for segmentation; the rules engine adds the priority levels and exceptions the native feature can't cover on its own.
How many rules can coexist without slowing the shop down?
The number of rules matters less than their structure: a well-designed hierarchy with the right database indexes stays fast even with several hundred active rules.
Can the sales team edit the grids on its own?
That's exactly the point of the admin interface: creating, editing or disabling a grid needs no technical involvement once the module is in place.
What happens when rules contradict each other?
The priority hierarchy defined at design time settles it automatically. Ambiguous cases spotted in advance were discussed with the sales team before going live.

Describe your need in one minute

A few targeted questions so I can reply with an estimate rather than another questionnaire.

similarite
difference (facultatif)
contexte
echeance (facultatif)
Please provide an email or a phone number so I can get back to you.

Please provide an email or a phone number so I can get back to you.