diff --git a/apps/edr-freight-web/portal/src/pages/MyPortalPage/components/UpcomingWindowsSection.tsx b/apps/edr-freight-web/portal/src/pages/MyPortalPage/components/UpcomingWindowsSection.tsx index c4bb03ed6..556a96282 100644 --- a/apps/edr-freight-web/portal/src/pages/MyPortalPage/components/UpcomingWindowsSection.tsx +++ b/apps/edr-freight-web/portal/src/pages/MyPortalPage/components/UpcomingWindowsSection.tsx @@ -321,6 +321,19 @@ export const UpcomingWindowsSection = memo(function UpcomingWindowsSection({ ))} + {w.trainNumber && ( + + Train {w.trainNumber} + + )} {w.reference && ( - {windowLabel(w)} · Departs {fmtDay(w.departureDate)} + {windowLabel(w)} · Departs {fmtDay(w.departureDate)},{" "} + {fmtTime(w.departureDate)} {(() => { diff --git a/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/BookingPaymentPanel.tsx b/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/BookingPaymentPanel.tsx index 710c6b40f..0f691d6ea 100644 --- a/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/BookingPaymentPanel.tsx +++ b/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/BookingPaymentPanel.tsx @@ -18,6 +18,7 @@ import { invoicesService, type PortalInvoice } from "@/services/invoices.service import { InvoiceStatusBadge, titleCase } from "@/pages/billing/invoice-ui"; import { paymentStatusLabel } from "@/pages/bookings/booking-display"; import { isUsdOfflineBooking } from "@/pages/bookings/payments/offline-payment"; +import { PayerAccountNote } from "@/pages/bookings/payments/PayerAccountNote"; import { payWindowState } from "@/pages/bookings/payments/payment-drain"; import { PaymentProcessingNotice } from "@/pages/bookings/payments/PaymentProcessingNotice"; import { saveBlob } from "@/utils/download"; @@ -321,6 +322,7 @@ export function BookingPaymentPanel({ onPay={offlineUsd ? undefined : onPay} paying={paying} /> + {!paid && } {showConsolidationNote && ( This shipment shares a wagon with a consolidation partner — both diff --git a/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/PaymentMethodModal.tsx b/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/PaymentMethodModal.tsx index f4f1c7c3c..00c6bdd7c 100644 --- a/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/PaymentMethodModal.tsx +++ b/apps/edr-freight-web/portal/src/pages/bookings/BookingDetailPage/components/PaymentMethodModal.tsx @@ -13,6 +13,7 @@ import { Check, Landmark, ShieldCheck } from "lucide-react"; import { useEffect, useMemo, useState } from "react"; import type { InvoicePaymentFlow } from "@/hooks/useInvoicePayment"; +import { PayerAccountNote } from "@/pages/bookings/payments/PayerAccountNote"; import type { PaymentMethod } from "@/services/payments.service"; interface ProviderOption { @@ -306,6 +307,8 @@ export function PaymentMethodModal({ )} + + This page updates automatically once CBE confirms your payment. @@ -449,6 +452,8 @@ export function PaymentMethodModal({ )} + + {/* Provider options */} diff --git a/apps/edr-freight-web/portal/src/pages/bookings/payments/PayerAccountNote.tsx b/apps/edr-freight-web/portal/src/pages/bookings/payments/PayerAccountNote.tsx new file mode 100644 index 000000000..73bd4962f --- /dev/null +++ b/apps/edr-freight-web/portal/src/pages/bookings/payments/PayerAccountNote.tsx @@ -0,0 +1,39 @@ +import { Box, Text } from "@mantine/core"; + +import useAuth from "@/hooks/useAuth"; + +/** + * Red payer-identity warning shown wherever the customer is about to pay: + * the transfer must come from a bank account held in the company's registered + * name, otherwise Finance will not recognize the payment as paid. + */ +export function PayerAccountNote() { + const { company } = useAuth(); + const name = company?.company?.name; + + return ( + + + Pay only from a bank account registered under your company name + {name ? ( + <> + {" — "} + + {name} + + + ) : null} + . A payment sent from an account under any other name will not be + recognized as paid. + + + ); +} diff --git a/apps/edr-freight-web/portal/src/services/bookings.service.ts b/apps/edr-freight-web/portal/src/services/bookings.service.ts index cad07b0c6..b196ed968 100644 --- a/apps/edr-freight-web/portal/src/services/bookings.service.ts +++ b/apps/edr-freight-web/portal/src/services/bookings.service.ts @@ -77,6 +77,8 @@ export interface MyBookingWindow { scheduleId: string; /** Train schedule reference (e.g. TS-2026-000123), shown on the window card. */ reference: string | null; + /** Operational run number (e.g. 8001 import / 8002 export), when staff set one. */ + trainNumber: string | null; /** * The customer's active contract on this lane, when they hold one — enables * "Book now" to target it. Null for lanes they have no contract on.