Chapter 6 — Sales
Module code: sales
Features: sales_dashboard, sales_orders, sales_teams
Home: /dashboard/ within the Sales app (reached from the Sales tile)
6.1 What the module is for
Sales handles the path from a quotation to a delivered, invoiced order. It is the module that connects the customer to stock and to the ledger: confirming an order reserves the goods, creating the delivery relieves them, and creating the invoice posts the revenue.
6.2 The sales order lifecycle
Quotation ──confirm──► Sales order ──► Locked
(draft) (sale) (done)
│ │
│ ├──► Delivery (Inventory)
│ └──► Invoice (Accounting)
│
└──cancel──► Cancelled
| State | Shown as | Meaning |
|---|---|---|
draft |
Quotation | Being prepared. Editable. Nothing reserved, nothing posted. |
sale |
Sales order | Confirmed and committed. Deliveries and invoices can be created. |
done |
Locked | Closed to further change |
cancel |
Cancelled | Abandoned |
6.3 Screens
/dashboard/ sales dashboard
/orders/ order list
/orders/new/ new quotation
/orders/<id>/ order detail
/orders/<id>/edit/ edit
/orders/<id>/confirm/ confirm (quotation → sales order)
/orders/<id>/cancel/ cancel
/orders/<id>/unlock/ unlock a locked order
/orders/<id>/delivery/ create the delivery
/orders/<id>/invoice/ create the invoice
/performance/ sales team performance
/prices/ price list entries
/pricelists/<id>/ a pricelist
6.4 Setup before first use
| Prerequisite | Where | Why |
|---|---|---|
| Customers exist as partners with nature Customer or Both | Chapter 5 | Nothing can be sold to a partner that is not a customer |
| Items exist and are marked sellable | Chapter 8 | Order lines pick from the item list |
| A warehouse exists | Chapter 8 | Deliveries come out of one |
| A sales journal and revenue accounts exist | Chapter 12 | Invoices must post somewhere |
| Taxes are configured and set on items | Chapter 12 | Tax is taken from the item unless overridden |
| Sales teams and salespeople are set up | Chapter 5 | Needed for performance reporting |
6.5 Pricelists and prices
Screens: /pricelists/new/, /prices/, /prices/new/
A pricelist is a named set of prices — Retail, Wholesale, Export 2026. A customer carries a pricelist on their partner record, and order lines take their unit price from it automatically.
Creating a pricelist
- Go to
/pricelists/new/. - Enter the name and currency.
- Save.
Adding prices
- Go to
/prices/new/. - Choose the pricelist and the item.
- Enter the unit price.
- Optionally set a minimum quantity so the price applies only from that quantity upwards, and valid from / valid to dates for a promotion.
- Save.
How a price is chosen on an order line
1. Is there a price for this item on the customer's pricelist,
valid today, at this quantity? → use it
2. Otherwise → use the item's own sales price
If a price looks wrong on an order, check in that order: the customer's pricelist, then the entry's quantity break and dates, then the item's own price.
Archive a pricelist at /pricelists/<id>/archive/ rather than deleting it, so past
orders still explain themselves.
6.6 Creating a quotation
Screen: /orders/new/
- Select New quotation.
- Header: - Customer — start typing to search. If the customer does not exist, create it first (Chapter 5). - Delivery address — defaults to the customer's default delivery address. Change it here for a one-off destination. - Order date and expected delivery date. - Warehouse — where the goods will ship from. - Sales team and salesperson — default from the customer. - Payment terms — default from the customer; drives the invoice due date.
- Lines — for each item: - Choose the item. Description, unit and price fill in automatically. - Enter the quantity. - Adjust the unit price if you are authorised to. - Enter a discount percentage if applicable. - Check the tax. It comes from the item; override only for a real reason. - The line total is calculated. Do not try to type it.
- Check the totals panel: untaxed amount, tax, total.
- Save.
The quotation can now be printed or emailed to the customer, and edited freely until it is confirmed.
Checking stock while quoting
The order screen can tell you whether the goods are available before you promise a date. Where the check is offered on a line, it reports free-to-promise quantity in the selected warehouse. Use it before committing to a delivery date rather than after.
6.7 Confirming the order
Screen: /orders/<id>/confirm/
- Open the quotation.
- Select Confirm.
On confirmation:
- The state changes from Quotation to Sales order.
- The document keeps its number.
- Stock for the ordered items is committed against the order.
- Delivery and invoice buttons become available.
After confirmation the lines are no longer freely editable. To change a confirmed order you either cancel it and start again, or unlock it if you have the right, make the change, and re-check the downstream documents.
6.8 Delivering the goods
Screen: /orders/<id>/delivery/
- Open the confirmed order.
- Select Create delivery. A delivery transfer is created in Inventory containing the ordered lines.
- Go to the transfer (the order links to it) and process it as described in Chapter 8, section on transfers: - Check availability to reserve stock. - Enter the quantities actually being sent. - Validate to move the stock.
Validating the delivery is the moment stock leaves your books and the cost of goods sold is recognised.
Partial deliveries
Enter the quantity actually shipped rather than the ordered quantity, and validate. The remainder stays outstanding on the order, and you create a second delivery for it later.
6.9 Invoicing
Screen: /orders/<id>/invoice/
- Open the order.
- Select Create invoice. A draft customer invoice is created in Accounting with the order's lines, prices and taxes.
- Open the invoice, check it, and post it. See Chapter 12 for what posting does and how to register the payment afterwards.
The invoice is created in draft on purpose. It is your last chance to check the figures before they reach the ledger.
6.10 Cancelling and unlocking
| Action | Screen | Notes |
|---|---|---|
| Cancel | /orders/<id>/cancel/ |
Only sensible before delivery or invoicing. If documents already exist downstream, cancel or reverse those first. |
| Unlock | /orders/<id>/unlock/ |
Returns a locked order to an editable state. Restricted; use it for genuine corrections, not routine editing. |
6.11 Sales team performance
Screen: /performance/
Shows orders and value by sales team and salesperson over a chosen period.
The report is only as good as the data behind it. If figures look wrong, the cause is nearly always that customers have no salesperson or sales team set on their partner record, so their orders fall outside every team.
6.12 The sales dashboard
Screen: /dashboard/
Shows current quotations, confirmed orders, orders awaiting delivery, orders awaiting invoice, and recent activity. Use the "awaiting" figures as a daily work list — an order sitting there for a week is usually a forgotten step rather than a customer delay.
6.13 Daily routine
Morning
[ ] Open /dashboard/ and check orders awaiting delivery
[ ] Check orders awaiting invoice — invoice everything delivered yesterday
[ ] Review quotations older than your follow-up period
During the day
[ ] Enter new quotations as they are requested
[ ] Confirm quotations the customer has accepted
[ ] Create deliveries for confirmed orders and hand them to the warehouse
End of day
[ ] Confirm nothing is stuck in draft that should have gone out
6.14 Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The customer is not in the dropdown | Partner nature is not Customer or Both, or it is archived | Correct the partner |
| The item is not in the line dropdown | Item is not marked sellable, or is archived | Correct the item in Chapter 8 |
| Price is wrong on a line | Pricelist, quantity break, validity dates, or the item's own price | Check in that order — section 6.5 |
| Confirm does nothing / errors | A required header field is blank, or lines are empty | Complete the header; a quotation needs at least one line |
| Delivery cannot be validated | Stock is not available or not reserved | Run Check availability; if still short, receive or adjust stock first |
| Invoice will not post | Missing accounts, a locked period, or no sales journal | See Chapter 12 |
| Tax is missing on the invoice | The item has no tax and none was set on the line | Set the tax on the item so future orders are right too |
| Sales performance report is empty | Customers have no salesperson or team | Set them on the partner records |