Commit Graph

185 Commits

Author SHA1 Message Date
Hagernesh
a6749df65f implemented import truck page 2026-07-29 14:46:41 +00:00
Marshal
2429f6b629 implement contract cancellation feature and update contract statuses
- Added functionality to cancel contracts, allowing users to provide a reason for cancellation.
- Updated contract statuses to include SUSPENDED and changed CLOSED to COMPLETED.
- Enhanced the UI to reflect the new cancellation option and updated messaging for contract statuses.
- Refactored contract booking actions to accommodate changes in booking logic for ONE_TIME and GENERAL contracts.
- Removed clearance document management from the contract detail page, as it is now handled per booking.
- Introduced a SQL script to reset bookings and train schedules for development purposes.
2026-07-28 05:02:58 +00:00
Marshal
9b13fa2ac6 feat: implement wagon transfer management modals and page
- Add TransferFulfillModal for fulfilling wagon transfer requests.
- Create TransferRequestFormModal for filing new wagon transfer requests.
- Introduce TransferCloseShortModal for closing requests that cannot be fully fulfilled.
- Develop WagonTransfersPage to manage and display wagon transfer requests.
- Implement utility functions for handling wagon transfer request data and UI components.
- Enhance UI with Mantine components for better user experience.
2026-07-26 15:11:50 +00:00
Nathnael
dcc94643d0 feat(companies): enforce customers:* permissions on customer endpoints
The customers:* keys were seeded and present in the backoffice constants but
enforced nowhere except reset-password. Customer CRUD sat behind the coarse
edr_freight_app:admin umbrella, and every company read endpoint was unguarded.

Two routes could not be gated on the route alone, because the authority they
need depends on the request BODY, not the path:

  - PATCH /companies/:id carries `status` (UpdateCompanyDto extends
    PartialType(CreateCompanyDto)), so it both edits fields and blacklists.
  - PATCH /company-profiles/:profileId/status is approve, reject, suspend and
    blacklist on one route.

Both now take a one-of route guard and assert per-status against a shared
STATUS_PERM map: approving/reactivating needs customers:verify, suspending or
blacklisting needs customers:deactivate. PATCH /companies/:id additionally
requires customers:update when any non-status field is present, so a caller
holding only deactivate cannot rename a company. The backoffice mirrors the
same map so no button is offered that the server would reject.

GET /companies/:companyId/documents is left authenticated-only with the split
in the handler: it is dual-audience. The portal reads its own documents during
onboarding, and the contract-request detail page (gated on contracts:view)
reads the applicant's. Gating it on customers:view alone would have 403'd
customers on their own documents and blanked the contract reviewer's panel.

The two by-company customer-view reads take a one-of guard for the same reason
— otherwise a staffer granted only customers:view gets a detail page whose tabs
403 individually.

Frontend: the customers routes were sidebar-filtered but not wrapped in
RequirePermission, so direct URL navigation rendered them for anyone.

Verified: freight-api type-check clean; backoffice type-check unchanged from
HEAD (pre-existing errors only); 25 tests pass across the companies and
freight-permission suites. Not exercised against a running API.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 13:48:42 +00:00
marshal
f5f41e0a5a Merge pull request #926 from Tria-plc/freight_feature/usermanagement
implement freight permissions for trains, wagons, and routes
2026-07-23 08:57:59 +03:00
Marshal
129a4d1d0a implement freight permissions for trains, wagons, and routes 2026-07-23 05:57:14 +00:00
marshal
edfd0a859d Merge pull request #925 from Tria-plc/freight_feature/usermanagement
add e2e test
2026-07-23 08:27:29 +03:00
Marshal
2481f43f1f add e2e test 2026-07-22 23:44:32 +00:00
marshal
091dd0bfa3 Merge pull request #923 from Tria-plc/freight_feature/usermanagement
Freight feature/usermanagement
2026-07-23 00:02:55 +03:00
Marshal
b0f561a935 Add end-to-end tests for import corridor flows
- Implement full train import journey with six container bookings filling a 54-wagon train.
- Create tests for split offer and rebooking scenarios, handling payment expiry and waiting list promotions.
- Add tests for handling waiting bookings expiration when the train is full.
- Implement tests for reopening booking windows after expired reservations.
- Seed database with necessary corridor data for import flows, including yards, container types, locomotives, and rates.
2026-07-22 21:02:17 +00:00
Nathnael
919c3a84ff Merge branch 'dev' into freight/feat/fixes-v1 2026-07-22 13:05:19 +00:00
Nathnael
8389b2735d fix: sidebar in user management 2026-07-22 11:54:54 +00:00
Marshal
2aa405d8e4 chnages 2026-07-22 11:04:17 +00:00
Marshal
996df4a7f8 chnages 2026-07-22 10:52:27 +00:00
Marshal
b5546b9d6f feat(freight-me): add position type lookup and enrich user profile with position type 2026-07-22 08:57:47 +00:00
Hagernesh
19906b273e fix(operations): prefill booking context on single assign; enforce per-truck container loads
- single-row Assign vehicle uses the full single-record flow (details + containers)
- release() rejects exit containers not assigned to the departing truck
- weighing modal offers only the selected truck's assigned containers
2026-07-22 07:24:14 +00:00
Marshal
d25612c2f0 feat(user-management): implement staff reference permissions for various controllers and update sidebar permissions 2026-07-21 23:25:43 +00:00
Marshal
07c390a3b2 changes 2026-07-21 12:14:47 +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
Nathnael
2c7a4b7112 Merge branch 'dev' into freight/feat/fixes-v1 2026-07-20 08:20:34 +00:00
Nathnael
3d4996e4df feat: setup forget password to the backoffice 2026-07-20 06:19:12 +00:00
marshal
969caf90a1 Merge pull request #806 from Tria-plc/freight_feature/usermanagement
add contract clearance detail page and enhance contract requests fil…
2026-07-19 11:41:45 +03:00
Marshal
8816d50276 add contract clearance detail page and enhance contract requests filtering and ui fix 2026-07-19 08:41:03 +00:00
Hagernesh
30f48ea37f feat(intercity): show intercity cargo across every train
Intercity bookings never get their own train — they ride whichever import/export
train passes through their corridor — so the work is scattered across other
people's schedules and there was nowhere to see it as a whole. The per-schedule
ride-along panel answers "what can THIS train carry"; this answers "what is
happening to intercity cargo".

Purely additive: the existing ride-along panel and the schedule detail page are
untouched, and loading/unloading still happens there, where the train's position
is confirmed. This is a read-only view that points back to it.

Each row carries both ends' facility status, because a booking whose origin or
destination has no equipment can never be worked there — the operator should see
that while the train is still coming, not when the load is refused. Those
bookings are counted and called out.

New GET /train-scheduling/intercity/bookings; the type is IntercityRideAlongRow,
not IntercityBookingRow, which already means the per-schedule candidate row.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 11:27:40 +00:00
Nathnael
d0411f9da2 feat: add support page to the admin routes 2026-07-17 11:06:44 +00:00
Marshal
308df1c61c fix schule issue and contianer type issue 2026-07-17 09:18:26 +00:00
Marshal
7b7e7c3f62 fix schule issue and contianer type issue 2026-07-17 09:16:35 +00:00
ghost2023
bd81bbfc2c style: sidebar improvmetn 2026-07-17 11:15:58 +03:00
marshal
f7f311660b Merge pull request #672 from Tria-plc/freight_feature/usermanagement
train
2026-07-14 14:09:18 +03:00
Marshal
6d0cf50b4d train 2026-07-14 11:06:49 +00:00
marshal
3c3a7595a2 Merge pull request #640 from Tria-plc/freight_feature/usermanagement
Freight feature/usermanagement
2026-07-13 08:13:01 +03:00
Marshal
e7e5b93ffc add customs clearing filter and enhance clearance documents page for non-customs contracts 2026-07-12 14:14:21 +00:00
yaschalew
3159722ad3 reset url fix 2026-07-12 14:59:48 +03:00
Hagernesh
eec3d1863a Cleaned warehouse related UI and made all 15 pages consisitent 2026-07-11 08:30:39 +00:00
yaschalew
917c5604eb fix ui 2026-07-11 11:10:51 +03:00
marshal
d70e67ae4f Merge pull request #616 from Tria-plc/freight_feature/usermanagement
Freight feature/usermanagement
2026-07-11 09:42:56 +03:00
Marshal
9ed473c309 Implement clearance-first booking flow and completion process for customs contracts 2026-07-10 18:56:39 +00:00
marshal
415e3ea2ef Merge pull request #608 from Tria-plc/freight_feature/usermanagement
general contrat
2026-07-10 21:00:01 +03:00
Marshal
b50075dc83 general contrat 2026-07-10 17:57:27 +00:00
yaschalew10
42f8fc5517 Merge pull request #602 from Tria-plc/freight/feature/user_management_UI
Freight/feature/user management UI
2026-07-10 16:24:37 +03:00
yaschalew
a35e48795b fix ui 2026-07-10 16:20:31 +03:00
natib21
e6e44e773b fix ui 2026-07-10 11:25:59 +00:00
Marshal
1abef3ce34 enhance shipment requests page with filtering and sorting options
- Added status and cargo filters to the ShipmentRequestsPage.
- Implemented date range filtering for preferred dates.
- Introduced sorting options for shipment requests based on submission date and reference.
- Enhanced the display of shipment request details, including status badges and customer information.
- Updated the UI to include a search input with clear functionality and improved layout for filters.

feat: add equipment return option in new shipment form

- Introduced a toggle for equipment return in the NewShipmentPage.
- Updated form schema to include  field for container contracts.
- Enhanced user experience with visual feedback on the equipment return selection.

fix: update booking DTO to include equipment return option

- Added  field to CreateBookingUnderContractDto for per-shipment override.
- Updated related types and schemas to accommodate the new field for better contract handling.
2026-07-10 10:32:41 +00:00
Marshal
3443b79644 make a contrat template 2026-07-09 21:13:07 +00:00
Marshal
cd8fb2b321 enhance gate pass and freight payment handling in train scheduling
- Updated the logic in  to ensure that a booking only earns its gate pass once the freight charges are settled.
- Added logging for bookings that have not settled freight payment when securing gate passes.
- Modified seeders to ensure that bookings have associated company profiles to prevent data inconsistencies.
- Updated freight permissions to include new clearance actions for bookings.
- Enhanced the UI to reflect changes in the clearance process, including new shipment request pages and improved status handling in the clearance action panel.
- Adjusted the contract clearance list to accommodate both customs contracts and shipment bookings.
- Improved the handling of GENERAL contracts in various components to ensure proper booking flow and visibility.
2026-07-09 07:19:36 +00:00
natib21
b300fd1de5 user permition 2026-07-07 10:00:48 +00:00
natib21
fdd7b1711e Merge branch 'dev' of github.com:Tria-plc/edr-platform into freight/feature/first_mile_invoice 2026-07-07 08:33:25 +00:00
Marshal
8bd00ea78a enhance user management and booking features with permissions and real-time updates 2026-07-06 17:15:22 +00:00
natib21
6b0db45be2 Merge branch 'dev' of github.com:Tria-plc/edr-platform into freight/feature/first_mile_invoice 2026-07-06 12:06:22 +00:00
natib21
998a6801ab fleet 2026-07-06 12:05:52 +00:00