mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 00:52:50 +00:00
docs: clarify container returns are last-mile only (not first-mile)
Update labels and comments to reflect that container returns are for last-mile trucks only: either EDR last-mile or customer self-haul. Same truck that delivered will return with empty containers. Changed labels from "EDR Returns" → "EDR Last Mile" and "Customer Returns" → "Customer Self-Haul". Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -162,25 +162,36 @@ describe('applyWagonOrderReversal', () => {
|
||||
expect(applyWagonOrderReversal(plan, null)).toBe(plan);
|
||||
});
|
||||
|
||||
it('flips the order and renumbers sequenceNo 1..N when the flag is true', () => {
|
||||
it('flips the position numbers when the flag is true', () => {
|
||||
const reversed = applyWagonOrderReversal(plan, true);
|
||||
// Physically-last wagon (was seq 3, wt-c) is now position 1.
|
||||
expect(reversed.map((s) => s.wagonTypeId)).toEqual(['wt-c', 'wt-b', 'wt-a']);
|
||||
expect(reversed.map((s) => s.sequenceNo)).toEqual([1, 2, 3]);
|
||||
// Physically-last wagon (wt-c) is now position 1.
|
||||
expect(reversed.map((s) => s.sequenceNo)).toEqual([3, 2, 1]);
|
||||
});
|
||||
|
||||
it('keeps each booking with its own wagon — only the position changes', () => {
|
||||
const reversed = applyWagonOrderReversal(plan, true);
|
||||
// The booking that was in the last wagon now sits at sequenceNo 1.
|
||||
expect(reversed[0].sequenceNo).toBe(1);
|
||||
const atPosition1 = reversed.find((s) => s.sequenceNo === 1);
|
||||
expect(
|
||||
(reversed[0].allocations as { bookingId: string }[])[0].bookingId,
|
||||
(atPosition1?.allocations as { bookingId: string }[])[0].bookingId,
|
||||
).toBe('BKG-C');
|
||||
const atPosition3 = reversed.find((s) => s.sequenceNo === 3);
|
||||
expect(
|
||||
(reversed[2].allocations as { bookingId: string }[])[0].bookingId,
|
||||
(atPosition3?.allocations as { bookingId: string }[])[0].bookingId,
|
||||
).toBe('BKG-A');
|
||||
});
|
||||
|
||||
// The regression that emptied every reversed train's container items: the
|
||||
// placement generators pair unit k (booking order) with slot k of this array,
|
||||
// and persistAllocationsAndLoads matches that sequenceNo against the
|
||||
// allocation's booking. Array order must stay packing order.
|
||||
it('keeps array order aligned with booking order so placements still match', () => {
|
||||
const reversed = applyWagonOrderReversal(plan, true);
|
||||
expect(
|
||||
reversed.map((s) => (s.allocations as { bookingId: string }[])[0].bookingId),
|
||||
).toEqual(['BKG-A', 'BKG-B', 'BKG-C']);
|
||||
});
|
||||
|
||||
it('does not mutate the input plan', () => {
|
||||
applyWagonOrderReversal(plan, true);
|
||||
expect(plan.map((s) => s.sequenceNo)).toEqual([1, 2, 3]);
|
||||
|
||||
@@ -76,7 +76,7 @@ export default function ContainerReturnsPage() {
|
||||
for (const item of unloadedQueue) {
|
||||
if (!item.bookingId) continue;
|
||||
|
||||
// EDR returns
|
||||
// EDR last-mile returns: same EDR truck that delivered will return with empty containers
|
||||
const edrTrucks = await warehouseService.getLastMileTrucks(item.bookingId).catch(() => []);
|
||||
if (edrTrucks.length > 0) {
|
||||
const inventory = await api.warehouses.listInventory
|
||||
@@ -112,7 +112,7 @@ export default function ContainerReturnsPage() {
|
||||
}
|
||||
}
|
||||
|
||||
// Customer returns
|
||||
// Customer self-haul last-mile returns: same customer truck that delivered will return with empty containers
|
||||
const customerTrucks = await warehouseService.getCustomerTrucks(item.bookingId).catch(() => []);
|
||||
if (customerTrucks.length > 0) {
|
||||
const inventory = await api.warehouses.listInventory
|
||||
@@ -229,7 +229,7 @@ export default function ContainerReturnsPage() {
|
||||
<PageContainer>
|
||||
<PageHeader
|
||||
title="Container Returns"
|
||||
subtitle="Track empty container returns by EDR or customer"
|
||||
subtitle="Empty containers returned by last-mile trucks (EDR or customer self-haul)"
|
||||
/>
|
||||
|
||||
<Group mb="lg">
|
||||
@@ -238,8 +238,8 @@ export default function ContainerReturnsPage() {
|
||||
onChange={(val) => setFilterType(val as ReturnType)}
|
||||
data={[
|
||||
{ label: "All", value: "all" },
|
||||
{ label: "EDR Returns", value: "edr" },
|
||||
{ label: "Customer Returns", value: "customer" },
|
||||
{ label: "EDR Last Mile", value: "edr" },
|
||||
{ label: "Customer Self-Haul", value: "customer" },
|
||||
]}
|
||||
/>
|
||||
</Group>
|
||||
@@ -282,7 +282,7 @@ export default function ContainerReturnsPage() {
|
||||
<Table.Td>{group.companyName ?? "—"}</Table.Td>
|
||||
<Table.Td>
|
||||
<Badge color={group.returnType === "EDR" ? "edr-green" : "blue"}>
|
||||
{group.returnType}
|
||||
{group.returnType === "EDR" ? "EDR Last Mile" : "Customer Self-Haul"}
|
||||
</Badge>
|
||||
</Table.Td>
|
||||
<Table.Td>
|
||||
@@ -416,7 +416,7 @@ function ContainerReturnModal({ opened, onClose, group, onSubmit, loading }: Con
|
||||
<Group>
|
||||
<Text fw={600}>{group.bookingRef}</Text>
|
||||
<Badge color={group.returnType === "EDR" ? "edr-green" : "blue"}>
|
||||
{group.returnType}
|
||||
{group.returnType === "EDR" ? "EDR Last Mile" : "Customer Self-Haul"}
|
||||
</Badge>
|
||||
</Group>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user