Commit Graph

3484 Commits

Author SHA1 Message Date
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
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
Hagernesh
833e62990e feat(train-scheduling): add wagon type, tare, equated length, station, seal no and note columns to import marshalling doc
Import Load List / Marshalling Document only rendered Seq, Wagon,
Booking, Company, Load, Container numbers, Weight T — missing fields
present on the physical marshaling sheet (wagon type, tare, equated
length, departure/arrival station, seal no) and a blank note column
for yard staff. Export marshalling doc already had most of these;
import doc now matches. Existing columns kept in place, unchanged.
2026-08-13 08:25:20 +00:00
marshal
f5e98ae67c Merge pull request #1265 from Tria-plc/freight_feature/usermanagement
fix issue
2026-08-12 20:21:26 +03:00
Marshal
e37f1e0807 fix issue 2026-08-12 17:19:06 +00:00
Hagernesh
2d4da8110b eims integration master test complete 2026-08-12 14:12:23 +00:00
Hagernesh
8d53dc17ce docs(eims): confirm signing algorithm and cert format against MoR's guide
Cross-checked our RSA-SHA512 signing and raw-bytes certificate encoding
against MoR's own "Guide to Generating and Using Certificate for E-Invoicing"
(supplied today). Both were previously documented as our best inference from
the Postman collection; the guide names SHA512withRSA explicitly (PKCS#1v1.5,
matching Node's createSign default) and its own worked example certificate is
byte-for-byte the same Subject:/Issuer: + 3-cert PEM chain text-file format
ours is. No behavior change -- the comment now says confirmed, not assumed.

Field order, section names, date format and the {request, signature,
certificate} envelope in the guide's worked example all match our mapper
exactly (order doesn't matter per the guide, but it's a further concordance
check). The one guide/live disagreement -- its example shows "NatureOfSupplies":
"Goods" where our actual 400 SCHEMA ERROR demanded lowercase "goods"/"service"
-- is left as-is: the live, machine-generated schema error outranks a static
doc example that may predate a schema change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 14:08:51 +00:00
Hagernesh
5c2afe3454 fix(notifications): guard emitNew/emitUnreadCount against no WS server
@WebSocketServer() only wires `server` once the WS adapter attaches to a
running HTTP listener. It never does under NestFactory.createApplicationContext
(scripts, one-off jobs) -- confirmed live tonight, when the EIMS self-test
registration's failure alert crashed with "Cannot read properties of null
(reading 'to')" instead of just logging that no socket was available.

The registration result itself was unaffected (postSigned already resolved,
the EimsApiException was correctly re-thrown), but the crash happened inside
an await'd call in the same chain -- in a context where it wasn't caught, it
would have masked whatever result the caller actually cared about.

Both push methods now skip and log at debug level when no server is attached,
since the notification row is already persisted by the time they're called --
a missing socket just means "no live push this time", not a reason to lose
the caller's own outcome. `server` drops its `!` non-null assertion to match.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 14:08:51 +00:00
marshal
50e7ecc9eb Merge pull request #1262 from Tria-plc/freight_feature/usermanagement
feat: fuel surcharge per lane and cargo type
2026-08-12 16:49:27 +03:00
Marshal
ff3cee12e3 feat: fuel surcharge per lane and cargo type 2026-08-12 13:47:53 +00:00
marshal
c93a6f8332 Merge pull request #1261 from Tria-plc/freight_feature/usermanagement
baseLiters
2026-08-12 16:30:33 +03:00
Marshal
dd39c2be7c baseLiters 2026-08-12 13:29:31 +00:00
Nathnael Wondisha
494b7aeca6 Merge pull request #1260 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-12 16:19:23 +03:00
Nathnael
5a856027af feat: add email and password 2026-08-12 12:28:37 +00:00
Nathnael
0f1bac8080 feat(freight-api): add non-PII auth context to request log line 2026-08-12 12:28:37 +00:00
Marshal
ddcdcab518 merge conflict 2026-08-12 11:24:22 +00:00
Marshal
08c8b52f85 feat(portal): show payer account note and train number on booking windows 2026-08-12 11:23:19 +00:00
Marshal
f882104ed3 fix(train-scheduling): move loose wagons and locomotives on train merge 2026-08-12 11:23:10 +00:00
Marshal
3dbda745dd feat(contracts): lazily expire lapsed contracts and price fuel surcharge 2026-08-12 11:23:04 +00:00
Marshal
a02d24806b feat(rule-engine): add fuel surcharge rate trigger and cargo flag 2026-08-12 11:22:51 +00:00
Stephanos A.
56da01dc4c Merge pull request #1257 from Tria-plc/alpha
Backoffice build issue resolution
2026-08-12 13:50:44 +03:00
Stephanos A
057d68709b Backoffice build issue resolution 2026-08-12 13:44:52 +03:00
Nathnael Wondisha
f6be3f4e32 Merge pull request #1255 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-12 13:23:29 +03:00
Stephanos A.
ec2b381870 Merge pull request #1256 from Tria-plc/alpha
Overall report and segment tariff override updates
2026-08-12 13:23:00 +03:00
ghost2023
2a816912fc fix(freight-permissions): split company stamp from per-officer teeter permission 2026-08-12 13:18:29 +03:00
Stephanos A
9d19801535 Overall report and segment tariff override updates 2026-08-12 13:11:24 +03:00
ghost2023
02a264930b fix: consolidate stamp settings into single company stamp page 2026-08-12 13:04:18 +03:00
Nathnael
068ee49a9f style: invoice 2026-08-12 09:33:21 +00:00
Nathnael
bd9f7f354a feat(freight-api): enrich canonical request log line
Emit the request line as raw JSON on stdout (level/time/logger as fields)
instead of through Nest's console logger, whose prefix made it unparsable.

Collect data points via logCtx at the flow chokepoints: BaseRepository
writes (status changes, creates, deletes), invoice transitions, payment
intent lifecycle + outbound payment-service calls, booking/contract entry
state, review-note reasons, signatures and OTP verify outcomes.
2026-08-12 09:31:31 +00:00
Marshal
4efd65c105 feat: key bulk templates by trade direction
Bulk contract templates are now unique per (cargo type, trade direction,
customs option) instead of (cargo type, customs option). Intercity is
domestic and crosses no border, so it carries no customs variant:
with_customs stays null there, enforced by a check constraint.

Contract resolution already passed the trade direction through but the
bulk lookup dropped it, so one template served all three directions.

Container templates are unchanged — cargo_type_id is null on those rows,
which keeps them out of both the new index and the constraint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 09:20:28 +00:00
Nathnael Wondisha
8438a1ad5d Merge pull request #1251 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-12 11:42:35 +03:00
Nathnael
879f0b890d fix: file size limit 2026-08-12 08:42:16 +00:00
Nathnael
abeb296157 fix: file upload seeder 2026-08-12 08:39:54 +00:00
Roba Boru
5249441422 Merge branch 'dev' of https://github.com/Tria-plc/edr-platform into feature/report 2026-08-12 11:27:05 +03:00
Nathnael
2a3a231665 fix: auto select ethiopian when chosing the coop option 2026-08-12 08:25:39 +00:00
Roba Boru
bdcdb4f047 Added financial report 2026-08-12 11:24:12 +03:00
Nathnael
85bdaa4afb Merge branch 'dev' into freight/nati-2 2026-08-12 08:03:10 +00:00
Marshal
86979afccd fix issue 2026-08-12 07:57:20 +00:00
Nathnael
03e498d6e8 fixes 2026-08-12 07:53:05 +00:00
Marshal
bc7790392c fix issue 2026-08-12 07:49:31 +00:00
Marshal
4b8fea2d76 chore: update package overrides in pnpm-workspace.yaml for dependencies 2026-08-12 07:17:13 +00:00
Nathnael
d4767e0d06 fix: an issue 2026-08-12 07:12:04 +00:00
Marshal
6434bb266c Merge branch 'dev' 2026-08-12 06:44:30 +00:00
marshalyordanos
5da36eb128 feat: add wagon usage computation and maintenance logging features
- Implemented  utility to calculate wagon usage metrics for train schedules.
- Created  for sending wagons to maintenance with optional notes.
- Added unit tests for train builder maintenance functionalities, including formatting train run labels and building maintenance notes.
- Developed  component for merging train schedules with detailed previews and reasons for merging.
- Introduced  component for selecting wagons with search functionality and selection limits.
- Created  for displaying and filtering audit logs, including detailed views of individual log entries.
- Added  for handling API interactions related to audit logs, including fetching logs and entity types.
2026-08-12 09:36:50 +03:00
Nathnael Wondisha
08eebd21a2 Merge pull request #1242 from Tria-plc/freight/nati-2
feat(freight-api): seal EDR side of contracts with the one global stamp
2026-08-12 06:31:12 +03:00
ghost2023
a603807e8e feat(freight-api): seal EDR side of contracts with the one global stamp 2026-08-12 06:26:46 +03:00
marshalyordanos
35e5404b41 Refactor code structure for improved readability and maintainability 2026-08-11 19:36:00 +03:00
Nathnael Wondisha
13dca1a287 Merge pull request #1241 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-11 17:47:26 +03:00
ghost2023
e52d666647 feat(freight-api): persist eTrade manager phone in identity 2026-08-11 17:41:06 +03:00