Price Rules & Customer Prices

Beyond the three rate tiers on an item, price rules set a rate, a discount, a free quantity or a pack price for a scope - one customer, a customer group, a trade channel, a territory, everyone - on a target - one item, a brand, a product group (optionally narrowed to a category or sub-category), all products - optionally from a minimum quantity, within dates, within hours of the day. A rule can also discount the WHOLE BILL above a minimum value. A code the customer quotes is not a price rule at all - that is a Coupon. Customer Prices is the same thing seen from one customer's side: their price list.

Plan. Premium, and sales must be enabled. Managed by users who can edit the sales rate.

Where it is in the app

POS page: Master > Price Rules > To Everyone / To Customer. Jewellery shell: Price Rules and Customer Prices under Management. The same dialog also opens from Promotional Offers's toolbar, for the shop that came looking for "20% off a brand this week" there instead. Field-sales order sheets apply the same rules as the counter, including territory- and channel-scoped ones.

The kinds of rule

Every rule is three independent choices - who it is for, what it covers, and what it does - plus optional conditions. Mixing them is what gives one dialog its whole range, from "this chain pays 4% less on this brand" to "happy hour, 12 to 3".

flowchart LR
    R[A price rule] --> W[WHO · scope]
    R --> T[WHAT · target]
    R --> E[WHAT IT DOES · effect]
    R --> C[WHEN / HOW · conditions]

    W --> W1[One customer]
    W --> W2[A customer group]
    W --> W3[A trade channel
General Trade · Modern Trade · HORECA] W --> W4[A territory or any location above it] W --> W5[Everyone] T --> T1[One item / variant] T --> T2[A product group
optionally narrowed to a category,
then a sub-category] T --> T3[A brand] T --> T4[All products] E --> E1[Fixed rate per unit] E --> E2[Discount - percent or amount] E --> E3[Pack price - 5 for 20] E --> E4[Free quantity] E --> E5[Trade scheme percent
cascaded before the discount] C --> C1[Minimum quantity slab] C --> C2[Date window - from / to] C --> C3[Time-of-day window - HH:mm] C --> C5[Priority - forces a win]
The four columns are chosen independently. A rule with a scope and a target but no effect prices nothing, and the resolver skips it rather than letting it beat a less specific rule that does have a price.

Line rules and bill rules

Setting a minimum bill amount turns a rule into a different animal: it is matched against the voucher total instead of against a line, and the two kinds never see each other's rows. A bill rule may only discount, as a percent or an amount - a rate, a free quantity, a pack price or a scheme each back-solve against a line (a gross, a quantity, a unit) and a bill rule has no line to solve against, so a row carrying one is treated as half-finished and ignored.

flowchart TD
    V[Voucher being priced] --> P1[Line pass · every line]
    V --> P2[Bill pass · once, on the total]
    P1 --> L1[Rules with NO minimum bill amount
rate · discount · pack · free qty · scheme] P2 --> L2[Rules WITH a minimum bill amount
discount percent or amount only] L1 --> O1[(Each line priced)] L2 --> O2[(One discount on the bill)]
Two separate passes. This is why an "all products" row that carries only a minimum bill amount does not quietly discount every line in the voucher.

How a rule is picked

flowchart TD
    L[Line on a bill: item · qty · customer · clock] --> G{Gates: has an effect · in its dates · in its hours}
    G -->|fails any| D[Item's own rate tier for the customer's rate type]
    G -->|passes| R{More than one still standing?}
    R --> S0[Explicit priority - higher forces a win]
    S0 --> S1[Scope: customer, then their group, then their trade channel,
then their territory, then everyone] S1 --> S2[Target: this item, then product group, then brand, then all products] S2 --> S3[Within a product group: sub-category, then category, then whole group] S3 --> S4[Deepest minQty slab the line actually reaches] S4 --> S5[Lowest id breaks any remaining tie] S5 --> A[Apply: rate, or discount percent / amount, or pack price, or free qty
plus a trade scheme, cascaded first, if the rule carries one] A --> T[(Line: price · discount · scheme · free quantity)]
A trade channel sits between the group and the territory: a channel is a commercial classification while a territory is only geography, but a group is the negotiated refinement of a channel, and the refinement is the agreement that was actually signed.

Time-of-day windows

A rule can carry a start and end time as well as a date range - the lunch rate, the late-night rate, the happy hour. Both are "HH:mm", and price rules and promotional offers read them through the same helper, so a rule and an offer written for the same hours start and stop together.

What you setWhat it means
Both blankAll day. This is every rule written before the feature existed.
Only one filledAlso all day - a half-filled window must not switch off a rule the shop believes is running.
12:00 to 15:00Inclusive at both ends, so a bill rung at exactly 15:00 still gets it.
22:00 to 02:00End before start crosses midnight - the late-night deal, running until 2am the next morning.
The two equalA single minute, not a whole day.
Dates truncate, hours do not. The date halves compare whole days; the time window is judged off the clock on the same instant. A rule is in force only when the day AND the hour both agree.

Codes are coupons now

A price rule used to be able to carry a coupon code, which stopped it applying by itself until the customer quoted it. Codes have their own screen now - see Bill Coupons - and a price rule always applies itself.

The two answer different questions, which is why they were split: a price rule decides what a LINE costs, off the product, the party and the quantity; a coupon takes a percentage or a flat sum off the BILL once the code is entered. A rule could never express "10% off, up to 500" on a bill total, and a coupon has no business re-pricing one item.

Setting rules

Setting a customer’s rate

flowchart TD
    A[A customer negotiates a rate] --> B{Just this one customer?}
    B -->|yes| C[Rule scoped to them]
    B -->|a whole class of customers| D[Put them in a group
rule scoped to the group] B -->|every outlet of this trade kind| D1[Rule scoped to their trade channel] B -->|everyone on a route| D2[Rule scoped to their territory] C & D & D1 & D2 --> E{On everything, a brand, or some items?} E -->|one item| F[Target the item] E -->|a whole product group| G[Target the group
optionally narrow to a category or sub-category] E -->|a brand| G2[Target the brand] F & G & G2 --> H{Only above a quantity?} H -->|yes| I[Set a minimum quantity] H -->|no| J[Applies at any quantity] I & J --> K[Set dates and hours if it is temporary] K --> L[Check it: open Customer Prices for them]
Build the rule the way the deal was actually agreed — scope first, then what it covers, then the conditions.

Reports

Price List (current rates per item), Customerwise Sales, Product Partywise Summary.