Sales Orders
This guide walks you through raising a Sales Order, getting it approved, and handing it over for fulfilment as either a Delivery Order or an Issue Request.
What is a Sales Order?
A Sales Order is a documented, trackable record of a customer's request for products. It is the starting point for the order-to-delivery process in TradeStack.
After approval, the order follows one of two fulfilment paths:
- If Requires Delivery is selected, generate a Delivery Order for dispatch to the customer.
- If Requires Delivery is not selected, generate an Issue Request for the warehouse to issue the goods directly.
Every Sales Order has a Sales Context: Standard, Van Sales, or Order Booking. The context is fixed when the order is created and cannot be changed afterwards.
Creating a Sales Order
Standard Sales Order
- Go to Sales → Sales Orders.
- Click + Sales Order.
- Complete the Create Sales Order form.
- Click Create Sales Order. The new order opens with a DRAFT status.
The Sales Orders list, showing the + Sales Order button.
Header fields
| Field | Required? | Meaning and rules |
|---|---|---|
Customer (business_partner) | Yes | The customer for the order. Only active, approved business partners can be selected. |
Order Date (order_date) | Yes | Defaults to today. A new order cannot use a past date. |
Fulfillment Date (fulfillment_date) | No | The expected or actual fulfilment date. |
Currency (currency) | No | The order currency. Defaults to KES. |
Requires Delivery (requires_delivery) | No | Select this when the goods must be dispatched to the customer. |
Destination (destination) | Conditional | The delivery destination. Required when Requires Delivery is selected. |
Sales Person (sales_person) | No | An active user whose profile type is Sales Staff. |
Payment Term (payment_term) | No | The payment terms for the order. |
Order Manager (document_manager) | No | A user whose type allows them to manage deliveries. |
Document Category (document_category) | Yes | The order classification. Defaults to STANDARD when left blank. |
Template order (is_template_order) | No | Marks the order as a template for recurring orders rather than an order to fulfil. |
Origin (origin) | Automatic | Set from the branch's own partner location; it is not entered on the form. |
The Create Sales Order form and its header fields.
The Sales Context cannot be changed after creation. If the wrong context is selected, cancel the order and create a new one.
Van Sales and Order Booking
Van Sales and Order Booking use dedicated creation screens:
- Van Sales requires a Vehicle and a Sales Person.
- Order Booking requires a Sales Person but does not require a Vehicle.
- The submitted Sales Context must match the screen being used.
- Origin is resolved automatically from the branch in both flows.
The creation request can safely be retried with the same client-generated guid after a lost connection; TradeStack returns the existing order instead of creating a duplicate.
Adding line items
A new order starts as DRAFT with no lines.
- Open the Line Items tab.
- Click + Add Line Item.
- Complete the line-item form.
- Click Save.
The Sales Order detail page in Draft status.
The Add Line Item form.
Line-item fields
| Field | Required? | Meaning and rules |
|---|---|---|
Product (product) | Yes | The product being ordered. |
Description (description) | No | A free-text description overriding the product's default description. |
Unit of Measure (unit_of_measure) | Yes | The unit used for the line, such as Piece or Carton. |
Quantity Ordered (quantity_ordered) | Yes | The quantity requested. It must be zero or greater. |
Price List (price_list) | No | The price list used to price the line, including its VAT rate. |
Tax (tax) | No | The applicable tax rate. |
Unit Price (unit_price) | Yes | The base price per unit before tax. Usually populated from the price list. |
Requires Return (requires_return) | No | Marks returnable packaging that the customer must hand back. |
Requires Tracking (requires_tracking) | No | Enables asset-level tracking for the item. |
The system calculates subtotal, total_amount, tax amounts, and the order totals. quantity_fulfilled starts at zero and is updated by fulfilment activity; it is not user-editable.
A line cannot have both Requires Return and Requires Tracking selected. The system rejects that combination.
The standard Add Line Item flow rejects a second active line for the same product when its return and tracking flags are identical. Edit the existing line instead, or use different flags when separate lines are genuinely required.
The Line Items tab showing saved lines and computed totals.
Editing and removing lines
Open a line item to edit its product, quantity, price, tax, flags, or other line fields. Each edit creates a price-history entry. Removing a line is a soft delete: it disappears from the active order, while its history is retained. Totals recalculate after either operation.
Line items are not automatically locked after approval. They can technically be edited or removed after approval, but changing a line after a Delivery Order or Issue Request has been generated can leave the documents out of sync. Coordinate with a supervisor before making a post-approval change.
Viewing and editing the order
The detail page can include these tabs:
| Tab | What it shows |
|---|---|
| Line Items | Products, quantities, prices, taxes, and totals. |
| Approval Sequence | Required approval steps and the approvals recorded so far. |
| Delivery Order | The Delivery Order generated from a delivery-required Sales Order. |
| Issue Requests | Issue Requests generated from an order that does not require delivery. |
The order header can be edited only while it has zero active line items, regardless of its status. Once the first line is added, fields such as Customer, Requires Delivery, and Destination are locked. To correct the header afterwards, cancel the order and create a new one.
Sales Order statuses
| Status | Meaning |
|---|---|
| DRAFT | The order is being built. This is the starting status. |
| READY | The order has been submitted and is waiting for approval. |
| APPROVED | The order has been approved and can be handed over for fulfilment. |
| REJECTED | The order was declined and can only be cancelled. |
| RETURNED | The order was sent back for rework and can be resubmitted or cancelled. |
| FAILED | A processing attempt failed and can be retried or cancelled. |
| IN_PROGRESS | Fulfilment is actively underway. |
| COMPLETE | Fulfilment is finished. |
| ARCHIVED | The order is closed. |
| CANCELLED | The order was called off. |
| TEMPLATE | The order is used only to generate recurring orders. |
Allowed transitions
DRAFT -> READY, CANCELLED
READY -> APPROVED, REJECTED, RETURNED, IN_PROGRESS, CANCELLED
REJECTED -> CANCELLED
RETURNED -> READY, CANCELLED
APPROVED -> IN_PROGRESS, FAILED, CANCELLED
FAILED -> READY, CANCELLED
IN_PROGRESS -> COMPLETE, FAILED
COMPLETE -> ARCHIVED
ARCHIVED -> terminal
CANCELLED -> terminal
TEMPLATE -> terminal
Transitions to Returned, Rejected, Failed, or Cancelled require a note explaining the decision. Template orders cannot transition at all.
The system supports returning a Returned or Failed order to Ready, but those actions may not be available as buttons on the Sales Order detail screen. Ask a supervisor or administrator when one of these states needs further action.
Submitting and approving
- From DRAFT, add at least one active line item.
- If you do not have approval permission, click Submit Order. The order becomes READY.
- An authorised approver clicks Approve Order. Once all required approval steps are complete, the order becomes APPROVED.
- A user with approval permission may approve directly from Draft, skipping Ready.
An order with no active line items cannot be submitted or approved. Multi-step approval sequences keep the order in Ready until every required approval has been recorded.
A Sales Order in Ready status with approval actions.
The Approval Sequence tab showing required steps and recorded approvals.
Fulfilling the order
After approval, the available fulfilment action depends on Requires Delivery.
Requires Delivery: generate a Delivery Order
For an approved order with delivery enabled:
- Open the Sales Order detail page.
- Click Generate Delivery Order.
- Review the customer, destination, totals, and lines on the confirmation page.
- Click Generate Delivery Order again to confirm.
An approved order showing Generate Delivery Order.
The confirmation form for generating a Delivery Order.
The new Delivery Order copies the order's branch, territory, organisation, business partner, salesperson, sender, recipient, origin, destination, totals, currency, document category, and every active line item.
The generated Delivery Order starts in READY. The Sales Order remains APPROVED; generating a Delivery Order does not change or lock the Sales Order.
The Delivery Order tab showing the generated document.
The Generate Delivery Order button disappearing is a screen safeguard, not a substitute for checking whether a Delivery Order was already generated. Do not confirm the action twice. Completing the Delivery Order is also not required before the Sales Order can be completed, so verify delivery yourself first.
No delivery: generate an Issue Request
For an approved order with Requires Delivery turned off:
- Open the Sales Order detail page.
- Click Generate Issue Request.
- Review each product's Ordered Qty, Outstanding Qty, Requires Return value, and Request Qty.
- Reduce Request Qty when a partial issue is intentional. A quantity cannot exceed the outstanding amount.
- Click Generate Issue Request.
The order must be approved, must not require delivery, and must not have another Issue Request in progress. Lines with no outstanding quantity are locked at zero.
An approved order showing Generate Issue Request.
The quantities form for generating an Issue Request.
The generated Issue Request starts in APPROVED and appears on the Sales Order's Issue Requests tab.
The Issue Requests tab showing the generated request.
Completing and archiving
- When fulfilment is ready, click Complete Order and confirm the transition. The order becomes COMPLETE.
- From Complete, click Archive Order when the record is ready to be closed. It becomes ARCHIVED.
For an Issue Request workflow, Complete Order remains unavailable until the Issue Request is fully fulfilled. For a Delivery Order workflow, the Sales Order can become Complete while delivery is still incomplete, so check the Delivery Order tab before completing it.
The Complete Order action on a Sales Order.
The Archive Order action on a completed Sales Order.
Permissions reference
| Permission | Controls |
|---|---|
VIEW_SALES_ORDER | Viewing Sales Order lists and details. |
ADD_SALES_ORDER | Creating Standard Sales Orders and editing a header before lines exist. |
CHANGE_SALES_ORDER | General Sales Order changes, delivery generation, completion, archiving, and relevant transitions. |
APPROVE_SALES_ORDER | Approval from Ready, returning, cancelling from Ready, and generating Issue Requests. |
DELETE_SALES_ORDER | Soft-deleting Sales Order records. |
CREATE_VAN_SALES_ORDER / VIEW_VAN_SALES_ORDER | Creating and viewing Van Sales orders. |
CREATE_ORDER_BOOKING_ORDER / VIEW_ORDER_BOOKING_ORDER | Creating and viewing Order Booking orders. |
VIEW_ISSUE_REQUEST | Viewing the Issue Requests tab. |
If an action is missing, check your role permissions or ask a supervisor to perform the step.
Best practices
- Complete and verify the header before adding the first line; the header locks as soon as an active line exists.
- Treat post-approval line edits as exceptions, especially after downstream documents have been generated.
- Use partial Issue Requests deliberately and keep Request Qty at or below Outstanding Qty.
- Check the Delivery Order tab before completing a delivery-required Sales Order.
- Add a clear note whenever returning, rejecting, failing, or cancelling an order.
Frequently asked questions
Can I edit the customer or destination after adding a line?
No. The header is locked once the order has an active line, regardless of its status. Cancel the order and create a new one.
Can I edit or remove a line after approval?
The system may allow it, but the change can make a generated Delivery Order or Issue Request inconsistent with the Sales Order. Coordinate with a supervisor first.
Why can I not select both Requires Return and Requires Tracking?
A line cannot use both flags at the same time. Use separate lines only when the business process genuinely requires different behavior.
Why is the fulfilment button missing?
Check that the order is approved, has active lines, and follows the correct branch: Requires Delivery shows Generate Delivery Order; otherwise Generate Issue Request. Existing downstream requests may also hide the action.
Why is Complete Order missing?
For an Issue Request workflow, the Issue Request must be fully fulfilled first. Refresh the Sales Order after fulfilment is complete.
Can I resubmit a Returned or retry a Failed order here?
The status transitions exist, but the corresponding action may not be available on the detail screen. Ask a supervisor or administrator for assistance.
Glossary
- Sales Context
- Standard, Van Sales, or Order Booking, fixed when the order is created.
- Outstanding quantity
- The ordered quantity that has not yet been fulfilled.
- Requires Delivery
- Whether the approved order is handed to dispatch through a Delivery Order or issued directly through an Issue Request.
- Requires Return
- A line flag indicating that the customer must return packaging or another item.
- Requires Tracking
- A line flag enabling asset-level tracking.
- Template order
- An order used to generate recurring orders rather than being fulfilled directly.