Setting Up a Price Book
You want a group of customers, or a group of products, to be priced differently from everybody else — trade customers at a discount, a category on promotion for a fortnight, members earning points. This page takes you from nothing to a price book that measurably changes the number on a sales line. Budget half an hour for the first one; the second takes five minutes.
Read the warnings in Step 4 before you design anything. Several rule types can be saved, look correct on screen, and never match a single line. Knowing which ones up front saves an afternoon of wondering why nothing happened.
Meet GadgetSphere
GadgetSphere Sdn Bhd sells consumer electronics through 22 branches. The corporate sales team has a handful of business customers who have been promised 8% off accessories. That is the price book we will build: one book, one price set, one discount, applied when the customer is in the corporate category and the item is in the accessories category.
Price book and price set: two words you need before you start
A price book is a container. It has a code, a name, and nothing else of consequence. GS-TRADE is a price book.
A price set is a rule inside it. This is where the work is. A price set says three things:
- Who qualifies — entity type, member class, branch, customer category, a date range. These are the Doc Hdr rules.
- Which items it covers — specific items, item categories, a code pattern, with a minimum quantity or amount. These are the Single Line rules.
- What happens — a discount, a sales price, or membership points. This is the Treatment.
A book can hold many price sets. When several of them match the same line, the one with the highest Priority Level number wins. That is worth reading twice: highest number first, not lowest.
Before you start
- Your items exist, and if you want to price by category, the categories are set on them in Doc Item Maintenance, on the Item Category tab (Put the item in the right categories). The numbered Category 1–10 rules match those, so an item with no category there matches no category rule. Inventory Item Maintenance keeps a separate category list that price sets never read.
- Your customers carry the category label you intend to key off, set in Customer Maintenance.
- You know which applet will use this. POS, Sales Invoice, Sales Order and Sales Quotation each load exactly one price book. Not all of them — one each. Nothing you build applies until that applet’s Default Pricebook setting names your book (Step 6).
- You hold price-book permission. Without it the applet’s screens return not authorised.
Step 1: Create the price book
Pricebook > Price Book > + (Pricebook applet)
Four fields: Pricebook Code, Pricebook Name, Status and Description. Codes accept letters, digits, space, hyphen and underscore only, and are upper-cased when you save. Give it a code you will recognise in a dropdown six months from now — GS-TRADE, not PB001.
Save. You now have an empty container.
Step 2: Add a price set
Pricebook > Price Set > + — or open the book and use its Pricing Set tab
- Price Book —
GS-TRADE. - Pricing Set Code —
ACC-CORP-8. It cannot be changed on screen after you save it (the edit form shows it read-only), and nothing checks it for uniqueness, so pick carefully. - Pricing Set Name — 8% off accessories for corporate accounts. This name is what appears on the sales line when the discount lands, so write it for the person reading the invoice.
- Priority Level — a number. Higher wins. Leave room: number your first rules 100, 200, 300 rather than 1, 2, 3, so you can slot something between them later.
- Status — Active. Only ACTIVE price sets are evaluated. This is your on/off switch, not the book’s Status field.
Step 3: Say who qualifies
Rules - Doc Hdr tab > Create
Add a Customer Category rule and tick the corporate category. Then save the price set — rules are held in memory until you do, and the screen will warn you.
The rule types on this tab that the sales applets and POS actually evaluate are: Valid Date Range, Branch, Entity Type, Member Class, Employee Category and Customer Category.
Step 4: Say which items it covers — and avoid the rules that do not work
Rules - Single Line tab > Create
Add an Item Category rule… except that is exactly the trap. The till and the back-office screens each carry their own copy of the matching engine, and they do not agree. Here is the honest picture of what matches today:
| Rule type | Sales Invoice / Sales Order / Quotation | POS till |
|---|---|---|
| Item | Yes | Yes |
| Item Code Regex | Yes | Yes |
| Category 1 … Category 10 (numbered) | Yes — matched against the item’s category labels | Yes |
| Item Category | No — never matches | Yes — through the item’s category links |
| Category Code Regex | No — never matches | Yes — against the category code |
| Item Name Regex, Category Name Regex | No — never matches | No — never matches |
The full list of rules that save and never match, the header rules and the Rules - Multi Line tab included, is Pricing rules that never match.
So for GadgetSphere: use a Category rule on the numbered label that holds “accessories”, not the Item Category rule — it is the one that prices the same at the counter and on an invoice. An Item Category rule gives you a discount at the till and none on the invoice for the same customer, and nobody is told. Set Min Quantity and Min Amount if there is a threshold; both default to 0, which means no threshold — but at the till a threshold is tested only when both are above zero, so a Min Quantity on its own is ignored at the counter.
Two rules on this tab mean two different things. On a sales invoice, order or quotation, the first rule that matches is enough. At the till, every rule on the tab must match. Keep one rule per price set and the difference never shows.
Two more things worth knowing while you are here — one tab that does less than you think, and one that does more:
The Rules - Multi Line tab is a till tab. On a sales invoice, sales order or quotation it genuinely has no effect — those screens price each line on its own and never open it. At the counter it is different: the POS applet prices a bill twice. First the calculator prices the line you just scanned, from the Doc Hdr and Single Line tabs. Then a separate purchase-with-purchase pass looks at the whole bill, and that pass reads Multi Line rules — re-running every time a line is added, changed or removed. (The receipt-scanning processor on the server reads the tab too.)
What that pass will act on, out of what this screen can save, is an Item rule plus a Min Amount above zero. It adds up the lines matching your item list; if the total clears Min Amount and the quantity clears Min Quantity, it discounts the cheapest matching line on the bill — or posts a bill-level discount if the treatment is a group discount. Anything richer — buy two get one, a second item free, tiered thresholds — is driven by settings the till reads and this screen does not write, so do not design one here and expect it to fire. Full mechanics: Pricebook applet → The till’s second pass.
- A Relative Period date range never matches. The Valid Date Range rule offers Relative Period (for example “last 30 days”) and Absolute Period (From and To dates). The relative option saves no dates and therefore never matches. Always use Absolute Period, with explicit From and To dates.
Step 5: Say what happens
Treatment tab
Tick Discount Treatment. Then:
- Price Source — what the discount is calculated from. For a straight percentage off the standard price, that is the standard amount.
- Operator — multiply, add, subtract, absolute, or a formula.
- Value — for 8% off, a multiply operator with the appropriate factor.
- Apply Treatment To — net unit price, net amount or transaction amount.
- Priority — defaults to 2.
If your company has enabled it, there is also a Sales Treatment block, which sets a price rather than discounting one. Where both are present, the one with the lower Priority number wins, and a tie goes to the discount. The screen refuses to save if the two priorities are equal.
Save the price set.
Step 6: Point the applet at the book — the step everyone forgets
Sales Invoice (Internal) > Settings > Default Selection > Default Pricebook
Nothing you have built does anything until this setting names your book. Each applet loads one price book at start-up and evaluates it for every line. With no value set, no price book is evaluated at all.
Do it in every applet that needs it: POS General, Sales Invoice, Sales Order and Sales Quotation each have their own setting. If corporate customers buy through the sales team and in store, both applets need pointing at GS-TRADE.
Then reload the applet. The book is read when the applet starts, so an already-open tab will not pick up the change.
Price book at work: what success looks like
Two minutes, and you will know for certain:
- Open Sales Invoice and start a document for a customer in the corporate category.
- Add an accessory line at its normal price.
- The Unit Discount on that line is populated, and the description beside it reads 8% off accessories for corporate accounts — the price set’s name.
If the name appears, the whole chain is working. If the price changed but you cannot see which rule did it, the name is how you find out.
Price book: common mistakes
| What goes wrong | What you see | The fix |
|---|---|---|
| The applet’s Default Pricebook is not set | Nothing happens, anywhere, ever | Set it in each consuming applet’s Default Selection and reload |
| Setting the price book to Inactive to switch it off | It keeps applying | The book’s Status is not read. Set the price sets to Inactive, or clear the Default Pricebook setting |
| Using an Item Category rule | The price set matches at the POS till but never on a sales invoice, order or quotation — the same customer gets two prices | Use a numbered Category 1-10 rule against the item’s category label, which matches on both |
| Using a Relative Period date range | The price set never matches | Use Absolute Period with From and To dates |
| Putting item rules on the Multi Line tab and expecting a line discount | Nothing on a sales document. At a till, a discount may land on the cheapest matching line instead of the one you meant | Multi Line is the till’s purchase-with-purchase tab. For an ordinary per-line discount, use Single Line |
| Two price sets both match and the wrong one wins | A discount you did not expect | Priority Level: highest number wins. Renumber with gaps |
| The item has no category, or has it only in Inventory Item Maintenance | A category rule that looks right matches nothing | Set the category on the item in Doc Item Maintenance, Item Category tab |
| Editing rules and navigating away | The rules are gone | Rules live in memory until you press Save on the price set |