Every price in the application lives in one place: the price grid. There is no price hiding on a document type, in a spreadsheet someone keeps, or in last month's invoice — when a document needs a price, the grid is asked, and the grid's answer follows rules you can inspect. The Prices page shows the grid in two views — Sales and Purchase — and each view manages only its own side of each row.
The rows. One row prices one product under a set of dimensions: the currency it is written in, the branch, the customer or supplier it belongs to (or their category — the price groups parties are filed under), the unit of measure it is expressed in, and a minimum quantity from which it applies. Any dimension may be left blank, and blank means applies generally: the row with everything blank is the product's base price, and every other row is a refinement of it for a narrower world — this branch, this customer, this currency, this volume. A row carries a sale price, a purchase price, or both; two rows may not claim the exact same set of dimensions.
How the winning price is chosen. When a document line asks, the grid answers in this order — and the order is the whole law:
- Currency class first. A row written in the document's own currency is a direct price and is charged as it stands. Direct rows outrank everything else. If no direct row applies, the general rows — written in your home currency — are converted at the document's own exchange rate: the price travels, the document's currency law (1.11) holds, and no figure is ever shown in the wrong currency's clothes.
- Most dimensions matched. Among the rows still standing, the one that matches the most of this document's facts wins: a price set for this customer beats one set for their category, which beats one set for the branch, which beats the base price — a specific promise outranks a general one, dimension by dimension.
- The largest band reached. If rows still tie, the one with the largest minimum quantity the line's quantity actually reaches wins — the 100-bag price applies at 100 bags, not at 99, and bands are open-ended upward.
The winning price is then expressed per the line's unit by the defined conversion (§6.6): priced per tonne, sold per bag, the figure on the document is per bag.
No row, no price — never a zero. If nothing in the grid applies, the answer is no price, and the document says so: on a foreign-currency document the price is left blank for the operator to enter, rather than filled with a plausible-looking figure in the wrong currency or an invented zero — a stored price of zero is refused by the grid itself. Lingering surprise at a price is always answerable: the Prices page carries a lookup — give it a product, a side, a party, a quantity — and it shows which row won and on which rung of the ladder, in words. "Why this price?" is a question with an address.