Route Delivery
Route Delivery groups every Wholesale Order whose Delivery Date matches the date you pick, organised by that order's Delivery Route, so you can hand a driver one packing list per route and mark orders delivered as they go out.
Overview
This page is the same shared "Route Delivery" component used by the Bakery variant, mounted here with an apiBase of /wholesale — its data source is your Wholesale Orders (the WholesaleOrder table), not a separate delivery-order record.
Pick a date and the page loads every wholesale order with that exact Delivery Date, then groups them by the order's Delivery Route field — orders with no route set are grouped under "No Route Assigned".
Each route is shown as a collapsible card with its own order count, line-item count, total value and a "pending" count of orders not yet delivered; a "Mark all delivered" shortcut appears until every order in that route is done.
Every order row can expand to show its line items, and shows a Delivered button that flips just that order's status via a status-update call.
Before You Start
- You must have the Billing feature enabled on your plan.
- Wholesale orders must have both a Delivery Date matching the date you have selected and a Delivery Route value if you want them grouped under a named route instead of "No Route Assigned" — set these when creating or editing the order.
Step-by-Step Guide
1 Review a delivery day's routes
- Use the date picker at the top (defaults to today) to choose which day's deliveries to view.
- Read the summary bar: Total orders, Routes, Delivered x / total, and Total value.
- Click a route card's header to expand or collapse its list of orders.
2 Work through a route and mark deliveries done
- Expand a route card to see each order — customer name, order number, status badge, and any notes.
- Click the "N items · total ▼" line on an order to expand its individual line items.
- Click Delivered on an order once it is handed over — its status flips immediately via a PATCH to the order's status endpoint.
- Use Mark all delivered in the route header to close out every remaining order on that route in one click.
3 Print a packing list
- Click Packing list on a route, or Print all in the page header, to open your browser's print dialog.
- The printed sheet shows a packing-list header and the order/route summary; everything else is hidden from the printout via print-only styling.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Date picker | Chooses which day's wholesale orders to load and group into routes; defaults to today. Matches an order's Delivery Date exactly — not a range. |
Print all | Opens the browser print dialog for the whole page. |
Summary bar — Total orders / Routes / Delivered / Total value | Aggregate counts and value across every order loaded for the selected date. |
Route card header | Shows the route name (or "No Route Assigned"), order count, line-item count, total value, and a pending-orders count; click to expand/collapse. |
Mark all delivered | Marks every non-terminal order on that route as Delivered in one action; hidden once the route has no pending orders left. |
Delivered button | Marks a single order as Delivered; hidden once the order is already Delivered or Cancelled. |
"Add Delivery" (route card) | Opens a form to create a new delivery order directly from this page — see Troubleshooting, this does not currently work for the Wholesale variant. |
Log driver return | Opens a form to record unsold items a driver brings back — see Troubleshooting, this currently logs into the Bakery module's data, not a wholesale-specific log. |
Tips & Best Practices
- Set a consistent Delivery Route value (e.g. "North Zone", "Van 2") on your wholesale orders so they group meaningfully here instead of piling up under "No Route Assigned".
- Use Mark all delivered at the end of a route run instead of clicking Delivered on every single order.
- Because this page is just a grouped view of Wholesale Orders, any change you make to an order's route or delivery date on the Wholesale Orders page is reflected here the next time you reload — there is no separate delivery record to keep in sync.