import React, { useState, useEffect } from "react"; import { useAtom } from "jotai"; import { CurrentGRNAtom, VoiceAssistAtom, grnsAtom, CurrentRollAtom, TranscribeAtom } from "../Variables"; import { useNavigate } from "react-router"; import RollCard from "../Components/RollCard"; const GRNDetailPage = ({ sidebar }) => { const [currentGRN, setCurrentGRN] = useAtom(CurrentGRNAtom); const [voiceAssist, setVoiceAssist] = useAtom(VoiceAssistAtom); const [currentRoll, setCurrentRoll] = useAtom(CurrentRollAtom); const [transcribe, setTranscribe] = useAtom(TranscribeAtom); const [currentGRNRolls, setCurrentGRNRolls] = useState([]); const [fabricForm, setFabricForm] = useState(""); const [POWidth, setPOWidth] = useState(0); const [PointsUOM, setPointsUOM] = useState(""); const [Tolarence, setTolarence] = useState(0); const navigate = useNavigate(); useEffect(() => { fetch("/api/grnRolls/" + currentGRN?.GRN) .then((res) => res.json()) .then((data) => { setCurrentGRNRolls(data["data"]); voiceAssist.on(["roll *", "open roll *"], true).then((i, wildcard) => { wildcard = wildcard.replace(/ /g, ""); let found = false; for (let index = 0; index < data["data"].length; index++) { if (data["data"][index].name.toLowerCase() == wildcard.toLowerCase()) { setCurrentRoll(data["data"][index]); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "open roll " + wildcard, isCommand: true }]); navigate("/roll"); found = true; } } if (!found) { voiceAssist.say("No roll found with that Number"); } }); }) .catch((err) => { window.location.href = "/"; }); }, [currentGRN]); useEffect(() => { setFabricForm(currentGRN?.fabricForm); setPOWidth(currentGRN?.POWidth); setPointsUOM(currentGRN?.PointsUOM); setTolarence(currentGRN?.Tolarence); voiceAssist.emptyCommands(); voiceAssist.on(["open *", "grn *", "open grn *"], true).then((i, wildcard) => { wildcard = wildcard.replace(/\s/g, ""); let found = false; for (let index = 0; index < grns.length; index++) { if (grns[index].GRN.toLowerCase() == wildcard.toLowerCase()) { setCurrentGRN(grns[index]); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "open GRN " + wildcard, isCommand: true }]); navigate("/grn"); localStorage.setItem("currentGRN", JSON.stringify(grns[index])); found = true; } } if (!found) { voiceAssist.say("No GRN found with that Number"); } }); voiceAssist.on(["search *"], true).then((i, wildcard) => { wildcard = wildcard.replace(/ /g, ""); setSearch(wildcard); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "search " + wildcard, isCommand: true }]); }); voiceAssist.on(["transcribe"]).then((i) => { setTranscribe((prev) => [...prev.slice(0, -1), { msg: "transcribe", isCommand: true }]); navigate("/transcribe"); }); voiceAssist.on(["home", "go to home"]).then((i) => { setTranscribe((prev) => [...prev.slice(0, -1), { msg: "home", isCommand: true }]); navigate("/"); }); voiceAssist.on(["refresh"]).then((i) => { window.location.reload(); }); voiceAssist.on(["c1 *", "C 1 *", "c 1 *", "C1 *", "c1*", "C 1*", "c 1*", "C1*"], true).then((i, wildcard) => { let finalWildcard = ""; if (wildcard == 1) { finalWildcard = "Roll"; } else { finalWildcard = "Than"; } setFabricForm(finalWildcard); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Fabric Form Updated to " + finalWildcard, isCommand: true }]); }); voiceAssist.on(["c2 *", "C 2 *", "c 2 *", "C2 *", "c2*", "C 2*", "c 2*", "C2*"], true).then((i, wildcard) => { setPOWidth(wildcard); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "PO Width Updated to " + wildcard, isCommand: true }]); }); voiceAssist.on(["c3 *", "C 3 *", "c 3 *", "C3 *", "c3*", "C 3*", "c 3*", "C3*"], true).then((i, wildcard) => { let finalWildcard = ""; if (wildcard == 1) { finalWildcard = "YRD"; } else { finalWildcard = "MTR"; } setPointsUOM(finalWildcard); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Points UOM Updated to " + finalWildcard, isCommand: true }]); }); voiceAssist.on(["c4 *", "C 4 *", "c 4 *", "C4 *", "c4*", "C 4*", "c 4*", "C4*"], true).then((i, wildcard) => { let finalWildcard = ""; if (wildcard == 1) { finalWildcard = 20; } else { finalWildcard = 30; } setTolarence(finalWildcard); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Tolarence Updated to " + finalWildcard, isCommand: true }]); }); voiceAssist.on(["submit GRN", "update GRN", "submit grn", "update grn"]).then((i) => { let formData = new FormData(); formData.append("fabricForm", fabricForm); formData.append("POWidth", POWidth); formData.append("PointsUOM", PointsUOM); formData.append("Tolarence", Tolarence); console.log(currentGRN); fetch("/api/GRNUpdate/" + currentGRN?.GRN, { method: "POST", body: formData, }) .then((res) => res.json()) .then((data) => { if (data["status"] == "success") { setTranscribe((prev) => [...prev.slice(0, -1), { msg: data["msg"], isCommand: true }]); voiceAssist.say(data["msg"]); } else { setTranscribe((prev) => [...prev.slice(0, -1), { msg: data["msg"], isCommand: false }]); voiceAssist.say("GRN Update Failed"); } }) .catch((err) => console.error(err)); }); }, [voiceAssist]); if (currentGRN?.GRN !== "") { return (

GRN : {currentGRN?.GRN}

* Only Fields with Command Code are editable

GRN#

{currentGRN?.GRN}

Supplier#

{currentGRN?.supplier}

Buyer

{currentGRN?.buyer}

Item#

{currentGRN?.item}

Supplier Name

{currentGRN?.supplierName}

PCH

{currentGRN?.PCH}

Fabric Description

{currentGRN?.fabricDescription}

Quantity

{currentGRN?.quantity}

Color

{currentGRN?.color}

Invoice#

{currentGRN?.invoice}

PO Width (C2)

{ setPOWidth(event.target.value); }} />

Fabric Odour

{currentGRN?.fabricOdour}

Fabric Form (C11/C12)

PO#

{currentGRN?.PO}

Item Description

{currentGRN?.itemDescription}

Points UOM (C31/C32)

Basic UOM

{currentGRN?.basicUOM}

Warehouse

{currentGRN?.Warehouse}

Tolarence (C41/C42)

PO UOM

{currentGRN?.POUOM}

Conv Factor

{currentGRN?.convFactor}

{currentGRNRolls.map((roll, index) => { return ; })}
); } else { useEffect(() => { voiceAssist.say("No GRN selected, redirecting to home page", { onEnd: () => { navigate("/"); }, }); }, []); return (

No GRN selected, Please select a GRN

); } }; export default GRNDetailPage;