Commit Graph

4608 Commits

Author SHA1 Message Date
Hagernesh
41f480554c feat(billing): add PNR row to freight invoice from booking payment reference
PNR isn't a column on Invoice/Payment — it's written onto Booking.pnrCode
when a CBE_BILL payment initiates. toDocumentModel() now looks it up by
invoice.sourceId and adds it to the existing summary grid, shown only
when present.
2026-08-14 07:19:23 +00:00
Nathnael Wondisha
e56e1c3009 Merge pull request #1287 from Tria-plc/freight/nati-2
fix: ui
2026-08-14 10:08:08 +03:00
Nathnael
ab5a4117df fix: ui 2026-08-14 07:04:57 +00:00
robiman
a33494a3ae Fix price on voucher
Fix price on voucher
2026-08-14 08:25:12 +03:00
Roba Boru
f3ac818d58 Merge branch 'main' of https://github.com/Tria-plc/edr-platform into feature/report 2026-08-14 08:23:45 +03:00
Roba Boru
f41402422b Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into feature/report 2026-08-14 08:23:17 +03:00
Roba Boru
aa850146dc Fix price on voucher 2026-08-14 08:22:50 +03:00
Abubeker Yasin
1a1e985d7f Merge pull request #1284 from Tria-plc/staging
Staging
2026-08-13 23:46:16 +03:00
Abubeker Yasin
ec52f15039 Merge pull request #1283 from Tria-plc/dev
merge dev to staging
2026-08-13 23:33:15 +03:00
Abubeker Yasin
62bb190752 Merge pull request #1282 from Tria-plc/alpha
feat: ( dashboard ) add booking charts
2026-08-13 23:32:25 +03:00
Abubeker Yasin
449dea78ab feat: ( dashboard ) add booking charts 2026-08-13 23:31:20 +03:00
robiman
cdc9db77ae Updated financial report and exclude fayda for Ethiopian when origin is outside of Ethiopia 2026-08-13 22:50:41 +03:00
Roba Boru
1f0d3d3a22 Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into feature/report 2026-08-13 22:48:00 +03:00
Roba Boru
376c23a0ad Updated financial report and sms outside of Ethiopia 2026-08-13 22:47:22 +03:00
Nathnael Wondisha
553524ee56 Merge pull request #1280 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-13 22:16:04 +03:00
Nathnael
6cee9a2676 fix:contract page 2026-08-13 19:13:18 +00:00
marshal
e17df57a37 Merge pull request #1279 from Tria-plc/freight_feature/usermanagement
Freight feature/usermanagement
2026-08-13 21:58:33 +03:00
Marshal
b9ba830a09 shipping line 2026-08-13 18:56:52 +00:00
Nathnael
147887b7c5 feat: dashbaord overview 2026-08-13 18:13:42 +00:00
Marshal
0e00a98ef3 feat: implement shipping line booking completion functionality
- Added ShippingLineBookingCompletionController and associated service to handle the completion of shipping line bookings.
- Introduced a new module for booking completion to maintain module separation and avoid cyclic dependencies.
- Updated the train scheduling global rules to set default desk hours to 24 hours.
- Modified existing services and entities to accommodate the new booking completion logic.
- Enhanced the front-end components to support the new booking completion flow, including updates to the booking detail and bookings pages.
- Implemented validation and error handling for booking completion, ensuring that only approved bookings can be completed.
- Added migration to set default desk hours in the database.
2026-08-13 15:10:27 +00:00
Marshal
5837ac7b6e Merge branch 'dev' 2026-08-13 14:14:31 +00:00
Nathnael Wondisha
df2faa1ee9 Merge pull request #1278 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-13 16:50:04 +03:00
Nathnael
89cdc0ad06 style: ui fixes 2026-08-13 13:46:46 +00:00
Roba Boru
f5a19a705a Merge branch 'main' of https://github.com/Tria-plc/edr-platform into feature/report 2026-08-13 16:36:29 +03:00
Abubeker Yasin
be7ea17841 Merge pull request #1277 from Tria-plc/alpha
feat: ( reports ) add fleet passenger overview to passengers landing …
2026-08-13 16:21:47 +03:00
Abubeker Yasin
62b2080aaf feat: ( reports ) add fleet passenger overview to passengers landing page 2026-08-13 16:20:21 +03:00
marshalyordanos
9fff469ffa feat: implement shipping line bookings management
- Add ShippingLineBookingsPage for listing and managing shipping line bookings.
- Create ShippingLineDocumentsModal for document uploads related to bookings.
- Introduce ShippingLineInitiateModal for initiating new shipping line bookings.
- Implement booking document state management with booking-doc-state utility.
- Add shipping line bookings service for API interactions.
- Update index to export new components and services.
- Enhance types for freight to include shipping line credits.
2026-08-13 15:54:40 +03:00
Nathnael
0df4be1820 style: overview revamp 2026-08-13 12:44:06 +00:00
Abubeker Yasin
2bb8d96eeb Merge pull request #1276 from Tria-plc/alpha
feat: ( reports ) add fleet seat overview to seat status landing page
2026-08-13 15:34:25 +03:00
Abubeker Yasin
aabf58320a feat: ( reports ) add fleet seat overview to seat status landing page 2026-08-13 15:32:56 +03:00
Hagernesh Tadesse
c3c27d9fcf Merge pull request #1274 from Tria-plc/eims-integration
fix(warehouses): free warehouse/yard/zone capacity on export dispatch
2026-08-13 15:05:24 +03:00
Nathnael Wondisha
adf28bd47b Merge pull request #1273 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-13 14:41:41 +03:00
Nathnael
3190b9bd38 Merge branch 'dev' into freight/nati-2 2026-08-13 11:34:57 +00:00
Hagernesh
6c96b7ad94 fix(warehouses): free warehouse/yard/zone capacity on export dispatch
dispatch() (LOADED -> DISPATCHED) routed through the shared transition()
helper, which only flipped status/timestamp and never called
applyCapacityDelta. deliver() (import pickup) already decrements
correctly, so export cargo leaving by train inflated currentWeight/
currentVolume/currentContainers forever instead of freeing capacity.

Add optional freeCapacity hook to transition(), wire dispatch() to it,
mirroring the negative-delta pattern already used in deliver().
2026-08-13 11:27:56 +00:00
Nathnael
86d69a9577 chore: group invoices, payments and usd payments 2026-08-13 11:22:45 +00:00
Hagernesh Tadesse
1088b47029 Merge pull request #1272 from Tria-plc/eims-integration
feat(freight): add company logo setting applied to every generated do…
2026-08-13 13:56:45 +03:00
Hagernesh
c4bf3c9479 feat(freight): add company logo setting applied to every generated document
New logo-settings module (mirrors stamp-settings): single uploaded logo,
stored via FilesService/MinIO, injected as a data URL into invoice/receipt,
contract, warehouse, train-scheduling, and payment-receipt PDFs. Adds a
matching backoffice settings page and settings:logo:view/manage permissions.

>
2026-08-13 10:54:23 +00:00
Hagernesh Tadesse
63b40ea4f8 Merge pull request #1271 from Tria-plc/eims-integration
Eims integration

feat(lastmile): reference stored LM contract from booking detail
2026-08-13 13:18:16 +03:00
Hagernesh
e66e622ede eims cancellation 2026-08-13 09:58:04 +00:00
Hagernesh
89dba01cd7 feat(train-scheduling): notify customer of CAS on direct-to-train load
Direct truck-to-train export cargo skips the warehouse, so the existing
carriage acceptance sheet ready notice (fired on warehouse receive)
never reached these bookings. Their handover moment is the load itself.

Extract notifyCarriageAcceptanceReady into a shared notifications util
(was private to WarehouseInventoryService) and call it from
BookingJourneyService.loadBooking for EXPORT + DIRECT_TO_TRAIN bookings,
right after the GRN gate, before the load transaction proceeds.
2026-08-13 09:58:04 +00:00
Abubeker Yasin
f78a19befb Merge pull request #1270 from Tria-plc/dev
Merge dev to staging
2026-08-13 12:30:07 +03:00
Nathnael
4ae63d4e5c fix: report ordering 2026-08-13 09:29:09 +00:00
Abubeker Yasin
ae6797ea05 Merge pull request #1269 from Tria-plc/alpha
fix: ( notifications ) stop group-booking SMS greeting the wrong pass…
2026-08-13 12:23:49 +03:00
Abubeker Yasin
1e97f46813 fix: ( notifications ) stop group-booking SMS greeting the wrong passenger 2026-08-13 12:20:27 +03:00
Hagernesh Tadesse
2fa2cae476 Merge pull request #1268 from Tria-plc/eims-integration
Eims integration
2026-08-13 12:16:47 +03:00
Nathnael
cb27d82e8f test(freight-api): cover export field/limit/format resolution
Extracted the export route's format/cap/column-whitelist branching out
of the controller into pure functions (resolveExportFormat,
resolveExportCap, resolveExportColumns) and added a spec: unknown
format falls back to xlsx, limit clamps to the format cap and ignores
non-positive/NaN input, unknown field keys are dropped and an
all-unknown fields list falls back to every column instead of
shipping a blank sheet. Was untested branching logic before this.
2026-08-13 09:07:49 +00:00
Hagernesh
58cb71a9cf feat(train-scheduling): add direct truck-to-train load action beside Load
Export bookings whose cargo goes straight from customer truck to wagon
never get a warehouse GRN, so the load gate (assertExportReceivedWithGrn)
rejects them forever unless staff first flip exportHandoverMode on the
booking detail page, then come back and retry Load.

Add a Truck to Train button next to Load in the schedule workspace's
on-train list, shown for EXPORT bookings at the boarding yard. One click
sets exportHandoverMode=DIRECT_TO_TRAIN then loads the booking.
2026-08-13 08:55:17 +00:00
Nathnael
6a102bf938 feat(reports): header actions, single export dialog, date-range presets
- ReportPage drops its own PageHeader (and the back arrow); ReportView
  now optionally renders the header itself (pageHeader prop) with
  export/refresh as its actions. Embedded ReportSection usage is
  unaffected (keeps the inline toolbar next to filters).
- Replace the two xlsx/pdf icon buttons with one Export button opening
  a dialog: format as large icon radio cards, fields as checkboxes
  (select-all toggle), record count (default all, capped per format).
  Export applies the report's current filters and sort.
- Backend: export route accepts fields (whitelisted against the
  report's own columns) and limit; ReportExportService takes an
  optional column subset instead of always dumping every column.
- Fixed a real bug found while wiring this up: runAll() ignored the
  caller's sortBy/sortOrder and always used the report's default sort,
  so exports silently didn't match whatever order was on screen.
- Report daterange filters now use DatePickerInput + the shared
  getDateRangePresets() (Today/Last 7 days/This month/...) instead of
  two bare DateInputs, matching every other date-range filter in the
  app.
- Removed the reports hub grid page. /dashboard/reports now redirects
  to the first report the caller has access to, or /dashboard if they
  have none.
2026-08-13 08:53:03 +00:00
Nathnael
58b47318e9 feat(freight-backoffice): consolidate Mantine from/to date filters into range pickers
Replaces every remaining split from/to Mantine DateInput/DatePickerInput pair
with a single DatePickerInput type="range", sharing one preset list (Today,
Last 7/30 days, this/last month, YTD) via getDateRangePresets(). Covers
ListControls (18 consumers), FleetResourcePage, ContractRequestsPage,
BookingRequestsPage (created + scheduled ranges), WagonCancellationsPage,
BatchBoardPage, ClearanceDocumentsPage, ShipmentRequestsPage.

Native Mantine range picker, not the shadcn DateRangePicker, to match each
page's existing design system instead of clashing with it.

Reports date-range filter (ReportFilters.tsx) intentionally left untouched.
2026-08-13 08:45:29 +00:00
Nathnael
efc5a24380 feat(reports): add optional chart view to the report engine
ReportDefinition gets an optional chart {type: line|bar, x, y[]} field —
plots the same rows the table gets, no separate query. Frontend adds a
table/chart toggle (defaults to table) using the existing recharts
dependency, no new package.

Chart view fetches up to 100 rows (the API's page-size ceiling) instead
of the table's current page, so it doesn't silently plot a fraction of
the filtered set; shows a truncation note past that cap.

Wired onto 5 reports as proof: wagon-fleet-status, locomotive-fleet-
status, booking-status-breakdown, revenue-summary (bar), and
global-logistics-wagons (line). Everything else stays table-only —
charting is opt-in per report, not a default.
2026-08-13 08:34:08 +00:00