|
|
|
@@ -10,7 +10,7 @@ import { |
|
|
|
Stack, |
|
|
|
Typography, |
|
|
|
} from "@mui/material"; |
|
|
|
import { useCallback, useEffect, useMemo, useState } from "react"; |
|
|
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react"; |
|
|
|
import ReactQrCodeScanner, { |
|
|
|
ScannerConfig, |
|
|
|
} from "../ReactQrCodeScanner/ReactQrCodeScanner"; |
|
|
|
@@ -20,7 +20,7 @@ import { |
|
|
|
import { QrCodeInfo } from "@/app/api/qrcode"; |
|
|
|
import { Check, QrCodeScanner, Warehouse } from "@mui/icons-material"; |
|
|
|
import { useTranslation } from "react-i18next"; |
|
|
|
import { useSearchParams } from "next/navigation"; |
|
|
|
import { usePathname, useRouter, useSearchParams } from "next/navigation"; |
|
|
|
import { useQrCodeScannerContext } from "../QrCodeScannerProvider/QrCodeScannerProvider"; |
|
|
|
import PutAwayModal from "./PutAwayModal"; |
|
|
|
import { PutAwayRecord } from "."; |
|
|
|
@@ -35,6 +35,9 @@ type ScanStatusType = "pending" | "scanning" | "retry"; |
|
|
|
const PutAwayScan: React.FC<Props> = ({ warehouse }) => { |
|
|
|
const { t } = useTranslation("putAway"); |
|
|
|
const searchParams = useSearchParams(); |
|
|
|
const pathname = usePathname(); |
|
|
|
const router = useRouter(); |
|
|
|
const deepLinkConsumedRef = useRef(false); |
|
|
|
|
|
|
|
const [scanDisplay, setScanDisplay] = useState<ScanStatusType>("pending"); |
|
|
|
const [openPutAwayModal, setOpenPutAwayModal] = useState(false); |
|
|
|
@@ -105,11 +108,18 @@ const PutAwayScan: React.FC<Props> = ({ warehouse }) => { |
|
|
|
|
|
|
|
/** Deep link from nav alert: /putAway?stockInLineId=… */ |
|
|
|
useEffect(() => { |
|
|
|
if (!stockInLineIdQ) return; |
|
|
|
if (!stockInLineIdQ || deepLinkConsumedRef.current) return; |
|
|
|
const id = parseInt(stockInLineIdQ, 10); |
|
|
|
if (!Number.isFinite(id) || id <= 0) return; |
|
|
|
deepLinkConsumedRef.current = true; |
|
|
|
setScannedSilId((prev) => (prev === id ? prev : id)); |
|
|
|
}, [stockInLineIdQ]); |
|
|
|
|
|
|
|
// Consume deep link once, then remove it from URL |
|
|
|
const nextParams = new URLSearchParams(searchParams.toString()); |
|
|
|
nextParams.delete("stockInLineId"); |
|
|
|
const nextQuery = nextParams.toString(); |
|
|
|
router.replace(nextQuery ? `${pathname}?${nextQuery}` : pathname); |
|
|
|
}, [stockInLineIdQ, pathname, router, searchParams]); |
|
|
|
|
|
|
|
// Get Scanned Values |
|
|
|
useEffect(() => { |
|
|
|
|