Commit Graph

4619 Commits

Author SHA1 Message Date
Nathnael
8cf041f494 test(companies): rewrite identity specs around the single subject
fayda-identity covers the two subjects, the passport alternative and the
eTrade owner comparison in place of ~40 general-manager assertions.
poa-delegation drops the poaSameAsOwner waiver case and asserts the opposite:
a forwarder is refused without a delegation letter however it represents
itself.
2026-08-11 11:53:42 +00:00
Nathnael
f611c33722 feat(companies): migrate existing companies off the general manager
Data rescue, not just schema tidying — the order matters:

1. Backfill companies.email from generalManagerEmail before the key is
   stripped, or companies whose only address lived there stop receiving mail.
2. Backfill ownerName/Email/Phone (now required) from owner, GM, contact
   person, then the columns; seed etradeManagerName so existing rows read as
   matching rather than as a false mismatch.
3. Convert poaSameAsOwner: non-forwarders become poaDeclared='no' with their
   poa* details cleared; forwarders become 'yes' and keep them, so they now
   owe a DARS letter they were previously waived.
4. Derive poaDeclared for everyone else.
5. Move drafts off the deleted 'personnel' wizard step.
6. Drop the general_manager_* columns and strip gm*/poaSameAsOwner.

down() restores the column shape only; the stripped values are gone by design.
2026-08-11 11:53:36 +00:00
Nathnael
a1bcdfb692 refactor(companies): one verified identity per company, no general manager
Replaces the owner/general-manager/PoA trio with a single identity whose
subject is the PoA when the company declares one and the owner otherwise.

- Drop the general manager everywhere: entity columns, DTOs, required-field
  list, self-service attributes, gm* identity handling.
- New explicit poaDeclared answer ("yes"/"no") replaces poaSameAsOwner. A
  DARS delegation letter is required iff it is "yes"; a freight forwarder is
  forced to "yes" server-side and gets no waiver.
- Owner name/email/phone become typeable and required, prefilled from the
  eTrade lookup, never falling back to the authenticated account.
- Store eTrade's manager separately (etradeManagerName/Phone) and expose
  ownerMatchesEtrade so backoffice compares the asserted owner against the
  licence instead of against itself.
- Foreign companies satisfy the identity with Fayda or a passport number, on
  whichever subject is verifying (poaPassportNumber added).
- Write companies.email/phone from the owner unconditionally, so a company
  without a Fayda-verified owner still has a notification address.
2026-08-11 11:53:26 +00:00
Abubeker Yasin
e2e1685b62 Merge pull request #1237 from Tria-plc/dev
merge dev to main
2026-08-11 12:06:59 +03:00
marshal
0f501e952c Merge pull request #1238 from Tria-plc/staging
Staging
2026-08-11 12:06:17 +03:00
Hagernesh Tadesse
8cbd67ae59 Merge pull request #1236 from Tria-plc/eims-integration
feat(permissions): grant the director full warehouse authority
2026-08-11 11:55:42 +03:00
marshal
f6cc1206b3 Merge pull request #1235 from Tria-plc/dev
freight
2026-08-11 11:55:10 +03:00
Hagernesh
dac2186c02 feat(permissions): grant the director full warehouse authority
The director position held no warehouse permissions at all. It now
carries the same warehouse set as the chief tier: dashboard, warehouse
/yard/zone CRUD, allocation and fee rule CRUD, the inventory operation
set, inspection reports, interchange documents and fee invoices.
Unlike the dispatcher, the director owns the allocation and fee rules
themselves. The positions seeder backfills existing environments on
boot.
2026-08-11 08:49:41 +00:00
marshal
3bfff81a37 Merge pull request #1234 from Tria-plc/freight_feature/usermanagement
feat(permissions): add granular permissions for train management actions
2026-08-11 11:49:29 +03:00
marshalyordanos
07a120af5e feat(permissions): add granular permissions for train management actions
feat(train-builder): update permissions checks for train actions in UI
feat(contracts): enhance contract view and shipment request pages with new features
test(shipment-preview): add tests for customs clearing logic in booking preview
style(contract-sign-bar): create CSS for fixed sign bar layout
2026-08-11 11:48:16 +03:00
Nathnael
e59e0324e0 Merge branch 'dev' into freight/nati-2 2026-08-11 08:36:21 +00:00
Nathnael
619b183a11 fix: redirect to booking issue fixed 2026-08-11 08:34:15 +00:00
Abubeker Yasin
417acff2f2 Merge pull request #1233 from Tria-plc/alpha
fix: ( payments ) stop reconcile-before-cancel deferring bookings for…
2026-08-11 11:20:52 +03:00
Abubeker Yasin
dc2078dd28 fix: ( payments ) stop reconcile-before-cancel deferring bookings forever 2026-08-11 11:19:39 +03:00
marshal
bcf087883e Merge pull request #1232 from Tria-plc/freight_feature/usermanagement
feat(upload): increase document upload size limits to 50MB across the…
2026-08-11 10:19:37 +03:00
marshalyordanos
ea6eccbf09 feat(upload): increase document upload size limits to 50MB across the application 2026-08-11 09:26:23 +03:00
marshal
39e5878e4f Merge pull request #1225 from Tria-plc/staging
Staging
2026-08-10 23:59:43 +03:00
marshal
d02654c573 Merge pull request #1231 from Tria-plc/dev
Freight
2026-08-10 23:38:06 +03:00
marshal
577390ca6b Merge pull request #1230 from Tria-plc/freight_feature/usermanagement
feat(wagons): enforce wagon availability limits in transfer requests
2026-08-10 23:32:46 +03:00
marshalyordanos
997998dcb2 feat(wagons): enforce wagon availability limits in transfer requests 2026-08-10 23:30:18 +03:00
marshal
cad78ac679 Merge pull request #1229 from Tria-plc/dev
freight
2026-08-10 22:19:42 +03:00
marshal
f51214d117 Merge pull request #1228 from Tria-plc/freight_feature/usermanagement
feat(freight): surface scheduling clock and gate pay during drain
2026-08-10 22:14:44 +03:00
marshalyordanos
c743750ef6 feat(freight): surface scheduling clock and gate pay during drain 2026-08-10 22:14:04 +03:00
marshal
01e4b88788 Merge pull request #1227 from Tria-plc/freight_feature/usermanagement
feat(freight): surface scheduling clock and gate pay during drain
2026-08-10 21:50:06 +03:00
Nathnael Wondisha
3426d9dd50 Merge pull request #1226 from Tria-plc/freight/nati-2
fix: the position based gl gate on sidbear
2026-08-10 21:48:14 +03:00
marshalyordanos
40672e9c41 feat(freight): surface scheduling clock and gate pay during drain 2026-08-10 21:47:28 +03:00
Nathnael
92371f17da fix: the position based gl gate on sidbear 2026-08-10 18:45:54 +00:00
Nathnael Wondisha
1944b9a7c1 Merge pull request #1224 from Tria-plc/dev
to staging
2026-08-10 17:55:04 +03:00
marshal
d3096939e7 Merge pull request #1223 from Tria-plc/freight_feature/usermanagement
fix(freight-backoffice): render wagon transfer reason as sanitized HT…
2026-08-10 17:54:28 +03:00
Nathnael Wondisha
bda72de17c Merge pull request #1222 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-10 17:52:31 +03:00
Nathnael
615f7e6798 feat: add choice to etrade fetcher 2026-08-10 14:49:17 +00:00
Marshal
e29e3ff837 fix(freight-backoffice): render wagon transfer reason as sanitized HTML in a modal 2026-08-10 14:02:13 +00:00
Nathnael
c24c93bcf3 feat: add 11 digit vat 2026-08-10 13:56:25 +00:00
Abubeker Yasin
a7ff8917b9 Merge pull request #1221 from Tria-plc/dev
merge to staging
2026-08-10 15:47:33 +03:00
Abubeker Yasin
ce57be252c Merge pull request #1220 from Tria-plc/alpha
Alpha
2026-08-10 15:45:44 +03:00
Hagernesh Tadesse
bb8a9d4f34 Merge pull request #1219 from Tria-plc/eims-integration
Eims integration
2026-08-10 15:21:59 +03:00
Hagernesh
b701ae3f47 Revert "docs: trim eims.types.ts file header comment"
This reverts commit f4b8dab58d921791b4b3f69e3c9952b6802835cc.
2026-08-10 12:14:18 +00:00
Hagernesh
1b4a317d92 docs: trim eims.types.ts file header comment
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 12:14:18 +00:00
Hagernesh
45715d6838 fix: default DataTable status to success so rows render
status was required with no default; omitting it left the body blank
while the footer (which renders regardless of status) still showed
"Showing 1-N of N". Rows to draw is the common case, so default to
success instead of requiring every caller to pass it explicitly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 12:14:18 +00:00
Hagernesh
bf8eadbc85 fix: portal cannot load last-mile confirmation request
LAST_MILE_REQUESTS URL constants were missing the /api prefix every other
endpoint in URLS.ts carries — all five calls (get, submit, contract
view/document/sign) 404'd against the deployed API, so the departure
notification's confirm link never loaded for the customer.

Also widen GET /last-mile-requests/:id from @BookingStaff to @MixedAudience
with the same ownership check submit()/sign() already use — the confirm
page calls this as its first request, before the customer has done
anything else, so it can't be staff-only.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 12:14:18 +00:00
Abubeker Yasin
8ce6483e26 Merge branch 'dev' into alpha 2026-08-10 14:38:44 +03:00
Abubeker Yasin
a08b097039 Merge pull request #1218 from Tria-plc/main
Main
2026-08-10 14:27:38 +03:00
Abubeker Yasin
0d0887f298 Merge pull request #1217 from Tria-plc/cancelation-fix
recover: ( payment ) recover cancelation fix deleted by malware
2026-08-10 14:26:36 +03:00
Abubeker Yasin
18c47ca4a3 recover: ( payment ) recover cancelation fix deleted by malware 2026-08-10 14:25:14 +03:00
Nathnael Wondisha
b91a7e8a8f Merge pull request #1216 from Tria-plc/freight/nati-2
fix
2026-08-10 12:36:29 +03:00
Nathnael Wondisha
6f9beca27d Merge pull request #1215 from Tria-plc/staging
Staging
2026-08-10 12:35:50 +03:00
ghost2023
c75ed8f149 fix 2026-08-10 12:35:43 +03:00
Nathnael Wondisha
3b4619e1e5 Merge pull request #1214 from Tria-plc/dev
to staging
2026-08-10 12:34:34 +03:00
Nathnael Wondisha
29d472351f Merge pull request #1213 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-10 12:33:07 +03:00
ghost2023
d07d35e438 feat: allow owner to represent company as power of attorney 2026-08-10 12:31:13 +03:00