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.
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 category labels are set on them in Inventory Item Maintenance. Category rules match on the item’s category labels, so an item with no label matches no category rule.
- 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.
- You hold price-book permission. Without it the applet’s screens return not authorised.
Step 1: Create the price book
Pricebook > Price Book > +
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 after you save it, 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. Here is the honest picture of what matches today:
| Rule type | Does it work in POS / Sales Invoice / Sales Order / Quotation? |
|---|---|
| Item | Yes |
| Item Code Regex | Yes |
| Category 1 … Category 10 (numbered) | Yes — matched against the item’s category labels |
| Item Category | No — never matches |
| Item Name Regex | No — never matches |
| Category Code Regex, Category Name Regex | No — never matches |
So for GadgetSphere: use a Category rule on the numbered label that holds “accessories”, not the Item Category rule. Set Min Quantity and Min Amount if there is a threshold; both default to 0, which means no threshold.
Two more limits worth knowing while you are here:
- The Rules - Multi Line tab is not evaluated at all by POS or the sales applets. Anything you put there has no effect. (The receipt-scanning processor does read it, which is why the tab exists.)
- 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.
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.
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 never matches | Use a numbered Category 1-10 rule against the item’s category label |
| Using a Relative Period date range | The price set never matches | Use Absolute Period with From and To dates |
| Putting rules on the Multi Line tab | They are ignored | Put item rules on 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 label | A category rule that looks right matches nothing | Set the label on the item in Inventory Item Maintenance |
| Editing rules and navigating away | The rules are gone | Rules live in memory until you press Save on the price set |