Price List
A named set of offers for one channel, customer group or period; it groups prices, it holds none.
A Price List is a named set of offers for one channel, customer group or period. The prices live on each offer. Its seller and currency are derived from those offers, never stored. A price change is a new list with new dates, not an edit of an old one. BDS type: schema:OfferCatalog.
Fields
| Field | Storage | Meaning |
|---|---|---|
| Name* | Text | Audience and year, as a seller says it |
| Sales Channel° | Single choice | Direct, Wholesale, Online, Marketplace; blank means every channel |
| Valid From° | Date | First day the list applies |
| Valid Through° | Date | Last day; blank means still current |
| Is Default° | Checkbox | Sellers start from this list when the client has none |
| Lifecycle Status* | Single choice | Draft, Active, Archived |
| Offers | Linked records | Offers that link this list; set from the offer |
| Seller (from Offers) | Rollup | Distinct sellers of the linked offers |
| Currency (from Offers) | Rollup | Distinct currencies of the linked offers |
| List Check | Formula | ⚠ fragments for mixed sellers, mixed currencies or no offers |
| Currency - OLD | Single choice | Retired 2026-09-23; nothing reads it |
| Owner - OLD | Linked records | Retired 2026-09-23; nothing reads it |
| Created At | Created time | When the row was created |
| Created by | Created by | Who created it |
| Intake Step | Formula | Routes Draft or blank-status rows to their next creation step; blank for Active and Archived |
| Tags° | Linked records | Tags (mirror); optional |
Reference grid captured on 2026-10-28, before the intake views and label updates. Use the current view names in this guide.
Calculated rules
List Check
IF(FIND(" | ", {Seller (from Offers)} & "") > 0, "⚠ Offers from more than one seller. ", "") &
IF(FIND(" | ", {Currency (from Offers)} & "") > 0, "⚠ Offers in more than one currency. ", "") &
IF(LEN({Offers} & "") = 0, "⚠ No offers on the list. ", "")
The two rollups read Seller* and Price Currency* of every linked offer. Their descriptions say they return distinct values joined with a bar; confirm the aggregation formula in each rollup’s field settings.
Links and cardinality
One list has many offers. An offer should belong to at most one list, but Price List° on the offer accepts several. Is Default° should be checked on exactly one active list per channel and currency; nothing checks it.
Intake routing
The creation intake uses these local formulas. Active and Archived records leave the routed steps; lifecycle changes remain manual.
Intake Step
IF(OR({Lifecycle Status*} = "Draft", {Lifecycle Status*} = BLANK()), IF(LEN(TRIM({Name*} & "")) = 0, "Create - 1", "Create - 2"), "")
Lifecycle
Create this record through the intake.
Draft while it is being assembled, Active while sellers quote from it, Archived when a newer list replaced it. Set Valid Through° before archiving.
Example
Name* = Direct - 2026; Sales Channel° = Direct; Is Default° checked; Lifecycle Status* = Active; three offers; Seller (from Offers) shows one company; Currency (from Offers) = USD; List Check blank.
