Commit Graph

1167 Commits

Author SHA1 Message Date
yaschalew
eeb7ce8cae fix user module 2026-06-23 10:53:57 +03:00
yaschalew
78692c6b59 Merge branch 'freight/develop' of github.com:Tria-plc/edr-platform into freight/feature/vehicle_2 2026-06-22 14:23:59 +03:00
yaschalew
7f51f24a77 fix conflict 2026-06-22 14:23:43 +03:00
Nathnael Wondisha
ecb452d8df Merge pull request #235 from Tria-plc/freight/fix/tailwind
Fix the injections and migration
2026-06-22 14:21:35 +03:00
ghost2023
992ba8f55f fix: migration issue 2026-06-22 14:20:17 +03:00
ghost2023
b1318a6ef5 fix: pruge the js blob 2026-06-22 14:13:15 +03:00
yaschalew10
bc900ce6d4 Merge pull request #234 from Tria-plc/modify-submodule-user-management
Modify submodule user management
2026-06-22 12:42:37 +03:00
Dagimassefa
b3bfa899f5 update 2026-06-22 12:29:48 +03:00
Dagimassefa
911f486620 remove submodiule link 2026-06-22 12:04:07 +03:00
Nathnael Wondisha
56c6c8027a Merge pull request #233 from Tria-plc/freight/style/ui-sync
Dashboard ui clean up
2026-06-22 11:59:19 +03:00
Nathnael Wondisha
fff679369d Merge branch 'freight/develop' into freight/style/ui-sync 2026-06-22 11:58:18 +03:00
Muluhabt
41c51b7986 Adding local packages 2026-06-22 11:53:17 +03:00
Nathnael
8fb432e30f style: finalize the style of the dashboard 2026-06-22 08:52:45 +00:00
Nathnael
feddce8a0c style: use the proper primary color 2026-06-22 08:11:11 +00:00
Nathnael
ec708d85b3 style: update the overview style 2026-06-22 08:05:04 +00:00
natib21
6b1bbd8e59 last mile 2026-06-22 07:58:56 +00:00
natib21
bee47b231a add column 2026-06-22 07:54:07 +00:00
natib21
00d722fa4f last mile 2026-06-22 07:49:47 +00:00
Nathnael
9a224e9baf style: WIP ui updates 2026-06-22 07:44:03 +00:00
natib21
f2d0a90065 :Merge branch 'freight/feature/vehicle' of github.com:Tria-plc/edr-platform into freight/feature/vehicle 2026-06-22 06:55:03 +00:00
Nathnael
e6101c5514 style: WIP BatchBoard and train schedule 2026-06-22 06:38:05 +00:00
Hagernesh Tadesse
03405da96d Merge pull request #231 from Tria-plc/Warehouse_updates
Warehouse updates

Warehouse_updates includes the warehouse operations improvements for import and export workflows.

Main updates:
- Added Import and Export separation for warehouse receive operations.
- Added Export Receive Queue based on paid booking references.
- Added multi-select support for export paid bookings/items.
- Added Select All and Unselect All behavior for warehouse operation tables.
- Added bulk receive flow for selected export bookings/items.
- Preserved existing warehouse actions after receiving, including View, Movement, Inspect, Store, Reserve, and Dispatch.
- Added Export Ready To Load flow after inspection is passed.
- Added Auto Load button for export items that are already READY_FOR_LOADING.
- Ensured Auto Load only processes eligible export items and does not change train schedule logic.
- Added Import Arrive Queue for arrived import trains.
- Added Auto Unload flow for arrived import train bookings/items.
- Added Import Unloaded Queue with booking, customer, arrival, container, and cargo details.
- Added bulk Mark Selected as Inspected flow while keeping individual Inspect / Report action.
- Added Last Mile action visibility for import bookings/items that requested last-mile service.
- Kept import storage as a manual action only when customer pickup or last-mile does not happen.
- Preserved existing warehouse APIs and reused existing configuration where possible.

Workflow covered:

EXPORT:
Paid booking reference
→ Receive Selected
→ Manual/Bulk Inspection
→ Ready To Load
→ Auto Load
→ Loaded
→ Dispatch Queue

IMPORT:
Arrived train
→ Auto Unload Arrived Bookings
→ Unloaded Queue
→ Manual/Bulk Inspection
→ Pickup Ready
→ Customer Pickup / Last Mile / Store if needed

Important:
- Train schedule logic was not changed.
- Rescheduling logic was not changed.
- Wagon assignment logic was not changed.
- Existing warehouse row actions were preserved.
2026-06-21 18:59:01 +03:00
Hagernesh
0939202c8f Merge freight/develop into Warehouse_updates 2026-06-21 15:41:32 +00:00
Hagernesh
14b6219c9d chore(warehouse): comprehensive demo seeder — populate every queue coherently
WarehouseDemoSeeder creates one coherent WH-DEMO-* dataset so every tab shows data:
- Export Receive (3 PAID export bookings, no inventory)
- Export Ready To Load (3 READY_FOR_LOADING + PASSED)
- Export Loaded/Dispatch (2 LOADED)
- Import Arrive (1 ARRIVED Djibouti→Ethiopia train, 3 IN_TRANSIT bookings)
- Import Unloaded (3 UNLOADED)
- Import Dispatch (3 READY_FOR_PICKUP + PASSED)

Idempotent (sentinel WH-DEMO-RCV-1); dedicated refs so it never collides with SEED-* data.
Verified: all queues populated, dashboard shows 19 items across all 7 statuses.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 15:06:50 +00:00
Hagernesh
41d21edae5 feat(warehouse): Batch 10 — import post-inspection actions (pickup / last-mile / store / dispatch)
- READY_FOR_PICKUP transitions now → DELIVERED (customer pickup) OR DISPATCHED (dispatch out) OR
  STORED (operator-chosen storage) — pickup and dispatch kept separate. No auto-storage.
- GET /warehouse-inventory/import/pickup-ready-queue: READY_FOR_PICKUP import items (shared query
  with the unloaded queue, route-derived import filter)
- WarehouseInventoryTable: PICKUP_READY rows now show explicit Store + Dispatch buttons alongside
  the customer-pickup (release/deliver) next action; reuses the existing advance() dispatcher
- Import → Dispatch Queue tab renders pickup-ready items via InventoryWorkbench (all existing
  actions + modals intact) with Last Mile shown only when door delivery was requested
- Verified: pickup-ready item → Store → STORED; → Dispatch → DISPATCHED

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 14:38:23 +00:00
Hagernesh
040ba6d495 feat(warehouse): Batch 9 — Import Unloaded Queue + bulk destination inspection
- bulkMarkInspected: UNLOADED added to eligible statuses; IMPORT passed items now advance to
  READY_FOR_PICKUP (pickup ready) instead of READY_FOR_LOADING (export unchanged)
- GET /warehouse-inventory/import/unloaded-queue: UNLOADED import items with the inspection-screen
  columns (booking, customer, arrival, container, cargo type, weight, train schedule, inspection
  status, pickup option, last-mile, current status); route-derived import filter
- Dedicated ImportUnloadedQueueTab replaces the Batch 8 workbench reuse: full spec columns,
  Select All / Unselect All / selected count / Mark Selected as Inspected, plus per-row
  Inspect / Report (InspectionReportModal) for damage / image / weight-loss detail
- Verified: import item UNLOADED → bulk inspect → READY_FOR_PICKUP (PASSED), drops out of queue

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 14:15:22 +00:00
Hagernesh
8b28a7c430 feat(warehouse): Batch 8 — Import Auto Unload Arrived Bookings (→ UNLOADED)
- New UNLOADED inventory status (train-arrival landing state) + transitions + unloaded_at column
  (idempotent migration 1791000000003) + INVENTORY_UNLOADED activity type
- POST /warehouse-inventory/import/auto-unload-arrived-bookings { scheduleId }: validates ARRIVED
  IMPORT train, unloads all eligible assigned bookings (IN_TRANSIT/ARRIVED_AT_*) into UNLOADED,
  records unloadedAt + activity. Does NOT store and does NOT inspect. Reuses allocation + inventory
  plumbing. Returns { unloadedCount, skippedCount, failedCount, results }.
- Arrive Queue "Auto Unload Arrived Bookings" button now calls the new endpoint (was per-booking loop)
- Import → Unloaded Queue tab: lists UNLOADED items via InventoryWorkbench (existing actions preserved:
  Inspect/Store/Move/History) + a Last Mile action shown ONLY when booking requested door delivery
- Batch8TestDataSeeder: sets seed import train bookings to IN_TRANSIT (unload-eligible)
- Verified: auto-unload → 1 UNLOADED (unloadedAt set, not stored, not inspected); ineligible skipped;
  idempotent re-run skips already-unloaded

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 12:57:29 +00:00
Eyob T.
f3088295c8 Merge pull request #230 from Tria-plc/user-management-v2
feat(backoffice): integrate IAM user management with host auth adapter and freight theming
2026-06-21 15:09:40 +03:00
Hagernesh
35c3341baf feat(warehouse): Batch 7 — Import Arrive Queue (arrived import trains, read-only)
- SchedulingReadFacade: importArriveQueue() + importTrainDetail() — read-only SELECTs only,
  direction derived from origin/destination station countries (route-based), so EXPORT/DOMESTIC
  trains are excluded. Per-train booking/container/cargo counts.
- GET /warehouse-inventory/import/arrive-queue + /import/trains/:scheduleId/items
- Import tab restructured into sub-tabs: Arrive Queue (implemented) / Unloaded Queue /
  Dispatch Queue (placeholders for next batch)
- ImportArriveQueueTab: train table (schedule id, train #, route, origin, destination, arrival,
  bookings/containers/cargoes, status) with Open (expandable assigned-items detail) + Auto Unload
  (reuses existing per-booking unload endpoint over the train's bookings)
- Batch7TestDataSeeder: 1 arrived IMPORT train (SEED-IMP-001) + 1 arrived EXPORT train
  (SEED-EXP-001, proves exclusion); idempotent
- Train schedule service logic untouched (facade is SELECT-only)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 11:15:31 +00:00
Dagimassefa
e6d3e2401b feat(backoffice): integrate IAM user management with host auth adapter and freight theming 2026-06-21 12:16:48 +03:00
Dagimassefa
8111606e89 switch user management to package implmentation 2026-06-21 12:11:35 +03:00
Hagernesh
a8bc5b19de feat(warehouse): fetch all PAID bookings in one call, classified IMPORT/EXPORT by route
- eligibleBookings(direction?) now returns all import+export bookings when direction omitted
  (DOMESTIC excluded); per-direction filter preserved for backward compatibility
- GET /warehouse-inventory/eligible-bookings (no query) returns the combined set
- Frontend: single shared useEligibleBookings() query; both Receive tabs filter client-side
  by route-derived direction, so only one HTTP request fires

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 20:15:26 +00:00
Hagernesh
0ab508e377 feat(warehouse): Batch 6 — Export Loaded queue + Dispatch Queue with bulk dispatch
- GET /warehouse-inventory/loaded-export: EXPORT+LOADED items (route-derived direction)
- POST /warehouse-inventory/bulk-dispatch-export: reuses existing dispatch() transition
  (LOADED → DISPATCHED, capacity freed, movement/activity logged); skips non-LOADED/non-EXPORT
- Extracted shared exportInventoryByStatus() helper (readyToLoadExport now delegates to it)
- Frontend LoadedExportTab serves both Loaded (read-only) and Dispatch Queue (dispatchable)
  sub-tabs with Dispatch / Dispatch Selected / Dispatch All + per-row Dispatch
- Replaces "Loaded" and "Dispatch Queue — coming in the next batch" placeholders
- Train/schedule flow (DISPATCHED → IN_TRANSIT) unchanged

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 20:04:18 +00:00
Hagernesh
43ba3c790b feat(warehouse): Batch 5 seed — 3 EXPORT READY_FOR_LOADING+PASSED inventory items
Creates SEED-B5-EXP-001/002/003 bookings (ADDIS_ABABA→DJIBOUTI, PAID, BULK)
with warehouse inventory at READY_FOR_LOADING + inspectionStatus PASSED so the
Ready To Load tab has visible rows. Idempotent on guard reference check.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 19:45:07 +00:00
Hagernesh
806fc4a8ca feat(warehouse): Batch 5 — Export Ready To Load queue + Auto Load Ready Items
- GET /warehouse-inventory/ready-to-load-export: EXPORT+PASSED+READY_FOR_LOADING items
  with booking details (customer, container, cargo type, route, inspection status)
- Direction filtering via deriveTradeDirection (route-based, not stored field)
- Frontend ReadyToLoadTab: full table (checkbox, booking ref/id, customer, container,
  cargo type, weight, route, inspection status, current status) with selection
- Auto Load Ready Items button reuses existing POST /load-passed-export endpoint
- Replaces "Ready To Load — coming in the next batch" placeholder in Export sub-tabs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 18:03:11 +00:00
Hagernesh
50c6381341 feat(warehouse): Batch 3+4 — export receive-selected label + bulk-mark-inspected workflow
- BulkReceiveModal: Receive Selected shows "received at facility" for EXPORT
- Export inspection: POST /warehouse-inventory/bulk-mark-inspected reuses WarehouseInspectionService.create
- EXPORT items advance to READY_FOR_LOADING after inspection PASSED
- InventoryWorkbench: selection state + "Mark Selected as Inspected" bulk button
- WarehouseInventoryTable: optional Checkbox column for bulk selection
- Route-based direction in eligibleBookings, bulkReceive, getBookingDirection
- New BulkInspectDto; service + controller wired

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 17:52:01 +00:00
natib21
a3f9eabfdd add checkbox 2026-06-20 14:25:31 +00:00
natib21
db5e1568df add checkbox 2026-06-20 14:19:02 +00:00
natib21
b28cf6ae91 fix slip 2026-06-20 14:00:34 +00:00
natib21
cb93576500 fix slip 2026-06-20 13:45:02 +00:00
natib21
2c13b3a60b fix slip 2026-06-20 13:40:58 +00:00
natib21
7f389a4f42 fix slip 2026-06-20 13:38:01 +00:00
natib21
3a86a63215 fix slip 2026-06-20 13:31:29 +00:00
natib21
35b057da1d fix 2026-06-20 13:25:32 +00:00
natib21
7dedd3ea6f last mile 2026-06-20 13:14:39 +00:00
natib21
6462ea8ad1 last mile 2026-06-20 13:08:35 +00:00
natib21
b3f3faad72 last mile 2026-06-20 13:05:00 +00:00
natib21
4e926c0d39 last mile 2026-06-20 12:46:02 +00:00
natib21
28dd7f9c72 last mile 2026-06-20 12:36:13 +00:00
yaschalew10
c25341fcaa Merge pull request #227 from Tria-plc/freight/feature/vehicle
Freight/feature/vehicle
2026-06-20 14:55:03 +03:00