Overview
Not every shopper should see the same store. A wholesale buyer gets trade prices and a range retail never sees. A negotiated account has its own agreed pricing. A retail till carries a subset of what the website does. A catalog answers both halves of that at once: what an audience sees, and what they pay.The two modes
The single most useful thing to understand about catalogs is that an empty assortment means something different from a full one — it’s the switch between the two ways a catalog is used.Pricing overlay
Assortment empty. Nothing is hidden — the audience browses the normal store — but the attached price list applies.This is how “this company sees everything, just at their negotiated prices” is expressed.
Restricted range
Assortment has products. The audience sees only what’s in it.This is how a wholesale-only range, or a channel-specific selection, is expressed.
Creating one
price_list: null), or deleting the catalog itself, deletes the owned list rather than releasing it. A released list would match by its own rules, and an owned list has none — so it would begin pricing every shopper in the store. It is a soft delete, so the prices stay recoverable.
Filling the assortment
Choosing the audience
A catalog is assigned to a buyer audience:
A Channel is not assigned — it names its catalog directly via
default_catalog_id, which applies to everyone buying through it when nothing narrower does.
A company assignment covers the whole subtree. Assign the group-wide catalog once at the root of a company tree and every division below inherits it — no re-assigning per branch. A branch can still add its own catalog on top.
What a shopper ends up seeing
The three ways of reaching a buyer are tried in turn, and the first one that finds a catalog answers on its own. Once that’s settled, everything it found combines:1
Find the catalogs that apply
For a company buyer, that’s the catalogs on their node and its ancestors. Otherwise their customer group’s catalogs. Otherwise the channel’s default catalog, if it has one.
2
Combine the assortments
The shopper sees the union of what those catalogs contain — so a division’s extra catalog adds to the group’s range rather than replacing it.
3
Any empty assortment lifts the restriction
If one applicable catalog is a pricing overlay, the restriction is off and the shopper sees the full range. An overlay is explicitly “don’t hide anything”, and that has to win — otherwise adding negotiated pricing would accidentally narrow someone’s catalog.
How pricing resolves
Prices are checked in order, and the first match wins:- Price lists attached to the applicable catalogs, nearest first — the buyer’s own company node before its parent’s
- Ordinary price lists whose rules match
- The product’s base price
When one company holds several catalogs, the buyer pays the best price among them. Nothing about two assignments on the same node says which of them a company is on, so neither outranks the other and the cheapest applicable price wins. The order catalogs appear in on the catalogs screen is display order — it never decides money.Quantity breaks are part of that comparison: the price compared is the one for the quantity being bought, so a catalog with a deep break at 24 units wins from 24 up and may lose below it.

