marshal
fd4cc8f080
Merge branch 'freight/develop' of github.com:Tria-plc/edr-platform into freight_feature/profile
2026-06-24 10:58:57 +03:00
Marshal
9d81a2e1ee
integrate global logistics staff user into seeder
...
refactor pricing data seeder to fold surcharge types into rates
update route meta subtitle to remove surcharge types
enhance RuleEngineFormDialog to support conditional field visibility
remove surcharge types from URL constants and related services
add cargo leaf options query for bulk cargo type selection
update RuleEngineResourcePage to utilize cargo leaf options
modify resources configuration to remove surcharge types
implement migration to fold surcharge types into rates
create utility to derive legacy rate types from new rate structure
2026-06-23 23:15:32 +00:00
natib21
448b7fe969
fix last first mile
2026-06-23 15:18:32 +00:00
Nathnael Wondisha
56968e0709
Merge branch 'freight/develop' into freight/style/ui-sync
2026-06-23 09:51:24 +03:00
Nathnael
a6f3fd5643
feat: finish company profile in the backoffice
2026-06-23 06:45:29 +00:00
yaschalew
7f51f24a77
fix conflict
2026-06-22 14:23:43 +03:00
Hagernesh
0939202c8f
Merge freight/develop into Warehouse_updates
2026-06-21 15:41:32 +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
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
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
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
b47fb2c475
fix data table
2026-06-20 09:54:05 +00:00
Hagernesh
0005b2edb3
feat(warehouse): Receive Import/Export tabs with bulk receive + load-passed-export
...
- Backend: GET eligible-bookings?direction, POST receive-bulk, POST load-passed-export
(reuse autoUnload/autoLoad patterns; no train-schedule/wagon logic changed)
- Frontend: ReceiveInventoryModal split into Import/Export tabs with eligible PAID
bookings table, select-all/bulk receive, and Load Passed Export Items button
- Single-booking receive and all existing inventory row actions preserved
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 08:29:59 +00:00
natib21
8d69630f01
vehicle
2026-06-19 11:42:27 +00:00
Hagernesh
e40318c847
Dashboard enhancement
2026-06-19 11:29:05 +00:00
natib21
b4ed7d492d
fix vehicle
2026-06-19 06:56:07 +00:00
Marshal
be7c569363
feat(train-scheduling): add day-level booking pool and available days query
2026-06-18 19:48:42 +00:00
Hagernesh
be12a9d496
fee invoice frontend
2026-06-18 00:12:59 +00:00
Hagernesh
01aec12ee9
feat(warehouse): Batch 5 — config-driven allocation + storage/demurrage fee rules
...
- Allocation rules engine: cargo/container/trade criteria -> deterministic yard/warehouse/zone by code; wired into auto-unload (fallback to default)
- Storage/demurrage fee rules: configurable freeDays + ratePerDay; most-specific match; fee preview per inventory item
- Inventory demurrage timestamps: inspectionStartedAt, inspectionCompletedAt, readyForPickupAt, releaseDate, gateClearedAt
- Migration 1790000000000 (allocation_rules + fee_rules tables + inventory date columns)
- Frontend: Allocation & Fees config page, automatic Fee Preview modal, plumbing/hooks
- No invoice/payment (Batch 6)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 23:53:04 +00:00
Hagernesh
89d651693b
automation of loading and unloading
2026-06-17 22:33:06 +00:00
Hagernesh
5b8cb16c1a
automation
2026-06-17 22:00:53 +00:00
Hagernesh
f528b75737
Warehouse
2026-06-17 12:44:57 +00:00
Marshal
2de3f78fb0
Add payments management features including summary and listing, and integrate with the dashboard
2026-06-17 04:35:43 +00:00
Marshal
0778021d86
implement priority
2026-06-16 09:26:57 +00:00
marshal
87b0ce6339
Replace wagon/locomotive readiness with yard tracking, assign unassigned bookings from origin-yard fleet, standardize rates on USD with CBE ETB conversion, and update fleet/scheduling UI
2026-06-14 02:13:08 +03:00
Marshal
b73bf2154e
add detail batch and allocation monitoring page
2026-06-13 18:28:39 +00:00
Hagernesh
95c6a71438
feat(warehouse): batch 3 — loading, dispatch & train-departure visibility
...
- WarehouseLoading entity + Batch3 migration (wagon loading records)
- wagon-aware load() with validation; dispatch moved to PATCH
- read-only SchedulingReadFacade (schedule/wagon/departure) — never writes scheduling
- new endpoints: GET /warehouse-loadings, loadable-wagons, booking schedule
- Loading Queue / Loaded Inventory / Dispatch Queue pages + routes + sidebar
- FreightVisual illustrations (page heroes + empty states)
- booking detail: loaded/dispatched/wagon + read-only train schedule
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-12 12:44:40 +00:00
marshal
ef0abf1c41
auto allocation and batch managemnt, tracking the train
2026-06-12 11:42:46 +03:00
Hagernesh
72e2e3c985
Recieved invontory detals
2026-06-12 06:58:21 +00:00
Marshal
132f2150a8
add cron jobs and aslo
2026-06-11 20:59:19 +00:00
Marshal
cde3e462ba
automate the schedule
2026-06-11 19:42:23 +00:00
Hagernesh
c86118cd8d
feat(warehouse): add warehouse management module (batch 1)
...
Backend (edr-freight-api):
- Warehouse, WarehouseYard, WarehouseZone, WarehouseInventory entities
- CRUD for warehouses/yards/zones with scoped code uniqueness
- Inventory receive with location-hierarchy + capacity validation and
transactional capacity-counter updates
- inspect / ready-for-loading status transitions
- inventory inquiry (booking/customer/container/cargo-type joins)
- migration creating freight.warehouse* tables
Frontend (freight backoffice):
- types, service, react-query hooks, URL constants
- reusable components: badges, filters, table/card views, inventory and
inquiry tables, create/receive modals
- pages: Warehouse list, detail (overview/yards/zones/inventory tabs),
inventory, inventory inquiry
- Warehouse Information card + Receive At Warehouse on booking detail
- routes + sidebar nav; app-wide ErrorBoundary
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-11 15:54:56 +00:00
Marshal
088295d81f
schedule logic
2026-06-10 09:22:57 +00:00
marshal
5774d7db9d
booking operations and trains scheduling also allocations
2026-06-10 00:48:32 +03:00
hagiye
7facbeda22
Train scheduling API,Routes and UI
2026-06-08 16:31:28 +03:00
marshal
88df20be6b
change price logic on the ,rule engine ui, auto generate the contrat
2026-06-08 10:04:23 +03:00
marshal
4993453993
generate contract by the system, add waggon type,fix ui
2026-06-07 01:20:52 +03:00
Michael Abebe
a9c2f2eb97
feat(freight): added routes and locomotives
2026-06-06 16:23:48 +03:00
hagiye
dc42838a43
Trains management CRUD issues solved
2026-06-05 21:07:04 +03:00
marshal
d59c192137
resolve confilict
2026-06-05 13:06:16 +03:00
marshal
ba65a3f4cc
booking flow,summtion, approval, contract, mock payemnt and integration to back office, and also add permissions
2026-06-05 11:01:00 +03:00
marshal
d226d7ef22
booking flow,summtion, approval, contract, mock payemnt and integration to back office, and also add permissions
2026-06-05 10:38:31 +03:00
hagiye
ed9ef2b8e1
Merge freight/develop into feature/trains-management
2026-06-05 10:25:05 +03:00
hagiye
c66b57d599
Merge freight/develop into feature/trains-management
2026-06-05 10:21:39 +03:00
Michael Abebe
8b3aaad5fd
feat(freight): basics of train scheduling
2026-06-04 16:50:38 +03:00
marshal
125ee18308
implement booking flow
2026-06-04 15:16:27 +03:00