Features
Sales and Purchase Orders
Track what a customer ordered from you (sales orders), what you ordered from suppliers and what has arrived (purchase orders), and the deliveries that fulfil each order, from receipt to completion.
Winning a tender starts three steps: the buyer's purchase order arrives (an incoming sales order for you), you order the goods from your suppliers (outgoing purchase orders) and record what arrives, then the goods go out to the buyer as deliveries. The Sales orders page (Sales section) and the Purchase orders page (Procurement section) in the navigation bar track the three steps, and every record links to what came before and after it: the quotation the customer accepted, the tender, the sales order a purchase sources, and the deliveries that fulfil it.
Sales orders
A sales order is what a customer ordered from you: the customer (required; pick one from the customer directory and its name is copied, or type it), their reference (their PO or contract number), the order date, the due date they expect delivery by, the currency, and the lines: description, quantity, unit and unit price when known. Every order gets a sequential number for your organization (SO-000001, then SO-000002...) that never changes, and its total is computed from the priced lines only; an order whose lines are not priced yet has no total.
The quickest way to create one is from a quotation: the Create sales order button on the quotation page opens the form filled with the customer, the tender and the quoted lines at their prices, and nothing is saved until you click save. You can also create one from scratch and pick the tender and quotation from the lists. Lines come from the product catalog or are typed as free descriptions; picking a product fills the description, unit and sale price where the cells are empty.
Sales order status
- New: the order arrived and was recorded.
- Confirmed: you reviewed it and confirmed it to the customer.
- In progress: deliveries have started. The order moves here on its own when the first linked delivery is created.
- Fulfilled: every line has been delivered. The order moves here on its own when the last delivery is marked delivered, and the completion time is recorded.
- Cancelled: the order was called off. Nothing moves it automatically afterwards.
Fulfilment by deliveries
The Create delivery button on a sales order page opens the delivery form linked to the order and filled with one line per order line still to deliver, at the remaining quantity; when the customer's name matches a saved destination it is picked for you. In the delivery form itself you can pick the Sales order from the list and click Fill lines from the order. Every delivery line linked to an order line (the "Order line" column says linked or not linked) counts toward that line's fulfilment.
The Fulfilment card on the order page sums it up: delivered of ordered, what is on the way, and what remains, with a progress bar, and every line carries Delivered (on deliveries marked delivered), On the way (deliveries still draft, scheduled or in transit) and Remaining columns. A cancelled delivery counts for nothing. The Deliveries list beneath links each delivery to its page and status.
When a delivery deviates from the order
A delivery is not held to the order: it records what actually left the warehouse, and the platform blocks nothing. What it does is show every difference in a Deviations from the order card that appears on the sales order page whenever there is one: a line delivered beyond its ordered quantity (the excess also shows beside the delivered count in the lines table), a line on a linked delivery that is not on the order at all, a line shipped as a different product than the order line's (when both sides carry a catalog product), a delivery delivered or scheduled after the due date, and an order marked fulfilled by hand while quantities remain. When the deliveries match, the fulfilment card says so. An over-delivered line never covers for a short one: remaining is counted per line.
In the delivery form, once it is linked to a sales order, the "Order line" column says how much of each order line remains and turns amber when the quantity exceeds it; a hint only, and saving is always possible.
Purchase orders
A purchase order is what you ordered from a supplier: the supplier (pick one from the manufacturer directory and its name is copied, or type it), the supplier's reference (their confirmation or proforma number), the order date, the expected arrival date, the currency, and the lines with their unit cost. It gets a sequential number (PO-000001...) and its total is computed from the priced lines. The Create purchase order button on a sales order page fills the lines from the order and links it, without prices; what the customer pays says nothing about the supplier's cost.
Recording receipts
When goods arrive, click Record receipt on the purchase order page: a panel appears with one row per line where you enter what arrived now, and it is added to that line's received total. The received total can never exceed the ordered quantity; a panel that would is refused whole and nothing from it is saved. After saving, the order moves on its own to Partially received or, once every line is complete, to Received, with the receipt time recorded. The Goods received card and the Received and Remaining columns in the lines table show where things stand.
Purchase order status
- Draft: being prepared, not sent yet.
- Sent: sent to the supplier.
- Confirmed: the supplier confirmed it (record their confirmation number as the supplier reference).
- Partially received and Received: moved by receipts on their own, and can be set by hand too.
- Cancelled: takes no receipts; move it back to draft first.
Editing orders
The Edit button on any order page opens the same form. Lines are edited in place, never replaced: a sales order line keeps its linked deliveries, a purchase order line keeps what was received, and its quantity cannot be lowered below that. Removing a line from the form removes it from the order. The order number never changes, and the status is changed with the status buttons, not the form.
Roles
Sales orders are visible to every role but Technical and editable from the working level up (Sales, Purchasing, Admin, Owner); Viewer (no pricing) sees them without unit prices or totals. Purchase orders are cost data end to end (the supplier and what you pay them), so only roles that see cost prices can open them: Purchasing, Admin, Owner and Viewer; the Sales role sees neither them nor their list on a sales order page.
Over the API and MCP
Everything above is available over the REST API under /api/v1/sales-orders and /api/v1/purchase-orders (with .../status and .../receive) behind the orders.read and orders.write scopes, and through the MCP tools sales_orders_* and purchase_orders_*, among them purchase_orders_receive for goods receipts. The delivery tools take sales_order_id and a per-line sales_order_item_id. So you can tell your assistant: "record that 200 pieces of line one on PO-000004 arrived today".