Hagernesh
fe9503638b
separte handover edr lastmile and customer last mile flow
2026-07-06 12:27:58 +00:00
hagiye
14a00af341
train gate pass, Telebirr and Wafi
2026-07-01 16:23:52 +03:00
Nathnael
fa3138f2ac
refactor: migrate the warehouse invoice to use the central one
2026-06-30 12:54:04 +00:00
hagiye
9f5c22c1ee
Goods recieved notes and Booking delivery
2026-06-30 07:19:12 +03:00
hagiye
503878110f
DJbouti port Export Unloading
2026-06-24 23:25:34 +03: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
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
e40318c847
Dashboard enhancement
2026-06-19 11:29:05 +00:00
Hagernesh
33b74a5da9
demurrage invoices
2026-06-18 00:04:07 +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
5b8cb16c1a
automation
2026-06-17 22:00:53 +00:00
Hagernesh
1db1467ea1
automated loading and unloading
2026-06-17 21:45:22 +00:00
Hagernesh
314e9b79cc
Faciklity add
2026-06-16 09:06:11 +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
Hagernesh
72e2e3c985
Recieved invontory detals
2026-06-12 06:58:21 +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