From 57a504867b470db75f361dcebb53f7d1e1b3a769 Mon Sep 17 00:00:00 2001 From: Marshal Date: Sun, 5 Jul 2026 16:41:11 +0000 Subject: [PATCH] add contract reference to bookings list and enhance search functionality --- apps/edr-freight-api/py/waafi.jpeg | Bin 0 -> 15518 bytes .../src/pages/bookings/BookingsListPage.tsx | 47 ++++++++++++++++-- packages/types/src/freight/index.ts | 2 + 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 apps/edr-freight-api/py/waafi.jpeg diff --git a/apps/edr-freight-api/py/waafi.jpeg b/apps/edr-freight-api/py/waafi.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..392de36cc200cb347bf3c4689698d42e00230a5c GIT binary patch literal 15518 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 { const q = query.trim().toLowerCase(); if (!q) return allItems; return allItems.filter((b) => - [b.reference, b.originYard?.label, b.destinationYard?.label] + [ + b.reference, + b.contractReference, + b.originYard?.label, + b.destinationYard?.label, + ] .filter(Boolean) .some((v) => String(v).toLowerCase().includes(q)), ); @@ -506,6 +512,41 @@ export default function BookingsListPage() { ); }, }, + { + id: "contract", + size: 150, + meta: hMeta, + header: () => , + cell: ({ row }) => { + const ref = row.original.contractReference; + const cid = row.original.contractId; + if (!ref) { + return ( + + — + + ); + } + return ( + { + e.stopPropagation(); + navigate(`/contracts/${cid}`); + } + : undefined + } + > + {ref} + + ); + }, + }, { id: "type", size: 150, @@ -708,7 +749,7 @@ export default function BookingsListPage() { > } value={query} onChange={(e) => setQuery(e.currentTarget.value)} diff --git a/packages/types/src/freight/index.ts b/packages/types/src/freight/index.ts index 705439904..f80f01e23 100644 --- a/packages/types/src/freight/index.ts +++ b/packages/types/src/freight/index.ts @@ -388,6 +388,8 @@ export interface IBooking extends BaseEntity { customerId: string; /** The contract this booking was created under (Path A / Path B). */ contractId?: string | null; + /** Human-readable reference of the parent contract, joined onto list rows. */ + contractReference?: string | null; trainId?: string | null; status: BookingStatus; /** ONE_TIME for normal bookings; GENERAL_CONTRACT for umbrella contracts. */