How a price is chosen
The same product can carry a price for everyone, a better one for a customer group, a negotiated one for one customer, bulk tiers, and a validity window. One rule picks the winner and puts it on the line.
There is no price list. “The price list” is every price naming that product.
What a price carries
Section titled “What a price carries”An amount in a currency, per one unit, for a product, plus optional scoping: a partner or a partner group, never both; a minimum quantity for a tier; and a validity window with either end open.
How the winner is picked
Section titled “How the winner is picked”Every price for the product is considered, and a candidate survives only if it is
- valid on the document’s date,
- in the document’s currency, exactly,
- met by the line’s quantity, and
- in scope for the customer.
Among the survivors, specificity wins first — partner beats group beats everyone — and ties break to the largest tier.
Tiers are compared in the product’s base unit, and that is the part that surprises. Two tiers both reading “from 1” are not equal: a tier of 1 dozen is twelve base units to a tier of 1 piece, so the dozen tier outranks it and wins any line reaching twelve.
No match leaves the line alone
Section titled “No match leaves the line alone”When nothing survives, no price is written and the price already on the line stays. Dropping a line’s quantity below every tier keeps the tier price it was given; it does not revert and it does not empty.
The date is the document’s own
Section titled “The date is the document’s own”Pricing is as of the document’s date, never today. A back-dated document prices at the rates valid then, and re-opening last year’s order does not re-price it at this year’s rates.
A typed price is temporary
Section titled “A typed price is temporary”There is no override anywhere in the model. A typed unit price stands for that save only. Changing the line’s product, customer, unit, quantity or currency, or the document’s date, prices the line again and replaces what was typed.
That is deliberate: bulk tiers only work if changing the quantity re-prices the line. A figure that has to survive belongs in a sales price.
Discount is separate
Section titled “Discount is separate”A price carries no discount, and none is ever derived. A line’s Discount is a percentage entered by hand:
line amount = quantity × unit pricenet amount = line amount × (1 − discount / 100)The document’s totals are the sums of those two columns.
Precision
Section titled “Precision”Nothing in the price path rounds to a currency’s cents — not the lookup, not the line
amounts, not the totals. A price of 100 per box of 12 reaches an each-line as
8.333333, not 8.33. The neat case — 120 per box, 10 each — is the exception.
Worth knowing
Section titled “Worth knowing”- There is no currency conversion. A price in another currency does not apply.
- Very large numbers of prices on one product are not all considered. Keep a product’s price records to the ones that are actually in use.
- An exact tie has no defined winner. Two prices with the same specificity and the same tier are interchangeable; avoid creating them.
Creating prices is Sales prices.