Commit Graph

90 Commits

Author SHA1 Message Date
Hagernesh
4786c896b5 feat(last-mile): customer-signed LM contract gates the advance invoice
Approval now snapshots the rate estimate and generates a last-mile
contract instead of invoicing immediately. The customer picks a delivery
date on the confirm form, then reviews and signs the contract in the
portal (saved signature or drawn); the signed PDF is stored as
LM_<CustomerName>.pdf and only then is the advance invoice issued.
Backoffice shows signature status and the contract download.
2026-08-06 07:11:23 +00:00
Hagernesh
1f4d659ffb Last mile confirmation request , approval, payment Feature 2026-08-05 20:01:48 +00:00
Marshal
b7dcc1bf0a feat(billing): add PAYMENT_PROCESSING invoice status on payment success redirect (all except CBE bill) 2026-08-05 12:59:37 +00:00
Hagernesh
1998c74b9e fix(freight-portal): add missing /api prefix to bulk truck upload endpoint
BulkTruckUploadModal hand-built its POST URL and omitted the global
/api prefix every other booking call uses, causing a 404. Added
CUSTOMER_TRUCKS_BULK to URL_CONSTANTS.BOOKINGS and switched the modal
to use it.
2026-08-01 08:42:18 +00:00
Nathnael
97bfe95ec3 feat(payment): integrate CAC Bank OTP payments into freight flows
CAC Bank is an OTP debit with no redirect and no webhook: initiate SMSes a
code to the payer's mobile, and the charge only settles when that code is
confirmed. The payment service already spoke it (passenger uses it); the
freight side had the enum values but none of the flow.

API:
- PaymentClientService.confirmOtp forwards the code to
  POST /payments/intents/:id/confirm, mapping 400/404 to BadRequest so a
  mistyped code stays retryable instead of surfacing as a gateway failure.
- PaymentService.confirmOtp is keyed by the LOCAL intent id (the invoice's
  paymentId) rather than the domain reference, so the right invoice settles
  when several share a booking. On success billing settles the invoice.
- payInvoice rejects CAC_BANK without payerAccount before calling the
  gateway, and no longer runs the demo auto-settle for a COLLECT_OTP intent
  (it is not paid until the payer confirms).
- POST /billing/my-invoices/:id/confirm — ownership-checked, and since
  warehouse fee invoices are central invoices it covers those too.

Portal:
- useInvoicePayment owns the whole flow (initiate, redirect-or-OTP, confirm)
  and replaces the five near-identical pay mutations at the call sites.
- PaymentMethodModal gains the CAC Bank option, the payer mobile field, and
  the OTP step. Click-outside is disabled there so a stray click cannot drop
  the payer out of a live OTP window.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 08:11:23 +00:00
Marshal
b17a72c280 New Transit Agents admin table (name, valid-from/to, active/suspended, validity badge) — DJ assign step now picks from it, active+valid only. 2026-07-29 05:38:35 +00:00
Marshal
2429f6b629 implement contract cancellation feature and update contract statuses
- Added functionality to cancel contracts, allowing users to provide a reason for cancellation.
- Updated contract statuses to include SUSPENDED and changed CLOSED to COMPLETED.
- Enhanced the UI to reflect the new cancellation option and updated messaging for contract statuses.
- Refactored contract booking actions to accommodate changes in booking logic for ONE_TIME and GENERAL contracts.
- Removed clearance document management from the contract detail page, as it is now handled per booking.
- Introduced a SQL script to reset bookings and train schedules for development purposes.
2026-07-28 05:02:58 +00:00
Marshal
5e10c97294 add dispute functionality for contract duty and implement collection dates 2026-07-26 16:58:51 +00:00
Nathnael
82cb5508cc chore: rm the active company profile 2026-07-22 06:43:05 +00:00
Nathnael
6420c72e89 feat(auth): implement staff-triggered password-reset links 2026-07-20 11:20:50 +00:00
Nathnael
e2f42136a8 fix: add password form to account 2026-07-16 12:37:52 +00:00
Nathnael
f71bbbf782 feat: setup account page for customer and centeralize the otps and phone usages to use the iam user 2026-07-16 12:08:45 +00:00
Marshal
fe29b38377 fix issue 2026-07-16 01:05:57 +00:00
Marshal
b50075dc83 general contrat 2026-07-10 17:57:27 +00:00
Nathnael
e5fce529fe feat: add poa to the changes approval 2026-07-10 08:45:39 +00:00
Nathnael
e04b513b8f feat: password reset flow 2026-07-09 08:50:08 +00:00
Nathnael
8947ab8614 feat: fix the settings preview for the business licence and changes request to the approval 2026-07-08 10:42:00 +00:00
Hagernesh
5954f9a349 Merge remote-tracking branch 'origin/dev' into CutomerTruckAssign
:qa!
2026-07-04 09:53:28 +00:00
Nathnael
1d8fcaa4f1 Merge branch 'dev' into freight/feat/fixes-v1 2026-07-04 09:28:05 +00:00
Hagernesh
5b4f624188 Per truck exit and per truck grn 2026-07-04 08:42:57 +00:00
Hagernesh Tadesse
493af38ba2 Merge pull request #455 from Tria-plc/naming_convention
Handover customer sign
2026-07-04 10:04:23 +03:00
Nathnael
2f6f06b7c4 feat: add check validity to the user signup 2026-07-04 06:47:20 +00:00
Hagernesh
18f47481d7 Handover customer sign 2026-07-04 06:31:23 +00:00
Marshal
7eae1a920e Add contract booking windows feature 2026-07-03 15:01:16 +00:00
Marshal
35cb20da0b feat: implement 20ft container weight-pairing validation
- Added ContainerValidationService to handle 20ft weight-pairing logic.
- Introduced validate20ftWeightPairing utility function to check weight differences.
- Updated BookingPricingService to include overweight line details and pairing errors in price response.
- Enhanced BookingTransitionService to reject submissions with unpairable 20ft containers.
- Created ShipmentValidation interface for pre-submit validation of container contracts.
- Integrated shipment validation into the contract booking process, providing warnings for overweight containers and hard blocks for pairing errors.
- Updated front-end components to display validation results and prevent submission when errors are present.
2026-07-03 09:26:27 +00:00
Marshal
56de90892d Add booking window management and locomotive scheduling features
- Implemented migration to release stuck assigned locomotives.
- Added schedule window phases to train schedules.
- Created booking batch offers table for partial capacity bookings.
- Developed BookingSplitService to handle partial booking offers and splits.
- Introduced BookingWindowService to manage booking window lifecycle and transitions.
- Added BookingBatchOffer entity to represent offers made during booking splits.
- Enhanced locomotive options with warnings for scheduling.
- Created UpcomingWindowsSection component to display upcoming booking windows.
2026-07-03 03:36:06 +00:00
Marshal
8d056c5014 finalize gl flow for import 2026-07-02 18:15:16 +00:00
Marshal
dd47068a4b finilize gl flow for export 2026-07-02 17:55:59 +00:00
marshal
7b3f9094ed changes 2026-07-02 13:02:33 +03:00
marshal
9c18d086d7 changes 2026-07-01 20:55:17 +03:00
ghost2023
1754c18ede fix: apiconfig 2026-07-01 14:46:24 +03:00
ghost2023
fbda15bac8 Merge branch 'dev' into freight/feat/invoice 2026-07-01 14:40:58 +03:00
marshal
612df8daff Enhance clearance milestone management and introduce new contract actions
- Added new milestones for 'Transit Permit Uploaded' and 'Export Transport Document Issued' in the clearance milestone catalog.
- Implemented methods in ClearanceMilestoneService to skip milestones and complete them with metadata.
- Updated ContractBookingService to check boundary conditions before booking creation.
- Introduced new endpoints in ContractsController for uploading customs declarations, advising duty, and handling various document uploads.
- Enhanced the UI to support new clearance actions and display relevant components based on milestone statuses.
2026-07-01 10:20:16 +03:00
Nathnael
e5aab84f51 feat: ui changes and pdf setup on the clients 2026-07-01 06:56:58 +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
38db9a4177 Delivery approval customer handover signature 2026-06-30 17:05:53 +03:00
hagiye
98d1065f11 Merge branch 'dev' of github.com:Tria-plc/edr-platform into importhandover 2026-06-30 16:53:54 +03:00
hagiye
156747f42f Approve delivery button for customer to sign or acknowlegde delivery 2026-06-30 16:48:08 +03:00
ghost2023
9619fbd9b0 fix: the hardcoded api url 2026-06-30 13:58:57 +03:00
ghost2023
fdb77a7036 fix: testing the env 2026-06-30 13:49:52 +03:00
ghost2023
0f762172bf fix: api url backoffice 2026-06-30 09:19:32 +03:00
hagiye
831ac59a8e Merge branch 'dev' of github.com:Tria-plc/edr-platform into importhandover 2026-06-30 07:20:10 +03:00
hagiye
9f5c22c1ee Goods recieved notes and Booking delivery 2026-06-30 07:19:12 +03:00
yaschalew
1193e2bfa9 fix commit 2026-06-29 18:35:51 +03:00
Nathnael
6d40d185d6 feat: setup the invoice page in the portal 2026-06-29 13:54:14 +00:00
marshal
9fe90c8ef7 merge conflict 2026-06-29 12:50:47 +03:00
Marshal
0f7cac2b68 add booking request functionality for GENERAL customs contracts
- Create migration for booking_requests table with necessary fields and indexes.
- Implement BookingRequestRepository for database operations related to booking requests.
- Develop BookingRequestService to handle business logic for submitting, accepting, rejecting, and canceling booking requests.
- Create DTOs for creating booking requests and reviewing them.
- Define BookingRequest entity to map to the booking_requests table.
- Add UI components for managing shipment requests, including detail and list pages.
- Implement OperationDatePicker component for selecting available shipment days.
2026-06-29 09:30:44 +00:00
Marshal
11c7f1bb74 add quantity cap for GENERAL contracts and implement capacity tracking
- Updated ContractClearanceService and ContractsController to remove region parameter from queue method.
- Enhanced ContractsRepository to attach contract files for download and added attachContractFiles method.
- Modified ContractsService to persist cargo scope with quantity cap based on contract kind.
- Introduced quantityCap field in CreateContractCargoScopeDto and ContractCargoScope entity.
- Implemented capacity tracking in the frontend with ContractCapacityNotice component to display remaining bookable quantities.
- Updated various components and services to support new capacity features, including hooks and API calls.
- Added migration to include quantity_cap column in contract_cargo_scope table.
2026-06-28 17:32:18 +00:00
Marshal
e1d54746c2 add GL operations for customs risk assignment, duty advising, and incident reporting 2026-06-28 16:09:45 +00:00
Marshal
7a2a55d94b Enhance contract clearance features with review timestamps and staff identifiers; improve file handling in controllers and views for better user experience. 2026-06-27 19:30:42 +00:00