import { Link } from "react-router"; import { Text } from "@/components/ui/text"; import { formatVendorPortalDateTime, vendorPortalStatusClass, } from "@/domain/vendor-portal/lib/status-helpers"; import type { VendorPortalDispatchDetail } from "@/domain/vendor-portal/types/vendor-portal"; import { DispatchStatusActions } from "@/app/v/[token]/dispatch/_components/dispatch-status-actions"; type DispatchSummaryCardProps = { token: string; data: VendorPortalDispatchDetail; locked: boolean; busy: boolean; onAccept: () => void; onStart: () => void; onComplete: () => void; onRequestCancel: () => void; }; export function DispatchSummaryCard({ token, data, locked, busy, onAccept, onStart, onComplete, onRequestCancel, }: DispatchSummaryCardProps) { return ( <> ← Back to dispatches
{data.dispatchNumber}
{data.workOrder?.workerOrderTitle}
{data.status}
{data.workOrder != null && Boolean(data.workOrder.internalWONumber) && (
WO # {data.workOrder.internalWONumber}
)} {Boolean(data.poNumber) && (
PO # {data.poNumber}
)} {data.nteAmount != null && (
NTE ${Number(data.nteAmount).toFixed(2)}
)}
Invoice {data.invoiceStatus || "Not Submitted"} {data.invoiceNumber ? ` · ${data.invoiceNumber}` : ""}
Payment {data.paymentStatus || "Unavailable"}
{Boolean(data.scheduledDate) && (
Scheduled {formatVendorPortalDateTime(data.scheduledDate)}
)}
{data.location != null && ( <> Location
{data.location.name}
{[ data.location.address, data.location.city, data.location.state, data.location.zipCode, ] .filter(Boolean) .join(", ")}
)} {Boolean(data.description || data.workOrder?.description) && ( <> Description
{data.description || data.workOrder?.description}
)}
); }