Skip to content
Pricing Rules: Treatments and What the Line Keeps

Price set treatments, and what a priced line keeps

Part of designing pricing rules: what a price set does to a line once it matches, and what the line keeps afterwards. Which set matches is decided first, by the order on Pricing rules in order; the four scenarios build the sets this page’s treatments belong to.

What the line keeps, and what is worked out again

The price book’s answer is a snapshot taken at the moment the line is priced, and it is stored on the line:

  • On a sales invoice the standard unit price stays as the scheme set it; the price book’s effect goes into Unit Discount, with Unit Price Net as the result, and the price set’s name is recorded beside the discount.
  • At the till the result goes into the line’s net and transaction amounts, the discount is the difference from the standard amount, and the price set’s name goes into the line’s Discount Description.

What is not worked out again:

  • Saving the document. The server’s save refreshes the pricing scheme’s reference figures but leaves the unit price, the discount, the tax and the line amounts exactly as the screen left them. Its only price-book pass fills in points on lines that carry none (see Choosing a treatment).
  • Changing the quantity on an existing invoice line. The invoice re-checks the price book, but acts only when some price set matches. Drop a 60-unit line to 8 units and no set matches, so the 10% discount stays. Delete the line and add it again instead.
  • Finalising, and everything after it. The e-invoice line’s unit price and subtotal come from the stored line, and a sales commission copies the document’s amounts when its commission line is written. A price set you edit tomorrow changes none of them.

The only trace of which rule priced a line is that name — a line can hold a reference to the price book and price set, and nothing writes it. Name your price sets so that the name alone answers “which promotion was this?” six months from now.

Choosing a treatment

Treatment tab

  • Discount Treatment takes an amount off. Default priority 2.
  • Sales Treatment sets a price instead of discounting one. It is hidden unless your company has enabled it, and it is not offered at all in the editor you reach from Price Book → Pricing Set.
  • Point Treatment awards membership points, with its own points currency, validity period, decimal precision and rounding mode. The till and the sales-invoice screen work the points out as the line is added. Separately, when the server saves a cash bill or sales invoice that names a member, it fills in points on any line that still has none — and that pass reads only price sets that carry a Member Class header rule, testing just Valid Date Range, Branch and Member Class — and on the line side it is handed the item’s code and nothing else, so only an Item or Item Code Regex line rule can match; a category rule never does. A points price set gated on anything else earns nothing from the server’s pass. The pass is switched by Auto Apply Points From Pricebook in the POS General and Sales Invoice applet settings; leave it on.

Each one takes a Price Source (what it calculates from — standard amount, net amount, transaction amount, unit cost, or a pricing scheme), an Operator (multiply, add, subtract, absolute, or a formula), a Value, and an Apply Treatment To target (net unit price, net amount or transaction amount).

A price set with both a Sales and a Discount treatment means a different thing on each screen. On a sales invoice both apply in turn, the lower Priority number first, so with the defaults the Sales Treatment (1) sets the price and a Discount (2) whose price source is Net Amount discounts from it. On a sales order only one applies — the lower number, a tie going to the discount — and if that one is the Sales Treatment the order gets nothing. At the till and on a quotation only the first treatment in the list is read, and only a Discount prices the line. The screen refuses to save equal priorities.

Price Source = Pricing Scheme is not a filter at the till. There it is a price: the engine takes the named scheme’s price for the item and works from that. On a sales order it is a filter — a price set naming another scheme is skipped. On a sales invoice it falls back to the price already on the line. Test it on the screen you will actually use.

A discount that raises the price is not always ignored. On a sales order a treatment that computes a higher price, or exactly zero, does nothing — and nothing says so. At the till and on a sales invoice the figure the treatment produces goes onto the line whatever it is, so a mistyped multiplier of 1.10 raises the line and shows as a negative discount. With the Absolute operator at a till, check a two-unit line against a one-unit line before you rely on it. When a rule is definitely matching and the price is not what you expected, check the arithmetic before you check the rules again.

Related documentation

Last updated on