Commit Graph

2742 Commits

Author SHA1 Message Date
natib21
15fc21a6c9 gps 2026-07-10 15:23:49 +00:00
natib21
4836f0e63b fix 2026-07-10 15:05:00 +00:00
natib21
7393db3d6d fix ui 2026-07-10 14:48:43 +00:00
natib21
d1d0afbd97 fix 2026-07-10 14:47:23 +00:00
yaschalew10
58c5a4c73e Merge pull request #604 from Tria-plc/freight/feature/user_management_UI
Freight/feature/user management UI
2026-07-10 17:23:03 +03:00
yaschalew
d30da99dfa Merge branch 'dev' of github.com:Tria-plc/edr-platform into freight/feature/user_management_UI 2026-07-10 17:21:14 +03:00
Stephanos A.
403c4add4d Merge pull request #603 from Tria-plc/alpha
Alpha
2026-07-10 16:25:34 +03:00
yaschalew10
42f8fc5517 Merge pull request #602 from Tria-plc/freight/feature/user_management_UI
Freight/feature/user management UI
2026-07-10 16:24:37 +03:00
yaschalew
1c809764b9 Merge branch 'dev' of github.com:Tria-plc/edr-platform into freight/feature/user_management_UI 2026-07-10 16:21:51 +03:00
yaschalew
a35e48795b fix ui 2026-07-10 16:20:31 +03:00
natib21
bdb59b11bd language 2026-07-10 13:04:39 +00:00
yaschalew
060bfc28df add localize 2026-07-10 15:57:55 +03:00
natib21
a440ae6978 fix 2026-07-10 12:50:19 +00:00
Nathnael Wondisha
dd2c6e4fa3 Merge pull request #601 from Tria-plc/freight/feat/fixes-v1
Fixing issues from the google sheets
2026-07-10 15:26:01 +03:00
Nathnael
625b33733d Merge branch 'dev' into freight/feat/fixes-v1 2026-07-10 12:22:41 +00:00
marshal
c6d79253fb Merge pull request #600 from Tria-plc/freight_feature/usermanagement
update booking logic for train schedules and customs contracts
2026-07-10 15:14:27 +03:00
Marshal
a58650bdfb update booking logic for train schedules and customs contracts 2026-07-10 12:13:08 +00:00
Nathnael
f737e401b3 fix: the issue in the sheets file 2026-07-10 12:10:17 +00:00
natib21
72f0e114b1 fix ui 2026-07-10 12:09:27 +00:00
Stephanos A
3d3b0dc4c5 Mobile view dark mode toggle 2026-07-10 15:00:57 +03:00
Hagernesh Tadesse
4af75f394d Merge pull request #599 from Tria-plc/Truckdetantion
Truckdetantion
Duplicate container number fix, 
Remove two GRN button and UUID
2026-07-10 14:53:42 +03:00
Hagernesh
5b667715cc Merge branch 'Truckdetantion' of github.com:Tria-plc/edr-platform into Truckdetantion
# Conflicts:
#	apps/edr-freight-web/backoffice/src/components/warehouses/ReceiveInventoryModal.tsx
2026-07-10 11:50:24 +00:00
Stephanos A
84e6a3139c Merge branch 'alpha' of github.com:Tria-plc/edr-platform into alpha 2026-07-10 14:43:15 +03:00
Stephanos A
5c22a9d327 Make manual ticket generation data mandatory 2026-07-10 14:41:24 +03:00
Hagernesh
267ccbca12 Merge branch 'dev' of github.com:Tria-plc/edr-platform into Truckdetantion 2026-07-10 11:39:14 +00:00
natib21
e6e44e773b fix ui 2026-07-10 11:25:59 +00:00
yaschalew
697799b00d fix 2026-07-10 14:24:58 +03:00
Hagernesh
9d147fbe26 fix(warehouses): truck-arrival crash on duplicate containers; auto-GRN on import unload
Truck Arrival died with "[@mantine/core] Duplicate options are not supported"
when a booking carried the same container number on two container lines (the
unit uniqueness is per line, not per booking):
- bookingContainerWeights now GROUPs BY container number (MAX weight)
- the weighing modal dedupes both the containers MultiSelect and the
  assigned-trucks Select defensively, so bad data degrades instead of
  crashing the whole page

Import GRN is now issued automatically when the arrived train is unloaded:
autoUnloadArrivedBookings stamps GRN-IMPORT-<date>-<booking> on both the
create and update paths (never overwrites an existing GRN). The per-row GRN
button in the import queue lights up with no extra clicks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:13:21 +00:00
Hagernesh
00875dd2f4 fix(billing): fallback PDF paginates long tables instead of truncating
The marshalling manifest cut off at one page ("... 10 more row(s) not
shown") because the fallback drew rows only until it hit the bottom band.
Now the table flows across as many pages as it needs:

- page 1 keeps the full header + summary tiles; continuation pages get a slim
  "(continued — page N)" header and a re-drawn table header
- the verification notice and signature lines stay pinned to the final page,
  moving to a fresh page when rows run too deep for the bottom band
- the copy watermark repeats on every page of its copy
- a 12-page safety cap keeps the old truncation note as a last resort

Verified by standalone render: 50-row manifest -> 2 pages, all 50 rows, no
truncation; 5-row doc stays 1 page; two-copy freight order still renders 2
watermarked pages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:13:21 +00:00
Hagernesh
4ca4363489 fix(billing): fallback PDF renders duplicate-copy documents as watermarked pages
buildTabularFallbackPdf parsed the whole HTML at once, so a two-copy document
(freight order: Port Operations copy + Gate Security & Carrier copy) came out
as ONE page with every tile duplicated and no watermarks.

- documents wrapped in <section class="copy"> now render one page per copy,
  each parsed independently (no more merged/duplicated tiles)
- each page carries its copy label as a large rotated light-gray watermark,
  drawn beneath the content (new watermarkOp, 30-degree text matrix)
- new assemblePdf() multi-page assembler; assembleSinglePagePdf untouched for
  its existing callers
- the meta label is parsed from the document ("Booking") instead of the
  hardcoded "TRAIN / SCHEDULE"

Verified by compiling the util standalone and rendering a two-copy freight
order: 2 pages, both watermarks present, tiles once per page, valid xref/EOF;
copy-less documents (marshalling) still render a single unwatermarked page.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:13:21 +00:00
Hagernesh
707923b603 feat(warehouses): expandable booking rows list containers / cargo inline
Every booking row in the queue tables (export received, ready-to-load,
loaded/dispatch, import unloaded) gets a chevron that expands to the
booking's items: container number, goods, lifecycle stage badge
(PENDING..DELIVERED), carrying truck, and GRN.

Bulk bookings (no container units) show a one-line summary instead
("Bulk cargo — Coffee export cargo, 3,200 t"). The expansion reuses the
['container-items', bookingId] query the container modal already uses, so
data is shared and instant after either has loaded it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:13:21 +00:00
Hagernesh
3ff4b8bf94 fix(warehouses): finish queue-table ergonomics batch
- statuses render through the shared InventoryStatusBadge (humanized label,
  consistent per-status color) instead of raw enums in ad-hoc badges
- Ready-To-Load drops its selection checkboxes: nothing consumed the
  selection since auto-load became train-scoped
- bulk toasts now say WHY items were skipped ("3 skipped — Booking not PAID")
  via a shared skippedSummary helper
- one-click irreversible bulk actions (Dispatch All/Selected, Mark Selected
  as Inspected x2, Auto Unload train) now ask for confirmation through a
  small local ConfirmActionModal - no @mantine/modals dependency added.
  Receive All stays unconfirmed: it already funnels through the
  truck-entrance modal with an explicit Save.
- table minWidths retuned for the slimmed column sets
  (1700->1350, 1600->1200, 2000->1650)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:13:21 +00:00
Hagernesh
0339b89b54 ci: replace actions/checkout with plain git on self-hosted runners
Runners on this network intermittently time out downloading the action
tarball from codeload.github.com (HttpClient 100s limit, 3 attempts, job
dead before the first step). git fetch talks to github.com directly and
needs no action download at all.

- detect-changes: fetch --depth 2 (keeps the HEAD~1 diff working)
- deploy: fetch --depth 1
- token passed via env for the fetch, then scrubbed from .git/config so it
  doesn't persist in the runner workspace; git clean keeps checkout@v4's
  clean-workspace behaviour

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:13:21 +00:00
Hagernesh
aa3674041d fix(warehouses): drop truncated UUID columns and duplicate GRN buttons
Queue tables showed "Booking ID" / "Customer ID" as dimmed 8-char UUID hashes
next to the human-readable Booking Ref and Customer Name - unusable columns
that forced extra horizontal scrolling. Removed across all six tables
(eligible, received, ready-to-load, loaded/dispatch, import unloaded, import
train detail).

The GRN document button also rendered twice per row (inside the Booking Ref
cell and again in the GRN column) in four tables - kept the GRN column only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:13:21 +00:00
marshal
1e4c407fe4 Merge pull request #598 from Tria-plc/freight_feature/usermanagement
Freight feature/usermanagement
2026-07-10 14:13:09 +03:00
Marshal
10111c9e01 merge 2026-07-10 11:08:30 +00:00
Marshal
45629e436e merge 2026-07-10 11:08:14 +00:00
Abubeker Yasin
7f841ea583 Merge pull request #597 from Tria-plc/alpha
feat( auth ): make email optional in signup/login
2026-07-10 14:04:34 +03:00
Abubeker Yasin
8321c697ec feat( auth ): make email optional in signup/login 2026-07-10 13:38:53 +03:00
marshal
4fe31614cf Merge pull request #596 from Tria-plc/freight_feature/usermanagement
enhance shipment requests page with filtering and sorting options
2026-07-10 13:33:40 +03:00
Marshal
1abef3ce34 enhance shipment requests page with filtering and sorting options
- Added status and cargo filters to the ShipmentRequestsPage.
- Implemented date range filtering for preferred dates.
- Introduced sorting options for shipment requests based on submission date and reference.
- Enhanced the display of shipment request details, including status badges and customer information.
- Updated the UI to include a search input with clear functionality and improved layout for filters.

feat: add equipment return option in new shipment form

- Introduced a toggle for equipment return in the NewShipmentPage.
- Updated form schema to include  field for container contracts.
- Enhanced user experience with visual feedback on the equipment return selection.

fix: update booking DTO to include equipment return option

- Added  field to CreateBookingUnderContractDto for per-shipment override.
- Updated related types and schemas to accommodate the new field for better contract handling.
2026-07-10 10:32:41 +00:00
Hagernesh
9e30c0c071 ci: replace actions/checkout with plain git on self-hosted runners
Runners on this network intermittently time out downloading the action
tarball from codeload.github.com (HttpClient 100s limit, 3 attempts, job
dead before the first step). git fetch talks to github.com directly and
needs no action download at all.

- detect-changes: fetch --depth 2 (keeps the HEAD~1 diff working)
- deploy: fetch --depth 1
- token passed via env for the fetch, then scrubbed from .git/config so it
  doesn't persist in the runner workspace; git clean keeps checkout@v4's
  clean-workspace behaviour

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 09:22:24 +00:00
Hagernesh
27efbe6bb3 fix(warehouses): drop truncated UUID columns and duplicate GRN buttons
Queue tables showed "Booking ID" / "Customer ID" as dimmed 8-char UUID hashes
next to the human-readable Booking Ref and Customer Name - unusable columns
that forced extra horizontal scrolling. Removed across all six tables
(eligible, received, ready-to-load, loaded/dispatch, import unloaded, import
train detail).

The GRN document button also rendered twice per row (inside the Booking Ref
cell and again in the GRN column) in four tables - kept the GRN column only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 09:22:24 +00:00
Hagernesh Tadesse
b4ab89de46 Merge pull request #595 from Tria-plc/Truckdetantion
Truckdetantion
2026-07-10 12:09:12 +03:00
Nathnael
bd4d7b72fd fix 2026-07-10 09:09:05 +00:00
Nathnael Wondisha
29a4015e89 Merge pull request #594 from Tria-plc/freight/feat/fixes-v1
POA fixes
2026-07-10 11:58:57 +03:00
Nathnael
151d9c48c3 Merge branch 'dev' into freight/feat/fixes-v1 2026-07-10 08:54:34 +00:00
Nathnael
e5fce529fe feat: add poa to the changes approval 2026-07-10 08:45:39 +00:00
Hagernesh
9ef390ef1e fix(warehouses): truck weighing modal resolves bookingId without the relation
The modal read the booking id only from item.booking?.id, but inventory-
workbench rows carry bookingId without the booking relation. Result: the
container-weights and assigned-trucks queries never ran, so "Recorded net
weight (system)" fell back to the inventory row's weight (often 0), the
container MultiSelect never appeared, and the truck dropdown showed
"not assigned" even when trucks existed - while the server correctly computed
the cargo weight and rejected the mismatch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 08:34:14 +00:00
Hagernesh
9eb10bb4ce feat(warehouses): auto-load targets a selected train, never loads trainless
"Auto Load Ready Items" now opens a train picker (pre-dispatch trains with
these bookings assigned, via the existing loadable-trains flow). No train
available -> no auto-loading, with a clear notice. Loading goes through the
existing per-wagon load path, so items without an allocated wagon are skipped
with a reason.

The train association is stored on the existing warehouse_loadings table
(no new table needed): new train_schedule_id column + a note recording train
number, origin -> destination, and departure time; wagon_id becomes nullable.
The trainless load-passed-export endpoint, its frontend wiring, and the unused
useLoadPassedExport hook are removed.

Migration 2100000000000 (idempotent) also applied to the dev database.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 08:34:14 +00:00