Home / Help Center / pos-app-wholesale / wholesale / Route Delivery
🚚 wholesale

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.

📍 Menu path: Wholesale → Route Delivery
👤 Who uses it: All roles with the Billing feature enabled

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

Step-by-Step Guide

1 Review a delivery day's routes

  1. Use the date picker at the top (defaults to today) to choose which day's deliveries to view.
  2. Read the summary bar: Total orders, Routes, Delivered x / total, and Total value.
  3. Click a route card's header to expand or collapse its list of orders.

2 Work through a route and mark deliveries done

  1. Expand a route card to see each order — customer name, order number, status badge, and any notes.
  2. Click the "N items · total ▼" line on an order to expand its individual line items.
  3. Click Delivered on an order once it is handed over — its status flips immediately via a PATCH to the order's status endpoint.
  4. 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

  1. Click Packing list on a route, or Print all in the page header, to open your browser's print dialog.
  2. 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 / ButtonWhat it does
Date pickerChooses 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 allOpens the browser print dialog for the whole page.
Summary bar — Total orders / Routes / Delivered / Total valueAggregate counts and value across every order loaded for the selected date.
Route card headerShows 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 deliveredMarks every non-terminal order on that route as Delivered in one action; hidden once the route has no pending orders left.
Delivered buttonMarks 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 returnOpens 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

Troubleshooting & FAQ

Clicking "Add Delivery" (or the equivalent new-delivery button) fails or does nothing.
This shared component posts new delivery orders to POST /wholesale/delivery-orders, but that endpoint is not registered in backend/src/routes/wholesale.routes.js — only GET /wholesale/delivery-orders (list) and PATCH /wholesale/delivery-orders/:id/status (status update) exist for the Wholesale variant. Create the order from the Wholesale Orders / Order Intake pages instead, with its Delivery Date and Delivery Route set, and it will appear here.
I used "Log driver return" from this page — where did that data go?
This shared component always posts driver-return line items to POST /bakery/wastage, regardless of which variant it is running in — the apiBase prop is not applied to this specific call. On pos-app-wholesale this means the return gets logged into the Bakery module's Wastage Log table (BakeryWastageLog), not anywhere wholesale-specific. Treat this feature as not reliable for wholesale until it is fixed; log unsold/returned stock through Inventory or RMA instead.
Everything is grouped under "No Route Assigned".
None of the day's wholesale orders have a Delivery Route value set. Add a route name when creating or editing orders so they group properly here.
No deliveries show up for a date I know has orders.
The page only loads wholesale orders whose Delivery Date matches the selected date exactly. Double-check the date picker against the order's Delivery Date on the Wholesale Orders page.