Commit Graph

55 Commits

Author SHA1 Message Date
Nathnael
d6e349f329 feat(companies): onboard co-operative unions and farms
They hold a TIN but no business licence, so there is no eTrade record to look
their registration up in. A checkbox on the first wizard step marks them, and
everything that assumed a trade licence bends around it:

- The company step replaces the eTrade lookup with typed registration details
  — name, region, zone, woreda, kebele, house number — required exactly because
  they are now on screen. applyEtradeSourcedFields skips the lookup rather than
  failing it, so what the customer sends is what is stored.
- No freight-forwarder role. Forwarding is licensed work, so the option is not
  offered, and the API refuses it at start-onboarding and at every later
  role-add rather than letting approval fail on a document they cannot produce.
- No per-role business-licence upload, client-side or in the completion gate.
- Their own document set (company_onboarding_documents_cooperative) merges on
  top of the nationality one, admin-managed like every other set. Nationality
  wins a fileKey collision so no slot renders twice, and the DARS paper is not
  injected into it — the set it merges onto already carries one.
- The owner is typed in full; with no eTrade manager on file the licence
  comparison reports "nothing to compare against", which backoffice now
  explains rather than leaving as a bare dash.

Stored as an attributes flag, not a column: everything it changes is
behavioural, and nothing queries or joins on it.
2026-08-11 12:54:51 +00:00
Nathnael
92371f17da fix: the position based gl gate on sidbear 2026-08-10 18:45:54 +00: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
10af12bfc6 fix: theme toggle 2026-08-10 12:00:29 +03:00
Hagernesh
cde67e4c6a fix(freight): correct direct CAS lines and sync inventory on schedule load
End-to-end testing of the direct truck-to-train flow surfaced two defects
in the carriage acceptance sheet's no-wagon fallback. Container numbers
were read from freight.containers, which only gains rows at allocation,
so a direct booking's declared containers never appeared; they are read
from booking_container_units now, seal numbers included. The weight used
bulkTotalWeightTons alone, which is null for CONTAINER and PER_TON bulk
bookings, printing 0.00 — cargoTotalWeightVgm is the real weight there
and only holds an item count for PER_ITEM break-bulk.

Separately, warehouse cargo can be loaded from the Load-to-Train queue or
from the schedule, but loading from the schedule never advanced
warehouse_inventory. The booking went IN_TRANSIT while its cargo still
read as sitting in the warehouse — the same inconsistency that produced
the spurious dispatch block. loadBooking now moves the inventory to
LOADED in the same transaction, and no-ops for direct bookings.
2026-08-09 16:05:59 +00:00
Nathnael Wondisha
12eb07752e Merge pull request #1192 from Tria-plc/freight/nati-2
Freight/nati 2
2026-08-08 20:38:37 +03:00
Marshal
4b8119fd3c chnages 2026-08-08 14:02:58 +00:00
Nathnael
d337fa0d85 fix(freight:backoffice): remove coarse fleet.view/fleet.manage/admin fallbacks
Now that every fleet-resource page and settings page has its own
dedicated permission key (previous commit), the broad fallbacks are
redundant and over-grant: anyone holding only fleet:view/fleet:manage
or admin could reach every page in that whole section, not just one.

Removed fleet.view fallback from: Routes, Locomotives, Train Builder,
Wagons, Containers, Cargoes, Compliance & Alerts, Procurement, and the
Overview dashboard's Fleet KPI tab.

Removed fleet.manage fallback from: canFleetAction() (per-resource
fleet CRUD, lib/permissions.ts) and TrainBuilderDetailPage's wagon-
assignment check. Hard-delete already had no such fallback.

Removed admin fallback from: File settings, Dropdown settings,
Contract templates, Portal content, Trade access, Exchange rate.

Left untouched: Incidents (sole gate is fleet.view — no dedicated
edr_freight_app:incidents:* key exists on the backend yet, so there's
nothing to fall back FROM; removing it would make the page
super-admin-only).

Access-narrowing change: anyone currently relying on the coarse grant
without also holding the specific resource/settings key will lose
access to these pages until roles are updated to grant the specific
keys directly. Audit role assignments before this deploys.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 13:59:06 +00:00
Marshal
a42d32c27c feat(billing): USD offline bank-transfer payments 2026-08-08 13:37:05 +00:00
Nathnael
41e8c08ba3 feat: WIP Contnet managemtn 2026-08-08 09:37:28 +00:00
Nathnael
ee25de8817 fix(freight:backoffice): wire dedicated permission keys instead of broad fallbacks
Compliance & Alerts, Procurement, File settings, Dropdown settings,
Trade access, and Exchange rate all fell back to a broad permission
(fleet:view or admin) even though a dedicated key already existed in
FREIGHT_PERMS — meaning granting one of these pages meant granting
several unrelated ones too. Each now checks its own key first, with
the broad permission kept as a fallback for existing role grants.

Incidents left as-is: no dedicated edr_freight_app:incidents:* key
exists yet on the backend.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 09:36:51 +00:00
Marshal
a05753f4a6 Merge branch 'dev' of github.com:Tria-plc/edr-platform into freight_feature/usermanagement
# Conflicts:
#	apps/edr-freight-web/backoffice/src/App.tsx
2026-08-07 23:55:30 +00:00
Nathnael
1e9149ce00 feat: better navigation in backoffice 2026-08-07 12:24:30 +00:00
Nathnael
595c165820 feat: implement audit logs 2026-08-05 14:17:00 +00:00
Marshal
ea9df9abbe Add a minimal payment mock server for end-to-end testing 2026-08-01 19:58:17 +00:00
Marshal
773456c256 refactor DocReviewAlertButton and FreightDashboardHeader comments for clarity and accuracy 2026-07-27 05:07:09 +00:00
Marshal
fde5e6de4b add company stamp upload functionality for contract signing
- Introduced StampUpload component for uploading company stamp images.
- Integrated stamp upload in contract signing modal, supporting PNG and JPG formats.
- Implemented validation for file type and size (max 5 MB).
- Added visual feedback for drag-and-drop functionality.
- Updated contract-related pages to handle duplicate contract alerts and pricing notices.
- Enhanced contract expiry management with a nightly sweep service.
- Added unit tests for new features and updated existing tests for contract handling.
2026-07-25 17:14:58 +00:00
ghost2023
bd81bbfc2c style: sidebar improvmetn 2026-07-17 11:15:58 +03:00
Nathnael
d1652c1b96 fix: sidebar scrollbar 2026-07-09 07:04:31 +00:00
Marshal
8bd00ea78a enhance user management and booking features with permissions and real-time updates 2026-07-06 17:15:22 +00:00
Nathnael
439e1ec29e feat: setup notification to the backoffice 2026-07-06 06:52:09 +00:00
Nathnael
ee335e63ba style: sidebar ui 2026-07-04 08:39:16 +00:00
marshal
ccd5d6de31 Implement contract document download functionality and enhance clearance review status checks
- Added methods to assert clearance reviewable, finalizable, and uploadable statuses in the ContractClearanceService.
- Introduced a new endpoint in ContractsController for downloading contract PDFs.
- Implemented download functionality in the contracts service for both backoffice and portal applications.
- Updated UI components to include download buttons for contract PDFs in relevant pages.
- Enhanced contract request and view pages to support contract document downloads.
2026-07-01 07:27:53 +03:00
hagiye
9719bd02d7 Release Order plus Storage Allocation Rule and fee 2026-06-24 15:27:38 +03:00
hagiye
8ee31789c6 merge conflict fix 2026-06-24 12:31:59 +03:00
hagiye
0255adffe6 changes 2026-06-24 09:56:12 +03:00
Marshal
9d81a2e1ee integrate global logistics staff user into seeder
refactor pricing data seeder to fold surcharge types into rates
update route meta subtitle to remove surcharge types
enhance RuleEngineFormDialog to support conditional field visibility
 remove surcharge types from URL constants and related services
add cargo leaf options query for bulk cargo type selection
update RuleEngineResourcePage to utilize cargo leaf options
modify resources configuration to remove surcharge types
implement migration to fold surcharge types into rates
create utility to derive legacy rate types from new rate structure
2026-06-23 23:15:32 +00:00
yaschalew
7f51f24a77 fix conflict 2026-06-22 14:23:43 +03:00
natib21
b28cf6ae91 fix slip 2026-06-20 14:00:34 +00:00
natib21
28dd7f9c72 last mile 2026-06-20 12:36:13 +00:00
Nathnael
138ac5b47d style:wip dashboard ui revamp 2026-06-20 10:20:38 +00:00
Nathnael
e4955c75de style: revamp the backaoffice shell 2026-06-20 09:25:23 +00:00
hagiye
a8cdbdf386 Warehouse Enhancemendt 2026-06-20 11:49:22 +03:00
hagiye
484ac187a9 warehouse 2026-06-19 17:13:17 +03:00
ghost2023
9caf9bbd59 style: some clean up 2026-06-19 16:24:20 +03:00
marshal
f1dfbbcc3f Replace EDR logo image with Train icon in FreightSidebar 2026-06-19 01:13:52 +03:00
marshal
72b63c319e - Fix shipping line mapping to use ID instead of name in EditBookingPage and NewBookingPage 2026-06-19 01:07:05 +03:00
Marshal
2de3f78fb0 Add payments management features including summary and listing, and integrate with the dashboard 2026-06-17 04:35:43 +00:00
Marshal
052829c7e6 Add freight demo data seeder and permissions management
- Introduced `DemoFreightDataSeeder` to seed demo freight data including wagons, approval rules, and staff users.
- Added `seed:freight-demo` script to `package.json` for easy execution.
- Updated permissions for operations officer and added permission checks in various components.
- Enhanced sidebar and booking actions to respect user permissions.
2026-06-16 15:28:10 +00:00
Marshal
f6c28635bc add 'My signature' menu item to user menu 2026-06-16 14:26:17 +00:00
Marshal
366a335f85 add reusable per-user contract signatures with profile prefill and approval 2026-06-16 13:26:45 +00:00
marshal
a0dbb4ca6f backoffice cleen up 2026-06-16 11:04:36 +03:00
Marshal
d3a479c142 ui fix 2026-06-12 14:21:07 +00:00
marshal
10b011de8f merge conflict 2026-06-10 16:45:45 +03:00
Marshal
0335555892 overview, booking and train scheduling ui 2026-06-10 07:53:15 +00:00
Marshal
2b5a0f4e96 ui design for schedule 2026-06-10 00:12:52 +00:00
marshal
5774d7db9d booking operations and trains scheduling also allocations 2026-06-10 00:48:32 +03:00
hagiye
eda21e22d8 Resolve merge conflicts from Train-Scheduling 2026-06-08 16:51:29 +03:00
hagiye
bffa5020ac wagon types added UI with API integrations 2026-06-07 21:56:33 +03:00
marshal
4993453993 generate contract by the system, add waggon type,fix ui 2026-06-07 01:20:52 +03:00