Sales

This page is generated from the in-app guide content — edit featureToggleGuides and run pnpm gen:feature-toggle-docs.

Allow partial return of a combo

When on, a customer may return only some components of a combo (a warning is shown). When off, a return must keep the combo proportions — every component in the same ratio.

CodeDefaultSwitch atTurn on first
sales.bundle_partial_returnOn/sales/settingsProduct bundles (combos) (sales.product_bundles)

How it works

Decides whether a customer return may take back only some components of a combo sold on a sales order.

Conditions for it to take effect

Requires Product bundles to be on.

When ON

Any quantity of each component can be returned; the return form shows a hint that the combo is returned partially.

When OFF

A return created from a sales order or from an invoice linked to one is rejected unless every stock component of each touched combo is returned in the same proportion (optional and service components are not counted).

Screens, documents and reports affected

Customer returns (from sales order or invoice).

Caveats

The proportion check only sees combos that came from a sales order — invoice lines not linked to an order, returns without a source document, RMAs and credit notes are not checked.

Approval threshold (% change)

Changes above this percentage (up or down) wait for approval; 0 = every change. List (MSRP) prices are never gated

CodeDefaultSwitch atTurn on first
sales.selling_price_approval_threshold_pct10/sales/settingsRequire approval for large price changes (sales.selling_price_approval_required)

How it works

The size of change (up or down, in % of the current active selling price) above which a change needs approval.

Conditions for it to take effect

Requires Require approval for large price changes to be on; the number is ignored otherwise.

When ON

A change strictly greater than this percentage waits for approval; exactly the threshold passes. 0 means every non-zero change waits.

When OFF

Not read while approval is off.

Screens, documents and reports affected

Sales → Selling prices (the bulk-update preview flags rows that will need approval), product and stock-item price fields, imports.

Caveats

Default 10. An invalid or negative value is treated as 0 (everything gated). When the current price is 0 or there is none, the change is never gated.

Auto-create shipment when an order is fulfilled

When on, a sales order that becomes fulfilled gets a pending shipment (manual carrier) with its delivery address, linked in the document chain. Van sales are skipped — goods were handed over at the point of sale. Off: shipments are created by hand.

CodeDefaultSwitch atTurn on first
sales.auto_shipment_on_fulfilledOff/sales/settings—

How it works

Creates a pending shipment (manual carrier) for a sales order the moment it is marked fulfilled, with the order’s delivery address, linked in the document chain.

Conditions for it to take effect

None.

When ON

Each sales order that becomes fulfilled and has at least one stock line gets one shipment; fulfilling again never creates a second one.

When OFF

No shipment is created automatically; create shipments by hand in Logistics.

Screens, documents and reports affected

Sales order fulfilment, Logistics shipments, document chain.

Caveats

Skipped for van sales (goods handed over at the point of sale) and for orders with services only. Orders fulfilled before you turn this on get no shipment retroactively.

Enforce sales price list

Reject quotation, sales order, AR invoice, POS and service order lines whose price differs from, is discounted below, or is missing from an effective sales price list

CodeDefaultSwitch atTurn on first
sales.enforce_price_listOff/sales/settingsSales price lists (sales.price_lists)

How it works

Makes the price list binding: every line that references a product or stock item must carry the price from an effective price list for that customer, date and currency.

Conditions for it to take effect

Requires Sales price lists to be on, with lists set up for the customers you sell to.

When ON

Saving a quotation, sales order, AR invoice, POS sale or Service Management service order is rejected (policy violation) when a line differs from the list price (tolerance 0.01), gives a deeper discount than the list, or has no list price at all.

When OFF

Typed prices are kept as typed; a line with price 0 is still filled from the list.

Screens, documents and reports affected

Quotation, sales order and AR invoice create/edit, POS checkout, Service Management service orders.

Caveats

A product with no list for that customer cannot be sold at all — set up a default list first. A price that exists only in another currency counts as no list. Free-text lines (no product) and unchanged lines on a saved draft are exempt; lines priced by a service contract are skipped. Duplicating a quotation or invoice and adding or repricing lines in a sales order amendment are checked too. Documents generated from another document (quotation → order, order/delivery → invoice) keep the already-checked upstream prices, and CSV migration import of historical documents is not checked.

Product bundles (combos)

Sell several goods and services as one combo product. Sales orders split a combo into its component lines: each component keeps its own tax rate, stock is deducted per component, and the combo price is allocated by standalone selling price. Turning this off stops creating or editing combos and adding new combo lines; existing orders that contain combos can still be read and printed.

CodeDefaultSwitch atTurn on first
sales.product_bundlesOn/sales/settings—

How it works

Lets you sell several goods and services as one combo product. On a sales order the combo is split into component lines: each keeps its own tax rate, stock is deducted per component and the combo price is allocated by standalone selling price.

When ON

The Bundle type appears on the product form; combos appear in line pickers; sales orders (including those converted from a quotation) and purchase documents explode combos into components.

When OFF

Creating a combo, turning a product into one or editing its components is rejected (feature disabled); combos are hidden from line pickers; adding a combo line to a new quotation, direct AR invoice or POS sale, or a new combo line to a sales order, is rejected. A combo already on a draft order stays editable, and a quotation that already holds a combo can still be converted to a sales order.

Screens, documents and reports affected

Product form, line pickers, sales orders, quotation → sales order conversion, purchase requests/RFQs/POs, customer returns.

Caveats

Only sales orders explode combos — on a quotation, a direct AR invoice or a POS sale the combo stays one line with no component stock movement. The combo preview on the product page keeps working while off. Required by Allow partial return of a combo (turn that off first).

Require approval for large price changes

A selling-price change whose |Δ%| exceeds the threshold is held as pending approval and routed through the Selling price change workflow

CodeDefaultSwitch atTurn on first
sales.selling_price_approval_requiredOff/sales/settings—

How it works

Holds a selling-price change for approval when its change versus the current active selling price is larger than the threshold.

When ON

A change above the threshold is saved as pending approval (the current price stays in force) and submitted to the Selling price change workflow; it takes effect when approved. A second gated change for the same item is rejected while one is pending.

When OFF

Every change takes effect immediately (or on its scheduled date).

Screens, documents and reports affected

Sales → Selling prices (set price, bulk update, scheduled changes, Pending tab), the price field on product and stock-item forms, product and stock-item import.

Caveats

Set up a Selling price change workflow first; without one the change waits in the Pending tab until a user with the approve-selling-prices permission decides — the person who made the change cannot approve it. List (MSRP) prices and an item’s first price are never gated. Turning the switch off does not release changes already pending: while an item has a pending change, any new selling-price change for it is refused until the pending one is approved, rejected or withdrawn.

Example

Threshold 10%: raising a price from 100,000 to 108,000 applies at once; raising it to 115,000 waits for approval.

Sales categories & category approval

Group quotations, sales orders and delivery orders into sales categories (e.g. Projects, Retail, Export), control who can create or view each category, and route approval to the approver assigned to the category. Off = one general category, no category access rules, approval follows the standard workflow.

CodeDefaultSwitch atTurn on first
sales.categoriesOff/sales/settings—

How it works

Groups quotations, sales orders and delivery orders into sales categories, restricts who can request/view/approve/manage each category, and routes approval to the workflow assigned to the category.

When ON

The category is taken from the products on the lines (lines from different categories are rejected), otherwise the General category; a header choice wins. Users only see and create documents in categories they are granted; quotation and sales order approval uses the category’s workflow, and approving inline needs the approve grant on that category. Delivery orders and invoices inherit the category from their parent.

When OFF

Every new document goes to the General category (a category sent in the request is ignored), no category access rules apply and approval follows the standard workflow. Category and grant settings become read-only.

Screens, documents and reports affected

Quotation, sales order and delivery order lists, detail pages and create forms; quotation and sales order approval; Sales settings → categories and grants.

Caveats

Turning it off asks for confirmation, takes effect within about 30 seconds and immediately lets restricted users see every quotation, sales order and delivery order; categories already stamped on documents stay. Invoices carry the category (a direct invoice gets the category of its products, otherwise General) but are not filtered by it. Users with Sales admin are not restricted.

Sales price lists

Enable customer, segment and promotional price lists. When off, the price-list pages are hidden and documents price from the central selling price

CodeDefaultSwitch atTurn on first
sales.price_listsOn/sales/settings—

How it works

Enables sales price lists (by customer, segment, promotion). When a quotation, sales order, AR invoice, POS sale or Service Management service order line is saved with price 0, the price is filled from the effective list for the customer, date and currency.

When ON

The Price lists pages and nav entry appear; price lists can be created, edited and deleted. Document lines are auto-priced from the list, and Enforce sales price list can be turned on.

When OFF

The Price lists pages and nav entry are hidden; creating, editing or deleting a price list is rejected (feature disabled). Document lines are no longer filled or checked against lists — prices come from the central selling price or what the user types.

Screens, documents and reports affected

Sales → Price lists, Selling prices (price-list section), quotation, sales order and AR invoice forms, POS, Service Management service orders.

Caveats

Turning it off deletes nothing: price lists stay in the system and become active again when you turn it back on, and existing documents keep their saved prices; the price-list membership card on product and stock-item pages is hidden while off. Required by Enforce sales price list (turn that off first).

Example

A distributor keeps a “Dealer tier 1” list 8% below retail: a rep adds a product to a dealer’s quotation with price 0 and the line is filled with the dealer price.

Sales team management

Group reps into sales teams. Off: the Sales teams page and its nav entry are hidden.

CodeDefaultSwitch atTurn on first
sales.team_managementOff/sales/settings—

How it works

Lets you group sales reps into sales teams. A sales record belongs to the team of its owner (the employee’s sales team).

When ON

The Sales teams page and nav entry appear; reps can be placed in teams; leads, deals and the forecast can be filtered by team.

When OFF

Every sales team operation is rejected (feature disabled), the page and nav entry are hidden, saving a rep with teams and filtering leads/deals/forecast by team are rejected.

Screens, documents and reports affected

CRM → Sales teams, sales reps, contact owner block, lead and deal lists, pipeline analytics, forecast.

Caveats

On by default for companies created after this feature; off for older ones unless they already had team data. Required by Teammates’ records visible (turn that off first). Turning it off keeps teams and memberships in the system.

Selling below cost

What happens when a quotation, sales order, invoice, POS or service order line is priced below the item’s cost (net of line discount). Warn shows the line in the form; Block refuses to save it. Lines without a known cost are not checked.

CodeDefaultSwitch atTurn on first
sales.below_cost_policywarn/sales/settings—

How it works

Decides what happens when a sales line’s net price (unit price after line discount) is below the item’s cost price (stock item cost × unit conversion).

When ON

Warn: the line is marked below cost in the form, saving is allowed. Block: saving a quotation, sales order, AR invoice, POS sale or Service Management service order with such a line is rejected (policy violation) and the error lists the line numbers.

When OFF

This is a choice with no “off” — the default Warn never blocks.

Screens, documents and reports affected

Line price hint on quotation, sales order and AR invoice forms; quotation, sales order, invoice, POS and service order create/edit; duplicates and sales order amendments.

Caveats

Only lines with a known cost greater than 0 are checked — services and non-stock lines have no cost and always pass. A free line (price 0) on a costed item counts as below cost. Unchanged lines on a saved draft and service-order lines priced by a contract are exempt. POS prices are compared as entered. Documents generated from another document and CSV migration import are not checked.

Teammates’ records visible

Widens the ‘own’ and ‘team’ data scope so members of a sales team also see quotations and sales orders owned by teammates. Only ever adds records.

CodeDefaultSwitch atTurn on first
sales.team_data_scopeOff/sales/settingsSales team management (sales.team_management)

How it works

Widens the “own” and “team” data scope: users also see quotations and sales orders owned by people in their sales team. It only adds records, never removes.

Conditions for it to take effect

Requires Sales team management, with reps placed in teams. Only matters for roles on the “own” or “team” scope.

When ON

Quotation and sales order lists, detail pages and the quotation summary cards also show records owned by teammates.

When OFF

Data scope behaves as before — own records and the manager hierarchy only. Users immediately lose sight of teammates’ records.

Screens, documents and reports affected

Quotation list, detail and summary; sales order list and detail.

Caveats

Does not widen leads, deals, customers, delivery orders or invoices. Team membership counts both the employee’s sales team and memberships set on the Sales teams page. On by default for newly created companies. Roles with the “all” scope are unaffected.