Skip to content

Pricebook

Define conditional pricing here — a discount, a special price or membership points for the customers, branches, dates and items you choose. This applet only stores the rules: POS and the sales document applets apply the price book named in their own Default Pricebook setting when a line is added.

Overview

The Pricebook applet is where a pricing administrator defines conditional pricing: a Price Book is a named container with a calculation logic, and each Price Set inside it says who qualifies (entity type, member class, branch, company, customer or employee category, date range), which items it covers (items, categories, code or name patterns, with minimum quantity and amount) and what happens (a discount, a sales price, or membership points). The applet only maintains this master data. The rules are applied by the consumers: the POS General, Sales Invoice, Sales Order and Sales Quotation applets evaluate the price book selected in their Default Pricebook setting when a line is added, and the OCR membership-points processor evaluates a price book on the server for scanned cash bills.

Free-gift promotions for purchase orders and POS are price books too (types PO_FREE_GIFT / POS_FREE_GIFT), but they are created and listed in the Purchase Order and POS General applets and are deliberately hidden here.

Where it fits

DirectionAppletRelationship
UpstreamDoc Item Maintenance, Inventory Item MaintenanceItems, item categories (category labels 1 to 10) and pricing schemes referenced by line rules and treatments
UpstreamCustomer Maintenance, Employee, EntityEntity types and the customer / employee category labels used by header rules
UpstreamOrganizationCompanies and branches used by Company / Branch rules
UpstreamMembership AdminMember classes, member labels and points currencies used by member rules and the Point treatment
DownstreamPOS General, Sales Invoice (Internal), Sales Order, Sales QuotationLoad the price book named in their Default Pricebook setting and apply the matching price set to each line
DownstreamOCR Cash BillThe server-side membership-points processor evaluates a price book against scanned documents
SiblingPurchase Order (Internal), POS GeneralOwn the free-gift price books (PO_FREE_GIFT, POS_FREE_GIFT) that this applet hides
SiblingShipping PricebookSame rule/treatment design applied to shipping charges, kept separately

Screens and menus

The applet has two menu entries, Price Book and Price Set, plus Settings and Personalization.

ScreenPathWhat it shows
Price Book listingPrice BookColumns Price Book Code, Price Book Name, Description, Created Date, Updated Date; free-gift books are excluded
Price Book createPrice Book → +Code, Name, Status, Description
Price Book editselect a rowTabs Details (code, name, calculation logic, status, description, audit fields, Delete) and Pricing Set (the book’s price sets with search, create and edit)
Price Set listingPrice SetEvery price set of every non-free-gift price book: Price Set Code, Price Set Name, Description, Modified Date (sorted descending), Created Date, Status
Price Set createPrice Set → +Price Book (searchable select), Pricing Set Code, Pricing Set Name, Priority Level, Status, Description
Price Set editselect a rowTabs Details, Rules - Doc Hdr, Rules - Multi Line, Rules - Single Line, Treatment
Add RuleCreate on a Rules tabRule Type selector, then the type-specific form or selection grid
Settingsgear → SettingsMenu: Field Settings, Default Selection. Feature Visibility (the default landing page of Settings), Webhook and the permission listings open without a menu entry of their own
Personalizationgear → PersonalizationDefault Selection (branch / location; non-functional, see Configuration), Sidebar

There are two editors for a price set: the Price Set menu, and the Pricing Set tab of a Price Book. They save the same price set but offer different rule types and treatments (see Fields).

This page does not include screenshots yet; the previous marketing infographic was removed because it did not show the product.

Configuration

Before you can use it

  • Items and categories exist in Doc Item Maintenance or Inventory Item Maintenance. Category rules match on the item’s category labels 1 to 10.
  • Pricing schemes exist if a treatment uses Price Source = Pricing Scheme; the Treatment tab lists them.
  • Customer / employee category labels are assigned on the entity (Customer Maintenance, Employee) for Customer Category / Employee Category rules.
  • Member classes, member labels and points currencies exist in Membership Admin for Member Class / Member Label rules and the Point treatment.
  • Companies and branches exist in Organization for Company / Branch rules.
  • The consuming applet points at the price book. Nothing is applied until Default Selection → Default Pricebook is set in POS General, Sales Invoice, Sales Order or Sales Quotation (see Settings in other applets).
  • Tenant permissions. TNT_LOG_PRICE_BOOK_OWNER / TNT_LOG_PRICE_BOOK_ADMIN or TNT_API_PRICE_BOOK_CREATE / UPDATE / DELETE / READ are checked on every price-book action; read access is also what POS and the sales applets need to load the price book.

Applet settings

Field Settings has one toggle and Default Selection a handful of pickers. Both save tenant-wide, so a value applies to every user of the applet; anyone who can open Settings can change them.

SettingScreenWhat it controlsDefaultEffect when changed
SHOW_SALES_TREATMENTField Settings → tab Price Set (the toggle is labelled with its key)Whether the Sales Treatment block (checkbox, price source, operator, value, priority, apply-to) is shown on the Treatment tab of the Price Set editorOffTurning it on reveals the block. A Sales treatment saved earlier stays on the price set and keeps being evaluated by the consumers whether or not the block is visible. The nested editor opened from Price Book → Pricing Set never shows Sales Treatment regardless of this setting
DEFAULT_TIMEZONEDefault SelectionThe timezone used to display the Absolute Period dates of a Valid Date Range ruleEmpty (dates display in the browser timezone)Dates on the rule form are shown in that zone; stored values are converted without shifting the wall-clock time

Rendered and saved on Default Selection but read by nothing in this applet: DEFAULT_BRANCH, DEFAULT_LOCATION, DEFAULT_COMPANY. Picking a branch also fills Company and the branch’s main location into those three controls.

Personalization → Default Selection is non-functional: changing Branch or Location fails before anything is saved.

Settings in other applets that control this applet

SettingWhere it is setEffect on price books
Default Pricebook (DEFAULT_PRICEBOOK)Default Selection in POS General, Sales Invoice, Sales Order and Sales QuotationThe one price book that applet loads at start-up and evaluates for every line. Only one price book per applet; with no value nothing is evaluated
Auto Apply Points From Pricebook (PRICEBOOK_POINTS_AUTO_APPLY)POS General → Default SelectionA real gate, and leave it on. No POS screen reads it — the server does, from the POS General setting for a cash bill and the Sales Invoice setting for a sales invoice, and generates no points when it is false, with nothing more than a log entry. Switch it off and members earn nothing, with no message at the till
POS_APPLY_GROUP_ITEM_PRICEBOOK_DISCOUNT_LOGIC, POS_MANUAL_PROMOTION_SELECTIONPOS General’s Field Settings screenHow POS applies a matched discount to group items and whether the cashier picks the promotion manually; documented on the POS page
OCR job template price bookOCR job template configurationThe price book the server-side membership-points processing evaluates for each scanned cash bill; without one it fails with PRICE_BOOK_HDR_GUID_IS_NULL
Free-gift setupPurchase Order (Internal) → PO Free Gift; POS General → Free GiftCreate price books of type PO_FREE_GIFT / POS_FREE_GIFT, with a code assigned from the running-number generator. This applet hides them from both listings

Feature visibility / permissions

No client-side permissions are registered for this applet, so the Feature Visibility screen and the role / team / user permission listings under Settings have nothing applet-specific to gate. Access is decided by the tenant permissions listed under Before you can use it; the API returns not authorised when none of them is assigned.

Fields

Code and name inputs on the create forms accept letters, digits, space, hyphen and underscore only, are upper-cased on save and are limited to 255 characters. Pricebook Name, Pricing Set Name and Description are stored as typed and read by nothing else; the audit stamps (Created By / Date, Modified By / Date) are read-only and come from the price-book event rows described under Lifecycle. Only the fields below behave in a way the form does not show you.

Price Book — create

FieldMeaningRequiredNotes / validation
Pricebook CodeBusiness keyYesMust be unique among non-deleted price books; the backend rejects a duplicate
StatusActive / InactiveYesDefault Active. No pricing engine reads it — the only reader is this applet’s own edit screen. Setting a price book Inactive does not stop it applying

Price Book — edit › Details

FieldMeaningRequiredNotes / validation
Pricebook CodeRead-only after creation—
Calculation LogicHow a consumer chooses between several matching price setsNoOptions SEQUENTIAL_MATCH, AMOUNT_LOWEST, AMOUNT_HIGHEST, POINTS_REWARD_HIGHEST, POINTS_REWARD_LOWEST, POINTS_REDEEM_HIGHEST, POINTS_REDEEM_LOWEST, PRICESET_PRIORITY_DESCENDING, PRICESET_PRIORITY_ASCENDING. Only the scanned-cash-bill (OCR) path honours it, and only four values (see Lifecycle)
StatusActive / InactiveRead by nothing that prices a line (see create)
DeleteSoft-deletes the price book and its lines—No confirmation is enforced by the backend; consumers stop finding it

Price Set — Details

Created from the Price Set menu (choose the Price Book first) or from Price Book → Pricing Set (book pre-filled).

FieldMeaningRequiredNotes / validation
Price Book NameParent price bookYesRead-only in the edit screens
Pricing Set CodeBusiness keyYesRead-only after creation; not checked for uniqueness — two price sets can share a code
Priority LevelOrder of evaluation among the price sets of one bookYes on createInteger. The consumers evaluate the highest number first
StatusActive / InactiveYesConsumers only evaluate ACTIVE price sets — this is the status that actually switches a price set off
Delete—The price set disappears from both listings; the code is not freed for reuse checks because none exist

A new price set is saved with empty rules on all three tabs (Rules Logic And, Negation Disabled) and no treatment.

Price Set — Rules tabs

Each of Rules - Doc Hdr, Rules - Multi Line and Rules - Single Line has:

FieldMeaningDefaultNotes
Rules LogicAnd / Or across the rules of that tabAndIgnored on the Doc Hdr tab, whose rules are always ANDed (see Lifecycle)
Negation LogicEnabled / Disabled — invert the tab’s resultDisabledThe only way to express an exclusion
Rule gridOne row per rule (Rule Name, Rule Type)—Create opens Add Rule; one rule of each type per tab, a second attempt shows Rule already exist!

Rules are edited in memory and written only when you press Save on the price set (the toasts say Please save your data to prevent losses).

Rule types offered by the two editors:

TabPrice Set menu editorPrice Book → Pricing Set editor
Doc HdrValid Date Range, Entity Type, Member Class, Member Label, Company, Branch, Currency, Settlement Method, OCR CompanyValid Date Range, Entity Type, Member Class, Member Label, Company, Branch, Employee Category, Customer Category, OCR Company
Multi Line / Single LineItem, Item Category, Item Code Regex, Item Name Regex, Category Code Regex, Category Name Regexthe same six plus Category 0 … Category 10

Every rule has Rule Name (required) and Negation Logic (Enabled / Disabled). The type-specific part:

Rule typeInputWorth knowing
Valid Date RangeRelative Period (unit NA / Days / Months / Years and a number) or Absolute Period (From, To dates)A Relative Period stores no dates and never matches — use Absolute
Entity TypeCheckboxes All Customer, All Supplier, All EmployeeEvaluated on every sales screen, but only the All Customer tick is tested — not what the document’s customer actually is. A rule with only All Supplier or All Employee ticked stops the price set matching any sales document that has a customer. On a sales invoice with no customer the rule passes; at a till it fails for an employee buying against a spending limit
Member Class, Member Label, Company, Branch, Currency, Settlement Method, OCR Company, Employee Category, Customer CategoryMulti-select gridCompany, Member Label, Currency, Settlement Method and OCR Company are not evaluated on sales documents (see Lifecycle)
Item, Item Category, Category NMulti-select grid plus Min Quantity and Min Amount (default 0); the Price Book editor also has Max QuantityItem Category never matches on a sales document and does match at the till; Category N matches on both. At the till the two thresholds are tested only when both are above zero
Item / Category Code / Name RegexName and a JavaScript regular expressionOnly Item Code Regex is evaluated on sales documents; the till also evaluates Category Code Regex

Price Set — Treatment tab

TreatmentFieldsDefaults
Sales Treatment (only with SHOW_SALES_TREATMENT; not in the nested editor)Price Source, Operator, Formula (when Operator = Formula), Pricing Scheme (when Price Source = Pricing Scheme), Value, Priority, Apply Treatment To, Auto Apply to All Child ItemsPrice Source NA, Operator NA, Priority 1, Apply To Net Unit Price
Discount TreatmentSame set of fieldsPriority 2. A treatment’s Priority runs the opposite way from the price set’s Priority Level. On a sales invoice line both treatments apply, lowest number first: by default the Sales Treatment (1) goes first, and a Discount whose price source is Net Amount works on the price it left, while Standard Amount starts again from the standard price
Point TreatmentPrice Source, Point Currency, Operator, Formula or Value, Validity Period (Days), Pricing Scheme, Point Decimal Precision, Rounding Mode (UP / DOWN / HALF_UP / HALF_DOWN)Price Source NA, Operator NA

Option values: Price Source NA, Base Quantity, Standard Amount, Price Unit Cost, Net Amount, Transaction Amount, Pricing Scheme; Operator NA, Multiply, Absolute, Add, Subtract, Formula; Apply Treatment To Net Unit Price, Net Amount, Transaction Amount. A formula may use the placeholder {PRICE_SOURCE}. Sales and Discount priorities must differ — Save is refused with Sales Treatment and Discount Treatment cannot have the same priority. Each ticked treatment is saved on the price set; unticking removes it.

Lifecycle and effects

What the applet writes. The price book, its price sets (rules, treatments and priority), its status, and an audit row per action (created, updated, deleted, price set created). Every save of a price set saves the whole parent price book. The webhooks PRICE_BOOK_CREATED, PRICE_BOOK_UPDATED and PRICE_BOOK_DELETED fire.

Posting. This is master data: no journal, no stock movement, no queue. A document line can in principle record which price book and price set priced it, but nothing writes that on a sales document or at a till, so on a document BigLedger produced itself it is blank — see Where the number came from below.

Statuses. A price book’s Status (Active / Inactive) is read by nothing that prices a line. A price set’s status (Active / Inactive) is. Delete is a soft delete: the price book and its price sets are marked deleted and disappear from every listing and every engine.

Backend validation on save: a unique price book code, and referenced branches, entities and items must exist. Nothing on the server validates the rules or the treatments — a malformed rule is saved and simply never matches.

Which engine prices your line

There is not one price-book engine. There are four, plus a fifth on the server, and they disagree. The POS General, Sales Invoice and Sales Quotation applets each carry their own copy of the calculator, the Sales Order applet uses a shared one, and they have diverged. Which one runs is decided by the screen, not by configuration, so the same price book gives different answers on different screens.

Where a line is pricedEngineTreatments it can applySingle-line rules
POS General — adding an item to the bill, and the Item Details panelthe till’s own calculatorDiscount or Point — only the first treatment in the list is read, for the price and for the points alike. No Sales branch at allAll rules must match (AND)
POS General — the parent/child item path in Item Detailsthe shared calculatorDiscount only (Sales returns nothing on this method)first rule that matches wins (OR)
Sales Invoicethe invoice’s own calculatorSales and Discount, applied in sequence; Point separatelyfirst rule that matches wins (OR)
Sales Order (v2)the shared calculatorDiscount only — nothing is returned when Sales is the active treatmentfirst rule that matches wins (OR)
Sales Quotationthe quotation’s own calculatorDiscount only, and only if Discount is the first treatment in the listfirst rule that matches wins (OR)
Scanned cash bills (OCR)the serverPoint onlythe Doc Hdr and Multi Line tabs, with their And/Or and negation
POS General — the whole bill, re-run after every line changea purchase-with-purchase pass, separate from any calculatora discount moved onto one existing line, or a bill-level group discountthe Multi Line tab — see below

Consequences worth knowing before you design a price book:

  • A Sales Treatment only ever reaches a price on a Sales Invoice. The Sales Treatment block is hidden until SHOW_SALES_TREATMENT is switched on, so while that setting is off you cannot create one and the divergence stays latent. It goes live the day somebody turns the setting on and saves the first Sales Treatment — and from then on the same price book prices an invoice one way and a till another, with nothing to warn you.
  • A price set with two single-line rules means two different things. At the till both must match; on every sales document either one will do. A price set with a single rule cannot show you the difference, so the day somebody adds a second one, a counter and an invoice start disagreeing on the price with no message either way.
  • At the till only the first treatment counts, and only one price set prices a line. The till’s calculator reads the first treatment of a price set and ignores the rest, so a price set with a Point treatment first and a Discount second awards the points and gives no discount at the counter — exactly as on a sales quotation, while a sales invoice applies both. And for each line the till takes one price set — the matching set with the highest Priority Level — and uses it for both the price and the points. (With the POS applet’s manual promotion selection setting on, the cashier can choose a different matching set for the price in Item Details; it is still one set.) Put together, the till itself gives a line a price-book discount or price-book points, never both — neither two treatments in one set nor two sets covering the same item get round it. Decide which one the counter should give and put that treatment first. (Points the till did not give can still arrive later from the server’s backstop in Points: the till computes, the server fills the gaps, on a line that carries none.)
  • At the till a lone threshold is ignored. The till’s calculator applies Min Quantity and Min Amount only when both are above zero; with one left at 0 the line matches at any quantity and any amount. The sales-side engines test each threshold on its own. A volume tier built on Min Quantity alone therefore holds on an invoice and gives the top tier’s price for a single unit at the counter.
  • A price set with no single-line rule never prices a line through a calculator. An empty rule list is no match on every screen, the till included. A price set can perfectly well carry Multi Line rules and nothing on Single Line, and such a price set is not dead: on a till it is read by the purchase-with-purchase pass described next, which is not a calculator and does not price a line as you scan it.

The till’s second pass — what the Multi Line tab actually drives

The POS General applet prices a bill twice, by two different mechanisms, and only the first is a calculator. The calculator above prices the line you just scanned, from the Doc Hdr and Single Line tabs; it never reads the Multi Line tab. Alongside it the applet runs a purchase-with-purchase pass over the whole bill, in three steps, and every one of them reads the Multi Line tab.

When it runs. On every line added, edited and deleted, dispatched from the item facade immediately after the line reaches the draft. So a promotion can appear, change and vanish again as the operator works down the bill — there is no separate “apply promotions” step and nothing to press.

When it does not run at all, and this is the part no screen tells you: the whole pass is skipped when the bill mixes a sale and a return (any line with a negative signum alongside a positive one — an exchange), when the customer record is flagged as an employee, or when the line that triggered it is itself a return line. A promotion that works all morning and does nothing on the one bill that included a swap is behaving exactly as built.

What it will act on, from what the Price Set editor can save. The pass reads the first rule on the Multi Line tab and matches its values against each bill line’s item — so make it an Item rule; a Category rule stores category identifiers, which never equal an item. It then totals the matching lines’ amount and quantity and requires Min Amount to be set above zero. If the total clears Min Amount and the matching quantity clears Min Quantity, then:

  • if the price set’s treatment is a group discount, it posts a bill-level discount line carrying the price set’s name;
  • otherwise it sorts the matching lines by standard unit price ascending and discounts the cheapest matching line, stamping the price set’s name onto it, which is the only trace of which rule fired.

What it reads that this applet cannot write. The richer branches of the pass — bundles, tiered buy-N-get-one, second-item-free, promotion exclusions — are driven by properties that no screen in the Pricebook applet can set. Those shapes are real in the till and are not configurable from this applet today; treat the item list plus Min Amount and Min Quantity as the whole of what a price set built here can drive.

And the handoff is deliberate, not an accident. The till’s calculator declines to price a single-line rule that carries a purchase-with-purchase quantity, precisely so the purchase-with-purchase pass owns it. Two engines, one job split between them, with nothing on either screen saying so.

Priority runs the other way here. The calculator’s line pass sorts price sets by priority descending and stops at the first match — highest number wins, as everywhere else. All three purchase-with-purchase effects sort ascending and walk the whole list. On a till, therefore, a Multi Line price set with the lowest priority number is considered first, and more than one can fire on the same bill. (The till’s header pass sorts ascending too, but it only filters, and the line pass re-sorts, so nothing turns on it.)

What every engine agrees on. Price sets are sorted by priority, highest first (the purchase-with-purchase pass above is the exception), and the first price set whose line rules match wins — the rest are never evaluated. The Doc Hdr tab’s Rules Logic is ignored and its rules are always ANDed; Negation Logic on that tab inverts the whole tab’s result. A price set with no priority at all is left wherever the server returned it in the list — give every price set a number.

Rules that pass without being tested. The sales-side engines evaluate Valid Date Range, Branch, Entity Type, Member Class, Employee Category and Customer Category on the Doc Hdr tab, and Item, Item Code Regex and Category 1 – 10 on the single-line tab. Every other rule type is skipped, which means treated as satisfied — so adding a Company or Currency rule widens the price set rather than narrowing it. A Branch rule fails on a document that carries no branch. A Relative Period date rule stores no dates and can never match. The till’s own engine additionally matches Item Category through the item’s category links and Category Code Regex against the category code, so two line-rule types that never match on a sales document do match at a till.

Operators. The shared and Sales Invoice engines handle Multiply, Add, Subtract, Absolute and Formula; the till’s engine has no Formula branch. A discount is applied only when the computed figure is greater than zero and lower than the figure it replaces, so a treatment that raises a price does nothing.

Where the number came from, and what the line remembers

The price book runs after the pricing scheme has already put a price on the line. What it does with that price differs by screen, and so does what you see afterwards.

  • Sales Invoice. The engine leaves Unit Price Std alone and writes the whole adjustment into Unit Discount, with Unit Price Net as the result. Each applied treatment is listed with the price set’s name. Editing the price by hand raises a Manual Price Override dialog naming the treatment, and confirming it removes the treatment — and the price field is read-only unless ENABLE_EDITING_UNIT_PRICE_STD is on.
  • POS General. The engine writes the result into the line’s net and transaction amounts, derives the discount as the difference from the standard amount, and puts the price set’s name in the line’s Discount Description. With the Absolute operator it also overwrites the standard unit price, so the bill shows a price rather than a discount. The same price set therefore prints as a discount on an invoice and as a price at a till.
  • Price Source = Pricing Scheme is not one setting. At the till it is a price: the engine looks the named scheme up on the item, takes that scheme’s selling price excluding tax, replaces the standard unit price with it, and works from there; if the item has no price under that scheme it falls back to the line’s own standard amount with no message. On the Sales Order path it is a filter: any price set whose treatment names a scheme other than the line’s is skipped. And the Sales Invoice engine knows three price sources — moving-average cost, standard amount and net amount — and Pricing Scheme is not one of them, so it silently falls back to the price already on the line.
  • The document does not record which price book priced it. A document line can carry a reference to the price book and price set, and no behaviour keys off either. Nothing in the platform ever writes them — no sales path, no till, no import — so on a document BigLedger produced they are blank and stay blank, however many price books priced it. The only trace a price set leaves on a finished document is its name, in the line’s description. If you need to answer “which promotion priced this line” six months later, that string is all you have.
A quantity above one, with Price Source = Pricing Scheme or the Absolute operator, at the till. The till’s engine takes a unit price from the pricing scheme (or the Absolute value) and writes the result into the line’s net and transaction amounts, which are line totals. At a quantity of one the two are the same number and nothing is wrong. Above one, the line total is set to what should have been the unit price, the unit price is then derived by dividing that by the quantity, and the difference is reported as a discount. Check a two-unit line against a one-unit line before relying on either of these two settings at a till.

Points: the till computes, the server fills the gaps

Points are the one part of a price book that the server also evaluates for ordinary sales documents, and it is a backstop rather than a second pass. When a cash bill or a sales invoice that carries a member on its header is updated, the server reads Auto Apply Points From Pricebook off the POS General or Sales Invoice applet and does nothing when it is off, beyond a log entry. When it is on, it evaluates the price book and fills in point type, currency, amount and validity dates only on lines that carry no point already — so a till that already calculated points is never overruled, and a line the till missed is completed.

The separate scanned-cash-bill path is the only place the price book’s Calculation Logic is read at all: it honours POINTS_REWARD_HIGHEST, POINTS_REWARD_LOWEST, PRICESET_PRIORITY_ASCENDING and PRICESET_PRIORITY_DESCENDING and takes the first match for any other value or none.

Importing price books from a file

There is a bulk CSV import for price books that no screen in this applet exposes — it is reachable through the API only, so nothing you do in the UI will exercise it. Treat it as a capability to prove on a copy before you rely on it, not as a documented route into a live price book.

Related applets

Troubleshooting

SymptomCauseFix
A price set never applies in POS or a sales documentThe consuming applet has no Default Pricebook, or points at another price book; the calculator is only built for that one bookSet Default Selection → Default Pricebook in that applet and reload it
The same price set discounts on a sales invoice and not at the till, or the other way roundFive different engines evaluate price books and they differ on which treatments they support and on whether a price set’s line rules are ANDed or ORedCheck the table in Which engine prices your line; design the price set for the screen that will use it
A price set with two item rules matches at the till and not on a sales document (or the reverse)The till requires every single-line rule to match; every sales document takes the first rule that matchesSplit it into two price sets, or put the second condition on the Doc Hdr tab
A price set never prices a line, and its rules look rightIt has no rule on the Single Line tab. An empty single-line rule list is treated as no match by every calculator, including the till’sAdd at least one Item, Item Code Regex or Category rule. Multi Line rules alone are read by the scanned-cash-bill engine and by the till’s purchase-with-purchase pass — neither of which prices the line you just scanned
A Sales Treatment has no effectOnly the Sales Invoice applies one. The till has no Sales branch, and the Sales Order path returns nothing when Sales is the active treatmentUse a Discount Treatment, or apply the price set only on sales invoices
A price set with both a Point and a Discount treatment discounts everywhere except on a quotationThe quotation’s engine reads only the first treatment in the list and only if it is a DiscountGive the price set a Discount treatment first, or do not rely on quotations to preview promotional pricing
Price Source = Pricing Scheme gives the scheme’s price at the till and the document’s own price on a sales invoiceIt is a price source only in the till’s engine; the Sales Invoice engine does not implement that source, and the Sales Order path uses it as a filterDecide whether the scheme is meant to price the line or to qualify it, and put the price set on the screen that reads it that way
A Formula operator does nothing at the tillThe till’s engine has no Formula branchUse Multiply, Add, Subtract or Absolute for price sets that reach a till
A multi-unit line at the till is discounted by roughly the price of the extra unitsThe till mixes a unit figure with a line total when the price source is a pricing scheme, or the operator is AbsoluteCompare a one-unit and a two-unit line before using either at a till; see the warning in Where the number came from
No member points are generated on a finalised cash bill or sales invoiceAuto Apply Points From Pricebook is off on the POS General or Sales Invoice applet; the server returns without generating anything and says nothingTurn it on. The header must also carry a member
You cannot tell which price book priced an old lineNothing records the price book on the line; the only trace is the price set’s name in the line’s descriptionKeep price set names stable and meaningful, because the name is the audit trail
A Company, Member Label, OCR Company, Currency or Settlement Method header rule has no effect on sales documentsThe client calculator ignores those rule types (satisfied by default)Use Branch, Entity Type, Member Class, Customer Category or Employee Category, which are evaluated; the ignored types only matter for the OCR processor’s generic nodes
A Relative Period Valid Date Range never matchesRelative rules store no dates; the calculator compares absolute dates onlyUse an Absolute Period
Multi Line rules, or Or logic on the Doc Hdr tab, make no difference on a sales invoice, order or quotationThose screens price each line on its own; their calculator never reads the Multi Line tab and applies header rules as ANDPut item conditions on the Single Line tab; use Negation for exclusions. Multi Line is a till-only tab
A Multi Line rule does nothing at the till eitherIts Min Amount is zero or unset — the purchase-with-purchase pass requires Min Amount above zero before it evaluates anything; or the first rule on the tab is a Category rule, whose values are category identifiers and never match an itemMake the first Multi Line rule an Item rule and set a Min Amount above zero
A Multi Line promotion fires all day and then silently stops on one billThe purchase-with-purchase pass is skipped entirely on a bill that mixes a sale and a return, on a customer flagged as an employee, and when the triggering line is a returnRing the exchange as two documents if the promotion must apply
A Multi Line promotion discounted the wrong itemThe pass discounts the cheapest matching line on the bill, not the one the operator expectedScope the item list so every member is an acceptable target, or use a group-discount treatment so the discount lands at bill level instead
Item Category, Item Name Regex or category regex line rules never match on a sales document — but Item Category or Category Code Regex does match at the tillThe sales-side calculators only evaluate Item, Item Code Regex and Category 1 … 10; the till’s own calculator also matches Item Category and Category Code RegexUse Item, Item Code Regex, or the Category N types from the Price Book → Pricing Set editor, which match on every screen
Setting a Price Book to Inactive does not stop it applyingThe Status field is an extension the calculator does not read; only the price set status and the consumer’s Default Pricebook matterSet each price set Inactive, or clear Default Pricebook in the consuming applet
Rule already exist! when adding a ruleOne rule of each type is allowed per tabOpen the existing rule from the grid and change its selection
Rules or treatments added but gone after navigating awayRule edits are held in memory until Save on the price setPress Save on the Details tab before leaving
Sales Treatment and Discount Treatment cannot have the same priorityClient-side check on SaveGive the two treatments different Priority numbers
Sales Treatment block is missing on the Treatment tabSHOW_SALES_TREATMENT is off, or you opened the nested editor from Price Book → Pricing Set, which never shows itTurn the setting on and edit from the Price Set menu
A free-gift price book created in Purchase Order or POS is not listed hereBy design: both listings exclude free-gift price booksManage free gifts in the Purchase Order or POS General applet
Save rejected as a duplicate codeAnother non-deleted price book has the same codeChoose another code (deleted books do not block reuse)
OCR membership points never postedThe OCR job template names no price book, or the price book has no Point treatmentConfigure the price book on the OCR job template; add a Point treatment

Related documentation

Last updated on