Commit Graph

2462 Commits

Author SHA1 Message Date
Marshal
18311f22f7 Comment out payment event handling for local demos in BillingService 2026-07-17 09:20:36 +00:00
Marshal
308df1c61c fix schule issue and contianer type issue 2026-07-17 09:18:26 +00:00
Marshal
7b7e7c3f62 fix schule issue and contianer type issue 2026-07-17 09:16:35 +00:00
Nathnael
ef74bc442a fix: prevent the backoffice from approve the user before he submits 2026-07-17 08:54:24 +00:00
Nathnael
0883c54465 Merge branch 'dev' into freight/feat/fixes-v1 2026-07-17 08:27:25 +00:00
ghost2023
bd81bbfc2c style: sidebar improvmetn 2026-07-17 11:15:58 +03:00
Hagernesh
fc636fbe4f fix(warehouse): scope the arrival GRN stamp to EXPORT only
The previous commit made autoUnloadArrived and unloadBooking raise a GRN for any
direction, which changed import behaviour. Import keeps its own GRN handling
(autoUnloadArrivedBookings) and is left exactly as it was. Both paths now stamp a
GRN only when the booking is EXPORT — the direction whose cargo needs one to be
loaded onto a train. Import and domestic behave as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 08:01:58 +00:00
Hagernesh
a95667fde4 fix(warehouse): raise a GRN on every warehouse receipt
Requiring a GRN before loading only works if every path into the warehouse
issues one. Two did not: autoUnloadArrived and unloadBooking created RECEIVED
inventory with a null grn_number, so cargo that genuinely arrived — by first
mile or self haul — would have been stuck un-loadable behind the new gate.

Both now stamp a GRN, derived from the booking's trade direction, matching
receive/bulkReceive/autoUnloadArrivedBookings. unloadBooking keeps an
already-issued GRN when it re-unloads an existing row rather than reissuing one.

Every path that creates warehouse inventory now issues a GRN, so the chain is
seamless: booking arrives (first mile or self haul) -> received -> GRN -> loadable
onto its allocated wagon.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 08:01:58 +00:00
Hagernesh
a26fa61d66 feat(warehouse): require a GRN before export cargo can be loaded onto a train
The export chain is: paid -> received into the warehouse -> GRN raised on arrival
-> loaded onto the allocated wagon. Receipt was already structural (the inventory
row only exists once receive() runs) and the wagon was already required, but the
GRN was merely displayed, never enforced — so cargo could be loaded and
dispatched without one.

- loadable now also requires a GRN, so the queue won't offer un-GRN'd cargo.
- loadItemsOntoTrain skips items with no GRN, so the rule holds server-side and
  a hand-made API call can't bypass it.
- Read the GRN from inv.grn_number (what receive() stamps) and fall back to the
  note only for legacy/seeded rows; it previously read the note alone, which the
  real receive path merely mirrors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 08:01:57 +00:00
Hagernesh
d9db4cbc0c fix(train-scheduling): scope the not-loaded dispatch guard to EXPORT only
The guard fired on every dispatch. Loading out of an origin warehouse is an
export concept — import cargo isn't loaded from a warehouse, so its warehouse
inventory says nothing about what's aboard and the check would have blocked
legitimate import dispatches. Derive the route direction (reusing
deriveTradeDirection, as the warehouse loading queue does) and return early for
anything that isn't EXPORT. Import and domestic behave exactly as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 08:01:57 +00:00
Hagernesh
2798fed6d8 fix(train-scheduling): block dispatch when allocated cargo is not loaded
dispatchSchedule guarded status, Djibouti departure rules, locomotives and
wagons — but never checked the cargo. A train could be dispatched while the
bookings allocated to it sat received in the warehouse, silently leaving them
behind. Dispatch now refuses when an allocated booking has warehouse inventory
in RECEIVED/STORED/READY_FOR_LOADING, naming the bookings and pointing at the
two ways out: load them, or drop the wagon allocation so they ride a later
train. Bookings with no inventory at all are not blocked — allocating a wagon
before the goods arrive is normal planning.

Also drops RESERVED from the Load-to-Train filters: reserved stock is not
awaiting loading.

The sched_bookings CTE moves to common/schedule-bookings.sql so the warehouse
loading queue and this dispatch guard resolve a train's bookings identically —
if they drift, a train departs leaving cargo the warehouse still expects to load.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 08:01:57 +00:00
Hagernesh
e115b9b753 fix(warehouse): resolve Load-to-Train bookings from wagon allocation
The Load-to-Train queue was permanently empty for real traffic. loadableTrains()
and trainLoadableItems() gated on freight.train_schedule_bookings, but nothing in
the application writes that table — only the demo seeders do. Real wagon
allocation writes wagon_booking_allocations, reached via
train_schedules -> train_sets -> train_set_wagons, so an allocated export booking
never satisfied the EXISTS gate and no train ever appeared.

Both queries now resolve a schedule's bookings through a shared sched_bookings
CTE that unions the wagon-allocation chain with train_schedule_bookings, so real
allocations show up and the seeded demo scenarios keep working. The panel already
groups the returned rows by booking with their containers, so the queue now lists
the train, its bookings and their containers for selection.

Export flow this serves: booked -> paid -> received at the warehouse (first-mile
or self-haul) -> GRN -> loaded onto the wagons allocated to the booking.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 08:01:57 +00:00
Abubeker Yasin
6c5ab98e4e Merge pull request #751 from Tria-plc/alpha
Alpha
2026-07-17 10:58:54 +03:00
marshal
2def8f9b0e Merge pull request #753 from Tria-plc/freight_feature/usermanagement
Comment out payment event handling for local demos in BillingService
2026-07-17 10:49:46 +03:00
Marshal
5a1e0dba4d Comment out payment event handling for local demos in BillingService 2026-07-17 07:43:17 +00:00
Roba Boru
0c584cce88 Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-17 10:21:12 +03:00
Roba Boru
610580e15e Added discrepancy management for duplicate seats 2026-07-17 10:20:35 +03:00
Nathnael Wondisha
f769d97135 Merge pull request #752 from Tria-plc/freight/feat/fixes-v1
Freight/feat/fixes v1
2026-07-17 10:01:44 +03:00
Roba Boru
ea8f91a415 Merge branch 'alpha' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-17 08:43:08 +03:00
Roba Boru
2366b28610 remove the cron job 2026-07-17 08:42:42 +03:00
Stephanos A
f3c0fd6cbb Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-17 00:49:50 +03:00
Stephanos A
e59b797477 Minor updates 2026-07-17 00:49:35 +03:00
Roba Boru
1bba6dd9fc Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-16 23:22:55 +03:00
Roba Boru
969c524afe Added cron job that check duplicate seat and assign if free available 2026-07-16 23:22:20 +03:00
marshal
d8ec9b3436 Merge pull request #749 from Tria-plc/freight_feature/usermanagement
Freight feature/usermanagement
2026-07-16 23:13:01 +03:00
Marshal
71507b27fd changes 2026-07-16 20:09:59 +00:00
Marshal
35c53e3f36 changes 2026-07-16 20:03:35 +00:00
Stephanos A
ef37ce4c31 Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-16 21:31:13 +03:00
Abubeker Yasin
718c384a06 Update tickets.controller.ts 2026-07-16 21:15:10 +03:00
Stephanos A
17c0123161 Add unique constraint to JourneySegment for seat bookings per schedule 2026-07-16 21:10:02 +03:00
Stephanos A
3726ac8390 Add seat block schedule id for consistency 2026-07-16 20:11:42 +03:00
Stephanos A
8ae327e779 Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-16 19:28:12 +03:00
Stephanos A
e3075d1486 Seats holding, booking, blocking inconsistencies resolution 2026-07-16 19:28:00 +03:00
Roba Boru
6d524ce6be Fix payment fallback redirect 2026-07-16 17:27:32 +03:00
Roba Boru
fe5b258fca Fix confirmation page pending payment 2026-07-16 17:02:23 +03:00
Roba Boru
f9b87b9911 Fix waiting time loading 2026-07-16 16:41:36 +03:00
Nathnael
e626e1db63 Merge branch 'dev' into freight/feat/fixes-v1 2026-07-16 13:23:40 +00:00
Roba Boru
e3e70707a3 Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-16 16:17:15 +03:00
Roba Boru
8790e020ee Fix loading message 2026-07-16 16:16:51 +03:00
marshal
1a3fa4bc5a Merge pull request #738 from Tria-plc/freight_feature/usermanagement
fix issue
2026-07-16 16:00:07 +03:00
Marshal
b50adc4666 fix issue 2026-07-16 12:59:28 +00:00
Roba Boru
10968410b2 Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-16 15:45:13 +03:00
Roba Boru
43c0f5b01e Merge branch 'alpha' of https://github.com/Tria-plc/edr-platform into alpha 2026-07-16 15:45:01 +03:00
Roba Boru
0142c94bb0 Check payment before generating ticket 2026-07-16 15:44:47 +03:00
Nathnael
e2f42136a8 fix: add password form to account 2026-07-16 12:37:52 +00:00
Abubeker Yasin
cc56ad7748 Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-16 15:37:25 +03:00
Abubeker Yasin
e0abfddf10 Update payment-events.consumer.ts 2026-07-16 15:36:02 +03:00
Stephanos A.
211505a585 Merge pull request #736 from Tria-plc/alpha
Alpha
2026-07-16 15:19:07 +03:00
Stephanos A
e28372306f Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-16 15:18:16 +03:00
Stephanos A
6b5a80b597 Supplementary payments client pages 2026-07-16 15:18:01 +03:00