Nathnael
031e5ab292
Merge branch 'dev' into freight/feat/chat-app
2026-07-17 11:01:39 +00:00
Nathnael
1fd46afaaa
fix: added chat to the freight api
2026-07-17 10:59:25 +00:00
Hagernesh
ce3ef15e7c
feat(yards): record which yards can load/unload cargo
...
Intercity cargo is loaded at its origin yard and unloaded at its destination, but
only some yards have the equipment. EDR's facilities are Indode, Sebeta, Modjo,
Adama and Dire Dawa — and the set grows, so it has to be data.
- yards.has_facility marks a yard as a load/unload point; the new yard_facilities
record says what it can do. Only Indode stores cargo (has_warehouse), so only it
accrues storage/demurrage — the rest just move cargo on and off the train.
- facility_handling_events records each load/unload and carries its GRN.
warehouse_inventory cannot: its warehouse/yard/zone are NOT NULL, so a facility
without a warehouse could never have a row. inventory_id links to the storage
record when there is one.
- YardFacilitiesService.facilityForYard is the single resolver the handling flows
share, so they cannot drift on what a facility is.
- The seeder flags EXISTING yards and creates none. The codes are historical and
do not read like the facility names — Indode is KALITY ("Gelan Multi Purpose
Port (Indode)") and Sebeta is LEGACY_DEST — so it maps by code. Creating fresh
INDODE/SEBETA yards would have split data that routes and bookings already
reference.
Negad is deliberately absent: NAGAD ("DCT/SGDT") is in Djibouti while
NEGAD_FY_BCC is in Ethiopia and inactive, and which one is the intercity facility
is unsettled.
No behaviour change yet — nothing reads has_facility until the gate lands.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-17 10:40:16 +00:00
Marshal
01459bd73c
train
2026-07-14 13:11:38 +00:00
Marshal
b5a97d344a
train
2026-07-14 13:10:00 +00:00
Hagernesh
da44752c70
SELECT BOX
2026-07-11 08:30:39 +00:00
Hagernesh
eec3d1863a
Cleaned warehouse related UI and made all 15 pages consisitent
2026-07-11 08:30:39 +00:00
Marshal
3443b79644
make a contrat template
2026-07-09 21:13:07 +00:00
Marshal
94904ea6d0
resolve conflict
2026-07-07 21:46:25 +00:00
Marshal
87a95b37bf
enhance train scheduling and booking management
2026-07-07 21:38:45 +00:00
Marshal
f300600bfa
changes
2026-07-07 12:28:47 +00:00
natib21
75427ea63a
fix tracker
2026-07-07 06:39:02 +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
Nathnael
5a10c14ceb
feat: setup the notification module to the api
2026-07-06 06:51:38 +00:00
Hagernesh Tadesse
493af38ba2
Merge pull request #455 from Tria-plc/naming_convention
...
Handover customer sign
2026-07-04 10:04:23 +03:00
Hagernesh
18f47481d7
Handover customer sign
2026-07-04 06:31:23 +00:00
natib21
e893af8133
fix
2026-07-03 15:22:51 +00:00
natib21
0e6ebda6f6
fix
2026-07-03 15:21:23 +00:00
yaschalew
47f87e8435
fix conflict
2026-07-03 17:31:29 +03:00
ghost2023
4a6e42ccd9
fix: logger
2026-07-03 17:21:26 +03:00
natib21
e4b0c73c63
fix fayda
2026-07-03 09:10:05 +00:00
Marshal
71894ae2d3
merge conflict
2026-07-02 13:43:07 +00:00
hagiye
5af45c2643
Customer Truck Assignment and Portal Delivary Approval
2026-07-02 15:54:16 +03:00
hagiye
14a00af341
train gate pass, Telebirr and Wafi
2026-07-01 16:23:52 +03:00
natib21
f436916c42
feat: complete maintenance tracking backend
...
Service/Controller/Module:
- scheduleMaintenanceAsync: schedule work
- recordMaintenanceCost: log expenses
- getUpcomingMaintenance: due items
- getVehicleMaintenanceStats: cost aggregation
Endpoints:
- POST /maintenance/schedules
- POST /maintenance/costs
- PATCH /maintenance/schedules/:id
- GET /maintenance/upcoming/:vehicleId
- GET /maintenance/history/:vehicleId
- GET /maintenance/stats/:vehicleId
Migration: idempotent maintenance tables creation
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-30 12:33:29 +00:00
natib21
df6e417a56
feat: add fuel management system backend
...
- FuelPurchase entity: record fuel purchases with cost tracking
- FuelConsumption entity: monthly aggregation of fuel metrics
- FuelService: record purchases, calculate stats, efficiency
- FuelController: REST API for fuel operations
- FuelModule: integrated into app
- Migration: create fuel_purchases and fuel_consumption tables
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-30 10:07:13 +00:00
Nathnael Wondisha
4cf8e89780
Merge branch 'dev' into freight/feat/invoice
2026-06-29 17:24:29 +03:00
Nathnael
c37e8acfdc
Merge branch 'dev' into freight/feat/invoice
2026-06-29 10:58:12 +00:00
hagiye
9176df5e4b
Marshaling document Receive Export and import handover to customer
2026-06-29 13:48:58 +03:00
marshal
1c01c792fc
merge conflict
2026-06-29 12:45:40 +03:00
hagiye
d55f9312bf
Marshaling document Receive Export and import handover to customer
2026-06-29 12:24:14 +03:00
Nathnael
5bad245ce8
feat: setup billing services
2026-06-29 07:11:52 +00:00
hagiye
fee4365b70
Import operation gate pass
2026-06-27 21:04:27 +03:00
hagiye
3decc9aeea
interchange document generation and acknowledgement
2026-06-27 13:39:42 +03:00
Nathnael
98e34593c4
feat: add government support to the companies. add seeding and constrain on booking
2026-06-27 09:08:15 +00:00
Marshal
01d53c218c
contrat,booking,global logestic
2026-06-26 23:24:48 +00:00
hagiye
f4a90755c2
api
2026-06-25 11:00:40 +03:00
hagiye
8ee31789c6
merge conflict fix
2026-06-24 12:31:59 +03:00
hagiye
0255adffe6
changes
2026-06-24 09:56:12 +03:00
marshal
02427f72f1
Merge pull request #243 from Tria-plc/freight_feature/profile
...
Freight feature/profile
2026-06-22 15:49:25 +03:00
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
yaschalew
7f51f24a77
fix conflict
2026-06-22 14:23:43 +03:00
natib21
6b1bbd8e59
last mile
2026-06-22 07:58:56 +00:00
natib21
00d722fa4f
last mile
2026-06-22 07:49:47 +00:00
hagiye
79efa1ec60
Warehouses confilct fix
2026-06-21 19:06:51 +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
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