Commit Graph

2730 Commits

Author SHA1 Message Date
Hagernesh
2397c6bca4 fix(warehouse): show assigned trucks on the Trucks on Site page, not only arrived ones
The page filtered on arrived_at IS NOT NULL, so a truck appeared only once the
warehouse receive flow stamped its arrival. Assigned trucks that had not yet
reached the yard were invisible, which left the page empty whenever nothing had
been received — every assigned truck was missing.

It now lists every truck assigned to a booking that has not departed, from both
haulage paths, tagged INBOUND (assigned, not yet arrived) or ON_SITE (arrived).
A scope toggle filters between them, dwell time shows only once a truck has
actually arrived, and the KPI count on the dashboard stays strict (arrived only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 08:24:39 +00:00
Hagernesh
1fe8c2fd8e feat(export): gate receive on payment and loading on received + GRN
Three export rules that the flow left open.

An unpaid export booking could be received at the warehouse. Receiving is
what starts storage and mints a GRN, so it must not happen against cargo the
customer has not settled. receive() now rejects an unpaid EXPORT booking.
Import is untouched — it arrives OFF a train and its receive is the unload,
so gating that on payment would strand cargo already at the yard.

An allocated export booking could be marked loaded onto its train without
ever reaching the warehouse. An allocation is a plan; the GRN is the proof
the goods are in hand. Two loading paths skipped that check — the per-yard
loadBooking and the workspace confirmScheduleLoading — and both now require
every export booking to be received with a GRN first, however it arrived
(first-mile or the customer's own truck) and whatever it is allocated to.
The rule lives in one shared guard (assertExportReceivedWithGrn) so the two
paths cannot drift.

Export self-haul without a first-mile leg already worked and is unchanged:
assertSelfHaulPaid allows a customer truck when there is no EDR mile leg and
the booking is paid, and addTruck applies the same one-40ft-or-two-20ft rule
to containers and the tonnage drawdown to bulk, exactly as import does.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 08:01:32 +00:00
Nathnael
af171974f8 Merge branch 'dev' into freight/feat/fixes-v1 2026-07-21 07:36:09 +00:00
Nathnael
fd5aedcec7 feat(companies): per-document change requests and resubmission review queue
Two review-workflow gaps for freight customer onboarding:

Request for change per document. Backoffice can now flag a single uploaded
document (company document, profile licence, or POA delegation letter) with a
note the customer sees, instead of rejecting the whole role over it. Adds
review_status/review_note/reviewed_by/reviewed_at to freight.files (migration
AddFileReviewStatus, partial index for the gate), a POST
documents/:fileId/request-change endpoint, the backoffice action + modal, and a
portal banner/badge so the customer knows what to re-upload. Re-uploading clears
the flag. Approving a role is blocked while any of its documents has an open
correction; the gate check and the status write share a pessimistic write lock
on the company row (as does the change-request write) so a correction can never
slip in between the check and the profile going Active.

Resubmission is visible to reviewers. When a customer resubmits a rejected role
or amends a change request, backoffice staff are notified (allBackoffice inbox
item, deep-linked to the customer) and the resubmission surfaces in a new
"Pending changes" list view + KPI, since such companies are status = active and
never matched the pending-approval filter.
2026-07-21 07:34:40 +00:00
Nathnael
1cfc0f0fa8 fix(onboarding): stop duplicate company-document upload on finalize
The documents step of CompanyProfileForm uploads company documents via
onUploadDocuments() and then triggers submit synchronously in the same
nextStep() call. The setDocumentFiles({}) that clears the staged files has
not re-rendered by the time finishMutation's closure runs, so reading
documentFiles there re-sent the exact same files and created a duplicate
row per document.

Drop the company-document upload from finishMutation — the documents step
already persisted them. Licenses stay, since they have no auto-upload path.
2026-07-21 07:34:20 +00:00
Hagernesh
36f0045b5d auto generate grn on import arrival unloading 2026-07-21 07:25:45 +00:00
marshal
db466a6b27 Merge pull request #861 from Tria-plc/freight_feature/usermanagement
Update IntercityCapacity to allow null values and handle formatting i…
2026-07-21 09:50:49 +03:00
Marshal
1647681840 Update IntercityCapacity to allow null values and handle formatting in CapacityBadges 2026-07-21 06:46:25 +00:00
Stephanos A
7f65bf1409 Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-21 00:50:57 +03:00
Stephanos A
bcce93b156 Show discrepancy 2026-07-21 00:50:43 +03:00
Roba Boru
119f841aba Merge branch 'alpha' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-21 00:24:52 +03:00
Roba Boru
be933c2c0d Revert departure and arrival datetime of stops 2026-07-21 00:24:32 +03:00
Stephanos A
24872df0ba Payment discrepancy paid amount update 2026-07-20 23:20:26 +03:00
Stephanos A
ec35b7d65e Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-20 23:09:49 +03:00
Stephanos A
2deb5a4a8e Payment discrepancy fixes 2026-07-20 23:09:06 +03:00
Roba Boru
5adb145aca Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-20 23:08:59 +03:00
Roba Boru
2f52471fad Merge branch 'alpha' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-20 23:08:47 +03:00
Roba Boru
296e3af7dd Fix package price 2026-07-20 23:08:32 +03:00
Stephanos A.
9b66e2e539 Merge pull request #854 from Tria-plc/alpha
Alpha
2026-07-20 22:52:59 +03:00
Stephanos A
226f839ad0 Hide previous payment discrepancy link 2026-07-20 22:52:17 +03:00
Stephanos A
eabc15eebf Payment discrepancy report updates 2026-07-20 22:48:50 +03:00
marshal
370aa09c65 Merge pull request #853 from Tria-plc/freight_feature/usermanagement
changes
2026-07-20 22:44:22 +03:00
marshalyordanos
15705d6b26 changes 2026-07-20 22:43:22 +03:00
marshal
92375caa59 Merge pull request #852 from Tria-plc/freight_feature/usermanagement
Fix CSS formatting for bookings table class to ensure proper styling …
2026-07-20 22:35:50 +03:00
marshalyordanos
8e74604a07 Fix CSS formatting for bookings table class to ensure proper styling and layout. 2026-07-20 22:35:01 +03:00
Stephanos A.
6543ba5266 Merge pull request #851 from Tria-plc/alpha
Payment discrepancy report updates
2026-07-20 22:16:46 +03:00
Stephanos A
19fe977f40 Payment discrepancy report updates 2026-07-20 22:15:32 +03:00
marshal
d3324bc580 Merge pull request #850 from Tria-plc/freight_feature/usermanagement
Enhance BookingRequestsPage layout and styling
2026-07-20 22:11:14 +03:00
marshalyordanos
8aaccf3f36 Enhance BookingRequestsPage layout and styling 2026-07-20 22:10:48 +03:00
marshal
73f067aeed Merge pull request #849 from Tria-plc/freight_feature/usermanagement
Add container and contract information cards to booking detail views
2026-07-20 21:55:57 +03:00
marshalyordanos
43df24142c Add container and contract information cards to booking detail views
- Integrated CompanyInfoCard, ContainersCard, and ContractInfoCard into ChangesRequestedView, DraftBookingView, and ReadonlyBookingView components.
- Updated utils to handle new booking detail types and improve container summary calculations.
- Enhanced ShipmentDetailsCard and ScheduleCard to utilize updated booking detail structure and display relevant information more effectively.
2026-07-20 21:55:17 +03:00
Stephanos A.
8206f2485c Merge pull request #848 from Tria-plc/alpha
Payment discrepancy report updates
2026-07-20 21:52:22 +03:00
Stephanos A
99eb35ff75 Payment discrepancy report updates 2026-07-20 21:50:34 +03:00
marshal
0a73b8edb5 Merge pull request #847 from Tria-plc/freight_feature/usermanagement
chnages
2026-07-20 20:52:57 +03:00
Roba Boru
49d62e3b96 Fix actual price minor 2026-07-20 17:03:31 +03:00
Marshal
26f73cbe5f chnages 2026-07-20 13:55:26 +00:00
Roba Boru
c71f4df6a1 Fix payment discrepancy column 2026-07-20 16:55:09 +03:00
Roba Boru
be7d6b2092 Fix paid minor calculation 2026-07-20 16:44:25 +03:00
Roba Boru
8054cefd45 Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-20 16:10:47 +03:00
Roba Boru
ef2fb2e05c Expand to show multiple passengers in payment discrepancy 2026-07-20 16:10:28 +03:00
Hagernesh
7b777792e3 feat(warehouse): expand an inventory row to see which containers ride which truck
The inventory table has one row per inventory item, so on a self-haul booking
with several trucks there was no way to tell which container sat on which
truck without opening a document. The plate column now lists every plate, but
not the mapping.

Each row with a customer truck gets a chevron that opens a per-truck
breakdown: plate, driver, type, the containers it carries, and whether it has
arrived. Bulk trucks show "Bulk" — they haul loose tonnage, not containers.

The breakdown fetches only when opened, so a table nobody expands costs no
extra requests, and it reuses the existing per-booking trucks endpoint rather
than widening the inventory query.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 12:54:10 +00:00
Hagernesh
0c0de284b0 feat(warehouse): show the trucks in the yard, not just a count of them
Multi-truck self-haul had no list anywhere on the warehouse side. The ops
dashboard counted trucks on site and offered no way to open the list, and
the inventory table showed a blank plate on exactly the bookings that have
several trucks: it read booking.customer_truck_plate_number, which
multi-truck self-haul leaves null because plates live in
customer_truck_assignments. Booking BK-2026-000033 has a truck and a driver
on file and displayed neither.

Adds a Trucks on Site page listing every truck that has arrived and not yet
departed, across bookings, with plate, driver, booking, customer, containers
and dwell time. It covers both haulage paths because the gate does — a
customer's own truck and an EDR last-mile truck reach the same barrier — and
flags anything sitting over four hours. It lives under Warehouse Management
rather than Imports or Exports, since the yard is not per-direction.

The inventory queries now read plates and drivers from the assignments and
keep the booking columns as the fallback for single-truck bookings written
before that table existed.

Both new statements were EXPLAIN-validated against the live schema; the
plate fix returns the data that was previously null.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 12:54:10 +00:00
Roba Boru
6ea2216aeb Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-20 15:50:42 +03:00
Roba Boru
bc4c085d95 Merge branch 'alpha' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-20 15:50:29 +03:00
Roba Boru
1e7324d276 Added payment discrepancy report 2026-07-20 15:50:03 +03:00
Abubeker Yasin
fd55b5c253 Merge pull request #838 from Tria-plc/alpha
fix: (payment ) store fractional payment intent amounts
2026-07-20 15:49:22 +03:00
Abubeker Yasin
800e1e21ed fix: (payment ) store fractional payment intent amounts 2026-07-20 15:47:37 +03:00
marshal
b9b2075207 Merge pull request #837 from Tria-plc/freight_feature/usermanagement
contrat nad booking modification
2026-07-20 15:25:51 +03:00
Marshal
b90afadfba contrat nad booking modification 2026-07-20 12:24:58 +00:00
Nathnael
804c72f14a Merge branch 'dev' into freight/feat/fixes-v1 2026-07-20 12:12:30 +00:00