"use client"; import { fetchPoWithStockInLines, PoResult, PurchaseOrderLine, StockInLine, } from "@/app/api/po"; import { Box, Button, Collapse, Grid, IconButton, Paper, Stack, Tab, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Tabs, TabsProps, TextField, Typography, } from "@mui/material"; import { useTranslation } from "react-i18next"; // import InputDataGrid, { TableRow } from "../InputDataGrid/InputDataGrid"; import { GridColDef, GridRowId, GridRowModel, useGridApiRef, } from "@mui/x-data-grid"; import { checkPolAndCompletePo, fetchStockInLineInfo, PurchaseQcResult, testFetch, } from "@/app/api/po/actions"; import { use, useCallback, useContext, useEffect, useMemo, useState, } from "react"; import { FormProvider, useForm } from "react-hook-form"; import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; import InputDataGrid, { TableRow as InputTableRow, } from "../InputDataGrid/InputDataGrid"; import PoInputGrid from "./PoInputGrid"; import { QcItemWithChecks } from "@/app/api/qc"; import { useSearchParams } from "next/navigation"; import { WarehouseResult } from "@/app/api/warehouse"; import { calculateWeight, returnWeightUnit } from "@/app/utils/formatUtil"; import QrCodeScanner from "../QrCodeScanner"; import { CameraDevice, Html5Qrcode } from "html5-qrcode"; import { CameraContext } from "../Cameras/CameraProvider"; import StyledDataGrid from "../StyledDataGrid"; import { QrCodeInfo } from "@/app/api/qrcode"; import { fetchQcResult } from "@/app/api/qc/actions"; import PoQcStockInModal from "./PoQcStockInModal"; import ReactQrCodeScannerModal, { ScannerConfig, } from "../ReactQrCodeScanner/ReactQrCodeScanner"; import QrModal from "./QrModal"; type Props = { po: PoResult; qc: QcItemWithChecks[]; warehouse: WarehouseResult[]; }; type EntryError = | { [field in keyof StockInLine]?: string; } | undefined; // type PolRow = TableRow, EntryError>; const PoDetail: React.FC = ({ po, qc, warehouse }) => { const cameras = useContext(CameraContext); console.log(cameras); const { t } = useTranslation(); const apiRef = useGridApiRef(); const [rows, setRows] = useState(po.pol || []); const params = useSearchParams(); function Row(props: { row: PurchaseOrderLine }) { const { row } = props; const [open, setOpen] = useState(false); const [processedQty, setProcessedQty] = useState(row.processed); const [currStatus, setCurrStatus] = useState(row.status); useEffect(() => { if (processedQty === row.qty) { setCurrStatus("completed".toUpperCase()); } else if (processedQty > 0) { setCurrStatus("receiving".toUpperCase()); } else { setCurrStatus("pending".toUpperCase()); } }, [processedQty]); const totalWeight = useMemo( () => calculateWeight(row.qty, row.uom), [calculateWeight] ); const weightUnit = useMemo( () => returnWeightUnit(row.uom), [returnWeightUnit] ); return ( <> *": { borderBottom: "unset" }, color: "black" }}> setOpen(!open)} > {open ? : } {row.itemNo} {row.itemName} {row.qty} {processedQty} {row.uom?.code} {totalWeight} {weightUnit} {/* {weightUnit} */} {row.price} {/* {row.expiryDate} */} {currStatus} {/* */}
); } const [tabIndex, setTabIndex] = useState(0); const handleTabChange = useCallback>( (_e, newValue) => { setTabIndex(newValue); }, [] ); const [isOpenScanner, setOpenScanner] = useState(false); const onOpenScanner = useCallback(() => { setOpenScanner(true); }, []); const onCloseScanner = useCallback(() => { setOpenScanner(false); }, []); const [itemInfo, setItemInfo] = useState< StockInLine & { warehouseId?: number } >(); const [putAwayOpen, setPutAwayOpen] = useState(false); // const [scannedInfo, setScannedInfo] = useState({} as QrCodeInfo); const closePutAwayModal = useCallback(() => { setPutAwayOpen(false); setItemInfo(undefined); }, []); const openPutAwayModal = useCallback(() => { setPutAwayOpen(true); }, []); const handleComplete = useCallback(async () => { const res = await checkPolAndCompletePo(po.id) if (res.type === "completed") { // toast.success(res.message) console.log(res) return } if (res.type === "receiving") { // toast.error(res.message) console.log(res) return } }, [checkPolAndCompletePo]); return ( <> {po.code} {/* */} {/* */} {/* */} {/* scanner */} {/* */} {/* tab 1 */} {/* for the collapse button */} {t("itemNo")} {t("itemName")} {t("qty")} processed {t("uom")} {t("total weight")} {/* {t("weight unit")} */} {t("price")} {/* {t("expiryDate")} */} {t("status")} {/* {"add icon button"} */} {rows.map((row) => ( ))}
{/* tab 2 */} {/* */}
{itemInfo !== undefined && ( <> )} ); }; export default PoDetail;