import { useDispatch } from "react-redux"; import { useEffect, useState } from "react"; import axios from "axios"; import dayjs from "dayjs"; import { FaBuilding, FaUser, FaPrint } from "react-icons/fa"; import { jsPDF } from "jspdf"; import html2canvas from "html2canvas"; import { PublicQrCodeget } from "../../../Features/ConfigMasterPage/ConfigMasterPage"; import { decryptToObject, getSession } from "../../../Services/Others"; import { getBranchDetail } from "../../../Features/BrachLogin/BranchLogin"; import "./PurchaseLink.scss"; const PurchaseLink = () => { const dispatch = useDispatch(); const apiUrlToken = import.meta.env.ENV_API_URL_TOKEN; const [order, setOrder] = useState(null); const [branch, setBranch] = useState(null); const [loading, setLoading] = useState(true); const url = new URL(window.location.href); const codesParam = url.searchParams.get("code"); useEffect(() => { if (codesParam) initializeData(); else setLoading(false); }, [codesParam]); const initializeData = async () => { try { if (!getSession("auth")) { const { data } = await axios.post(`${apiUrlToken}/jwtTokenGenerator`, { username: "1000000001", password: "1234", }); sessionStore("auth", data.token); sessionStore("LoginType", "Public"); } const qrData = await dispatch(PublicQrCodeget(codesParam)).unwrap(); const oldUrl = qrData?.data?.data?.[0]?.OldUrl; const decrypted = decryptToObject(oldUrl); if (!decrypted) return; setOrder(decrypted); if (decrypted?.BranchId) { const res = await dispatch(getBranchDetail({ BrId: decrypted.BranchId })).unwrap(); setBranch(res?.data?.data?.[0]); } } catch (err) { console.error(err); } finally { setLoading(false); } }; if (loading) return
Loading...
; if (!order) return
Invalid or expired link
; // --- PDF Download Function --- const handleDownloadPDF = async () => { const element = document.getElementById("purchase-pdf"); const canvas = await html2canvas(element, { scale: 2 }); const imgData = canvas.toDataURL("image/png"); const pdf = new jsPDF("p", "mm", "a4"); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, "PNG", 0, 0, pdfWidth, pdfHeight); pdf.save(`PurchaseOrder_${order?.PurOrderId || "PO"}.pdf`); }; return (
{/* Header Section */}

Purchase Order

{/*
{dayjs(order?.PurOrderDate).format("DD MMM YYYY, hh:mm A")}
*/}
{/* Main Content */}
{/* Branch Address */}

Branch Details

{branch?.BrName || "Krishna Electrical and Electronics"}

{branch?.Address1}

{branch?.City}, {branch?.Dist}

{branch?.State} - {branch?.Zip}

{branch?.BrGSTIN &&

GSTIN: {branch.BrGSTIN}

} {branch?.BrMobile &&

Phone: {branch.BrMobile}

} {branch?.BrEmail &&

Email: {branch.BrEmail}

}
{/* Supplier Address */}

Supplier Details

{order.SuppName}

{order?.AddressDetails?.map((addr, idx) => (

{addr.Address1}

{addr.Address2 &&

{addr.Address2}

}

{addr.City}, {addr.Dist}

{addr.State} - {addr.Zip}

))} {order.SuppMobile &&

Phone: {order.SuppMobile}

} {order.SuppEmail &&

Email: {order.SuppEmail}

} {order.SuppGSTIN &&

GSTIN: {order.SuppGSTIN}

}
{/* Order Items */}

Order Items

{order?.OrderDetails?.map((item, idx) => ( ))}
S.No Product Variant UOM Qty
{idx + 1} {item.ProdName} {item.ProdVariantName || "-"} {item.UOM} {item.OrderQty}
{/* Download PDF Button */}
); }; export default PurchaseLink;