"use client"; import Link from "next/link"; import MuiLink from "@mui/material/Link"; import { isWorkbenchTicketNo, normalizeTargetDateForLink } from "./traceDocLinkUtils"; type DocLinkProps = { kind: "jo" | "po" | "pick" | "workbench" | "jodetail"; code: string; id?: number | null; consoCode?: string; ticketNo?: string; targetDate?: string; /** Finished Good Record tab on /doworkbench (default: 3 = all). */ workbenchTab?: number; /** Completed JO pick record tab on /jodetail (default: 1 = complete records). */ jodetailTab?: number; /** Open in a new browser tab (used for links inside the flow graph). */ openInNewTab?: boolean; }; const stopGraphEvent = (e: React.MouseEvent) => { e.stopPropagation(); }; /** FP-MTMS Version Checklist | Functions Ref. No. 16 | v1.0.1 | 2026-07-19 */ const ItemTracingDocLink: React.FC = ({ kind, code, id, consoCode, ticketNo, targetDate, workbenchTab = 3, jodetailTab = 1, openInNewTab = false, }) => { if (!code?.trim()) return <>—; const linkTargetDate = normalizeTargetDateForLink(targetDate); let href = "#"; if (kind === "jo" && id) href = `/jo/edit?id=${id}`; else if (kind === "po" && id) href = `/po/edit?id=${id}`; else if (kind === "workbench" && ticketNo?.trim()) { const params = new URLSearchParams(); params.set("tab", String(workbenchTab)); params.set("ticketNo", ticketNo.trim()); if (linkTargetDate) params.set("targetDate", linkTargetDate); // Only Item Tracing deep-links should auto-open detail (not DO finish redirect). params.set("openDetail", "1"); href = `/doworkbench?${params.toString()}`; } else if (kind === "jodetail" && (consoCode || code)) { const params = new URLSearchParams(); params.set("tab", String(jodetailTab)); // Prefer PI-* pick order code for jodetail search; consoCode may be PICK-*. params.set("pickOrderCode", (code || consoCode || "").trim()); if (linkTargetDate) params.set("targetDate", linkTargetDate); params.set("openDetail", "1"); href = `/jodetail?${params.toString()}`; } else if (kind === "pick") { // /pickOrder/detail?consoCode=… is retired — only link when we have a TI-* workbench ticket. const workbenchTicket = [ticketNo, consoCode, code] .map((v) => (v ?? "").trim()) .find(isWorkbenchTicketNo); if (workbenchTicket) { const params = new URLSearchParams(); params.set("tab", String(workbenchTab)); params.set("ticketNo", workbenchTicket); if (linkTargetDate) params.set("targetDate", linkTargetDate); params.set("openDetail", "1"); href = `/doworkbench?${params.toString()}`; } else { return <>{code}; } } else { return <>{code}; } return ( {code} ); }; export default ItemTracingDocLink;