Commit Graph

1089 Commits

Author SHA1 Message Date
Nathnael
3952e8bbdf feat(freight): add download for the TIN business registration record
Ticket #181 — eTrade auto-fetch already existed; adds a client-side
download of the fetched record (eTrade returns data, not a document)
on the portal onboarding step and the backoffice customer detail page.
2026-07-31 11:45:24 +00:00
Nathnael
7c5d96795c feat(freight): track onboarding-phase edit history for companies
Ticket #238 — pre-approval edits and document uploads write straight
to the live company row with no approval gate and, until now, no
trace. Adds an append-only company_revisions log (diffed field
changes, document uploads) recorded from updateProfile and
uploadCompanyDocuments, exposed via GET /companies/:id/revisions and
shown as "Version history" on the backoffice customer detail page.
2026-07-31 11:45:09 +00:00
Nathnael
d67297a601 feat(freight): record when a company is approved
Ticket #420 — add approved_at to companies (migration), stamped at
both promotion sites (first-profile auto-approve and manual staff
status change). Surfaced as Submitted on/Approved on in the backoffice
customer list and detail views.
2026-07-31 11:43:36 +00:00
marshal
7f87e2d8ca Merge pull request #1040 from Tria-plc/freight_feature/usermanagement
intercity fix
2026-07-31 13:50:50 +03:00
Marshal
a64af98205 intercity fix 2026-07-31 10:50:16 +00:00
marshal
b65a1d8146 Merge pull request #1039 from Tria-plc/freight_feature/usermanagement
intercity fix
2026-07-31 13:27:25 +03:00
Marshal
74b7ee81fc intercity fix 2026-07-31 10:26:17 +00:00
Hagernesh
9afc3d4059 Empty container enhancement 2026-07-31 07:34:02 +00:00
Hagernesh
08e0fe2db2 feat: auto-populate yard and zone from selected warehouse
When warehouse is selected in standalone return modal, yard and zone
fields are automatically populated from warehouse data (yard from
warehouse.yard or warehouse.code, zone from warehouse.zone). Fields are
read-only/disabled to prevent manual editing.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-31 06:57:15 +00:00
Hagernesh
1bae13aec4 feat: add yard/zone fields and returned containers table 2026-07-31 06:46:03 +00:00
Hagernesh
74cf80106e feat: add yard/zone fields and returned containers table
Add Yard and Zone input fields to standalone return modal. Add table
showing all returned containers with: container number, booking ref,
returned date, facility, yard, condition, status. Table appears at top
of Container Returns page when returns exist.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-31 06:45:03 +00:00
marshal
378b9b6b21 Merge pull request #1035 from Tria-plc/freight_feature/usermanagement
add goverment booking
2026-07-31 04:26:31 +03:00
Marshal
d07a2e239e add goverment booking 2026-07-31 01:25:47 +00:00
marshal
a7f44c1d16 Merge pull request #1034 from Tria-plc/freight_feature/usermanagement
add goverment booking
2026-07-31 04:08:39 +03:00
Marshal
7a72245229 add goverment booking 2026-07-31 01:07:48 +00:00
marshal
5564819b28 Merge pull request #1033 from Tria-plc/freight_feature/usermanagement
add goverment booking
2026-07-31 03:43:36 +03:00
Marshal
65f18b4796 add goverment booking 2026-07-31 00:41:51 +00:00
marshal
e6b16feb25 Merge pull request #1032 from Tria-plc/freight_feature/usermanagement
leg-aware capacity and wagon sharing
2026-07-31 01:07:55 +03:00
Marshal
34e4a7d13f leg-aware capacity and wagon sharing 2026-07-30 22:07:23 +00:00
marshal
143cbebb18 Merge pull request #1031 from Tria-plc/freight_feature/usermanagement
leg-aware capacity and wagon sharing
2026-07-30 22:08:50 +03:00
Marshal
f891f6abe2 leg-aware capacity and wagon sharing 2026-07-30 19:08:06 +00:00
marshal
52eda90642 Merge pull request #1030 from Tria-plc/freight_feature/usermanagement
leg-aware capacity and wagon sharing
2026-07-30 20:22:44 +03:00
Marshal
acef6870e9 leg-aware capacity and wagon sharing 2026-07-30 17:21:44 +00:00
Hagernesh
c74b9320a2 feat: add standalone container return modal
Add "Record Return" button at top of Container Returns page for
standalone/unboooked returns. Modal accepts container number, return
date, warehouse, condition, handover notes. No booking association
required — supports returns that arrive without clear booking context.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-30 14:35:59 +00:00
Hagernesh
63aa2c7920 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>
2026-07-30 14:35:59 +00:00
Hagernesh
c0d6b1a1c5 feat: add Container Returns page with EDR/Customer filter
Separate page for tracking empty container returns by type: EDR returns
(empty containers from EDR first-mile) or Customer returns (customer
self-haul). Segmented control filter, expandable booking rows showing
containers, modal to record return with warehouse selection. Accessible
via sidebar menu under Import Operations.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-30 14:07:09 +00:00
Hagernesh
154b7d11d5 feat: add warehouse selection to empty container returns form
Replace manual facility/yard input with warehouse dropdown. Form fetches
available warehouses and auto-populates facility (warehouse name) and yard
(warehouse code) from selection, eliminating manual entry.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-30 14:07:09 +00:00
Hagernesh
c9300ab4cd feat: add EDR Last Mile Returns page with bulk/single form
New page for empty container returns: tables show EDR trucks with company
names and return containers. Modal form for processing single or bulk
returns, with fields for facility, yard, condition, return date, and
handover notes. Accessible via sidebar menu under Import Operations.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-30 14:07:09 +00:00
marshal
ceaf0ba7eb Merge pull request #1025 from Tria-plc/freight_feature/usermanagement
Freight feature/usermanagement
2026-07-30 16:16:52 +03:00
Marshal
e80aac877f export flow and fix intercity issue 2026-07-30 13:11:35 +00:00
Hagernesh
fd1646e4d5 feat: repeat truck column labels inside each expanded booking
Extract the truck column list to TRUCK_COLUMNS and drive both the table
head and a per-booking label row from it, so an expanded booking's rows
are labelled without scrolling back to the head.
2026-07-30 12:15:56 +00:00
Marshal
22de05fe8e Merge branch 'dev' of github.com:Tria-plc/edr-platform into freight_feature/usermanagement 2026-07-30 11:31:02 +00:00
Marshal
2ca04b8f98 changes export flow 2026-07-30 11:30:34 +00:00
Hagernesh
fe04d2edd6 feat: add warehouse gate times editor modal for import trucks
Enable per-truck editing of warehouse gate arrival/departure times
(arrivedAt/departedAt) via modal on Import Trucks page. Accessible via
row action menu for EDR-haulage trucks. Includes backend endpoint
POST /last-mile/:id/warehouse-gate-times and frontend modal with
DateTimePicker inputs.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-30 10:04:32 +00:00
Hagernesh
4cb4d177d9 feat: add truck arrival/departure times to import trucks page
Show per-truck warehouse gate arrival (arrivedAt) and departure
(departedAt) timestamps on the Import Trucks page, enabling staff to see
when each truck entered and exited the warehouse. Times displayed in local
format; EDR and customer trucks both supported.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-30 07:26:58 +00:00
Hagernesh
a6749df65f implemented import truck page 2026-07-29 14:46:41 +00:00
Nathnael Wondisha
b140a720db Merge pull request #1013 from Tria-plc/freight/fix/auth-separation
Freight/fix/auth separation
2026-07-29 17:37:41 +03:00
Nathnael
848c0d7768 fix: customer settings fix 2026-07-29 14:30:35 +00:00
Nathnael
aba39b0ec3 Merge branch 'dev' into freight/nati-1 2026-07-29 13:39:20 +00:00
Nathnael
16ef64fae2 feat: expose eTrade registration and fayda birthdate/gender in company profile 2026-07-29 13:38:39 +00:00
marshal
60f391f246 Merge pull request #1006 from Tria-plc/freight_feature/usermanagement
Add ContractCourtBadge component and integrate into contract pages
2026-07-29 16:37:51 +03:00
Marshal
47c25d3f3a Add ContractCourtBadge component and integrate into contract pages
- Introduced ContractCourtBadge to display the responsible party for contract actions.
- Updated ContractStatusBadge to include new court badge.
- Enhanced ClearanceDocumentsPage with additional filters for trade direction, freight type, and ownership.
- Modified ContractRequestDetailPage and ContractRequestsPage to utilize ContractCourtBadge.
2026-07-29 13:37:17 +00:00
Hagernesh
1b1b0e7ade feat(booking-trucks-tab): show truck-level detention, gate times, inspection status, and cargo costs
Booking detail now has a Trucks tab displaying every EDR or customer truck
assigned to a booking's last mile. Each row shows warehouse-gate times
(arrival/departure) and destination-detention times (arrival/return), with
detention costs and inspection status. Detention rows only for EDR trucks;
customer self-haul shows —. Reuses existing TruckDetentionModal and
FeePreviewModal for edit/view actions.

Backend: arrivalTrucksForBooking() adds lastMileId per truck (direct chain to
detention preview), containerItems() adds inspection_status column to responses.
No new SQL, no migrations, no new endpoints.

Frontend: BookingTrucksPanel.tsx self-fetches all data via existing warehouse +
last-mile services, renders adaptive table with cargo-cost strip above.
Wired into BookingRequestDetailPage.tsx tab bar.
2026-07-29 11:13:20 +00:00
marshal
fe79c2442c Merge pull request #1003 from Tria-plc/freight_feature/usermanagement
fix gl steps
2026-07-29 10:33:03 +03:00
Marshal
f6e363cd6f fix gl steps 2026-07-29 07:32:26 +00:00
Nathnael
1081b813bb feat(freight-backoffice): show fayda and dars status on customer detail
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-29 06:57:27 +00:00
marshal
69f4616480 Merge pull request #1000 from Tria-plc/freight_feature/usermanagement
New Transit Agents admin table (name, valid-from/to, active/suspended…
2026-07-29 08:46:14 +03:00
Marshal
b17a72c280 New Transit Agents admin table (name, valid-from/to, active/suspended, validity badge) — DJ assign step now picks from it, active+valid only. 2026-07-29 05:38:35 +00:00
Nathnael
9c16579f54 fix(backoffice): scope unit-admin role matching to the selected org (EDRFREIGHT-223)
getAdminRoleInfo picked a user's unit_admin role by role key alone —
a unit-admin grant carries only a unitId, no organizationId, so a user
who is unit-admin in one org and (say) org-admin in another had the
wrong unit attached to their row wherever both orgs share the viewer's
admin list. That wrong unitId then flowed into the remove action,
which deletes by exact {userId, roleId, unitId} match — a legitimate
0-match, surfaced as "user_role_not_found", removal silently failing.

Fetches the selected org's unit ids (same pattern as the position-type
form's org→units scoping) and requires the unit-admin grant's unitId
to be one of them before treating it as this org's grant.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 12:36:01 +00:00
Nathnael
f39ae77401 fix(backoffice): map raw IAM error codes to friendly messages (EDRFREIGHT-223, EDRFREIGHT-225)
@tria-plc/iamapi-common throws BadRequestException with a raw,
untranslated code as the message (e.g. "user_role_not_found",
"unit_employee_limit_reached:5") — useErrorHandler's extractMessage
returned that string verbatim, so removing an org/unit admin whose
role row didn't match, or inviting past a unit's employee cap, toasted
the raw backend code instead of an explanation. Adds a small code→i18n
map checked before the raw-message fallback, shared by both the async
and sync error handlers so every caller (org-admin removal, employee
invites, etc.) picks it up for free.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 12:28:11 +00:00