Home / Help Center / pos-app-wholesale / wholesale / Dispatch Planner
🚚 wholesale

Dispatch Planner

Dispatch Planner groups confirmed wholesale orders by delivery route for a chosen date, letting you print a packing slip per order and advance individual orders (or an entire route at once) from Confirmed to Dispatched, and from Dispatched to Delivered.

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

Overview

The page calls GET /wholesale/dispatch-plan with only a deliveryDate — there is no status selector in the UI, and the backend endpoint always defaults to CONFIRMED orders when no status is passed, so this page can only ever show confirmed orders for the chosen date.

Orders are grouped by their deliveryRoute field into route cards; any order without a route set is grouped under "Unassigned" rather than being hidden.

"Dispatch All" on a route steps through every CONFIRMED order in that route one at a time, calling the same status-update endpoint used by the single "Dispatch" button on each order.

Status changes go through PATCH /wholesale/orders/:id/status — the same generic order-status endpoint used elsewhere in wholesale, not a dispatch-specific endpoint.

Packing slips are generated entirely client-side from the order data already loaded on the page (no extra API call) and clearly print with a "Not a Tax Invoice" label.

Before You Start

Step-by-Step Guide

1 Plan today's dispatch

  1. Open Wholesale → Dispatch Planner.
  2. Set the date field (defaults to today) and click Refresh if needed.
  3. Review the Total Orders and Routes summary cards, then scan each route card for its order count and total value.

2 Print a packing slip before loading a vehicle

  1. Find the order within its route card.
  2. Click the print icon next to the order — a packing slip opens in a new window listing Ship To, order number, order/delivery dates and item quantities, with a "Not a Tax Invoice" note.
  3. Use Prepared by / Checked by lines at the bottom for a manual sign-off.

3 Dispatch a single order

  1. Click "Dispatch" on the order once it is loaded and ready to leave.
  2. The order status is set to DISPATCHED via the wholesale order status endpoint, and the list reloads.
💡 Because this page always queries for CONFIRMED orders only, a just-dispatched order disappears from the Dispatch Planner view on the next reload rather than switching to a "Delivered" button — see Troubleshooting.

4 Dispatch an entire route at once

  1. Click "Dispatch All" on a route's header — this only appears if the route still has at least one CONFIRMED order.
  2. Each CONFIRMED order in that route is marked DISPATCHED one after another; watch the success toasts to confirm each one completed.

Every Field & Button, Explained

Field / ButtonWhat it does
DateFilters orders by exact delivery date match (same semantics as Pick List). No status selector exists on this page.
Total Orders / RoutesSummary cards: count of matching CONFIRMED orders and the number of distinct delivery-route groups (including "Unassigned").
Route headerRoute name (or "Unassigned" if the order has no deliveryRoute), order count and combined total amount for the route.
Dispatch AllOnly shown when the route has at least one CONFIRMED order; marks each such order DISPATCHED in sequence via repeated single-order status calls.
Order status badgeColour-coded chip for CONFIRMED / DISPATCHED / DELIVERED / CANCELLED, styled from the order's current status field.
Print iconOpens a client-generated packing slip for that order — items, quantities and units only, no pricing.
Dispatch buttonVisible on CONFIRMED orders; sets status to DISPATCHED.
Delivered buttonVisible on DISPATCHED orders; sets status to DELIVERED. In practice this button rarely appears because the page's own query only returns CONFIRMED orders (see Troubleshooting).
Order notesShown in italics under the order row when the order has a notes value.

Tips & Best Practices

Troubleshooting & FAQ

I dispatched an order and now it has vanished from the route instead of showing a Delivered button.
This is expected given how the page queries data: GET /wholesale/dispatch-plan defaults to status=CONFIRMED whenever no status is supplied, and Dispatch Planner never sends a status parameter. As soon as an order becomes DISPATCHED it no longer matches that filter, so the next reload (triggered automatically after you click Dispatch) removes it from view — the DISPATCHED badge and "Delivered" button you see in the code are effectively unreachable through this page's normal flow.
A whole route disappeared after I clicked "Dispatch All".
Same cause as above — once every order in a route has been marked DISPATCHED, none of them match the page's implicit CONFIRMED-only filter, so the route card itself disappears on the next reload.
Where do I go to mark a dispatched order as Delivered?
Not this page in its current form. Use Wholesale Orders directly (or the order's own status control) to move a DISPATCHED order to DELIVERED — Dispatch Planner's data source will not surface it again once it leaves CONFIRMED status.
"Dispatch All" only dispatched some of the orders in the route.
The button loops through orders sequentially with individual API calls; if one call fails (e.g. a network hiccup), the loop still attempts the rest, but you should check for an error toast and re-run Dispatch All to retry any orders left in CONFIRMED status.
The packing slip is missing prices.
By design — the packing slip is explicitly marked "Not a Tax Invoice" and only prints product name, quantity and unit; it deliberately excludes pricing.