Marshal
b031ddb204
Merge branch 'freight/develop' of github.com:Tria-plc/edr-platform into freight_feature/priority
2026-06-22 11:43:38 +00:00
Dagimassefa
b3bfa899f5
update
2026-06-22 12:29:48 +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
marshal
dd07442b92
feat: switch API base URL to localhost for development and fix shipping line ID handling in booking form
...
- Changed API_BASE_URL from production to localhost in both backoffice and portal configurations.
- Updated booking form to use shipping line ID instead of name throughout the flow.
- Fixed Step1ContractType to set shipping line ID when loading existing booking.
- Updated Step4Route to key shipping line options by ID as required by API.
- Enhanced Step8Review to display shipping line name by
2026-06-21 09:38:57 +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
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
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
Hagernesh
e40318c847
Dashboard enhancement
2026-06-19 11:29:05 +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
0b7492c502
Switch API configuration from localhost to production URL in portal and add localhost comment in backoffice
2026-06-17 07:47:09 +03: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
e815b4d976
Refactor API base URL configuration to use centralized constant across applications
2026-06-16 23:06:46 +03: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
hagiye
18015ceaff
Merge freight/develop
2026-06-02 17:11:51 +03:00
hagiye
d52a5715e0
Rate Matrix Rules user story
2026-06-02 10:47:36 +03:00
marshal
452ebdbc0a
rule engine and configration and fix booking for custoemr
2026-06-01 23:15:11 +03:00
hagiye
3682bda85c
rule engine UI, services and API integration
2026-06-01 16:01:51 +03:00