Skip to content

Add other stops: neither pickups nor drops (#345) - #346

Merged
Connor-Finn merged 3 commits into
mainfrom
tms/345-other-stops
Oct 5, 2026
Merged

Connor-Finn merged 3 commits into
mainfrom
tms/345-other-stops

Conversation

@Connor-Finn

Copy link
Copy Markdown
Collaborator

Closes #345.

  • ShipmentStop / ConsolidationStop get purpose + label; stopType: 'other' for fuel, rest, customs, cross-dock, hub, inspection and other stops (OTHER_STOP_PURPOSES in @open-tms/shared).
  • API: either waypoint list accepts { locationId, stopType: 'other', purpose, label }. syncShipmentStops never converts a stop into or out of an other stop, so orders can't be stranded.
  • Tracking: an other stop arrives on entry and completes on departure (dwell recorded, inferred once a later stop is reached) and never moves an order. A ping that departs a stop no longer also infers a second departure for it.
  • Lanes: stops tagged with a pass-through purpose become other stops on shipments using the lane.
  • Consolidations: runs carry other stops, reorder them anywhere, and never make one a shipment's origin or destination.
  • Portal hides other stops; labels show on the run page and map, BOL, location ops and Cargo tab.
  • Create/edit page: a custom route's stops are one ordered list with a single "Add stop"; each stop has a location and a type (Pickup, Drop, or a purpose), and only Other asks for a name. Choosing Pickup/Drop moves the stop to keep pickups before drops.

Decisions on the issue's open questions: cross-dock is a labelled pass-through; the portal hides other stops.

Tested live: Green Bay -> fuel stop at Chicago -> Atlanta. Arrived 12:00 and left 12:45 at the fuel stop with the order unchanged, delivered at Atlanta, shipment complete. Full backend suite (2506), frontend lib tests (30), tsc and lints pass. Lane mapping is unit-tested only.

🤖 Generated with Claude Code

Connor-Finn and others added 3 commits October 5, 2026 10:01
A waypoint can be an other stop (stopType 'other') with a purpose (fuel,
rest, customs, cross-dock, hub, inspection, other) and an optional name.
Tracking arrives it on entry and completes it on departure, so the dwell is
recorded, but it never moves an order; orders are never linked to one and
stop sync never converts a stop into or out of one. Lane stops tagged with
a pass-through purpose become other stops on shipments using the lane.
Consolidation runs carry them, let them be reordered anywhere, and never
make one a shipment's origin or destination. The customer portal hides them.

The create and edit page let any pickup or drop waypoint be marked as an
other stop, and stop labels show the name or purpose wherever stops are
listed. A ping that departs a stop no longer also infers a second
departure for it on the same ping.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The create and edit page's Pickups and Drops lists become one Stops list
in visiting order. Each stop is a Pickup, Drop or Other stop, with up/down
arrows; the list never lets a pickup sit after a drop, and other stops
move freely. Underneath, the page still keeps pickup and drop lists, so
orders, lanes, editing and saving are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each stop on a custom route now has a location and one type: Pickup, Drop,
Fuel, Rest, Customs, Cross-dock, Hub, Inspection or Other. Only Other asks
for a name. The stop rows are the page's own state, so a stop can take any
type before it has a location (the old other-stop details were keyed by
location and couldn't). Choosing Pickup moves a stop up before the first
drop and Drop moves it after the last pickup, instead of disabling those
options.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Connor-Finn
Connor-Finn merged commit e1d7cf5 into main Oct 5, 2026
@Connor-Finn
Connor-Finn deleted the tms/345-other-stops branch October 5, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TMS: "Other" stops that aren't pickups or drops (fuel, rest, customs, cross-dock…)

1 participant