import React from "react";
import { useDispatch, useSelector } from "react-redux";

import {
  GlobalPritdummyData,
  changeReprintDataFound,
  GlobalprinttermsAndConditions,
  Globalnotes,
  GlobalthemeFormat,
  GlobalBillName,
  GlobalSelectedPrintHeaderColor,
  GlobalSelectedPrintHeaderFontColor,
  GlobalSelectedTableHeaderColor,
  GlobalSelectedTableHeaderFontColor,
  GlobalSelectedTableBodyColor,
  GlobalSelectedTableBodyFontColor,
  GlobalRowType,
  GlobalSelectedFooterColor,
  GlobalSelectedFooterFontColor,
  GlobalSelectedNetAmountColor,
  GlobalSelectedNetAmountFontColor,
} from "../../../Features/ThemeChange/ThemeChange";
import "../../../Styles/BookingScreen/PrintTemplates/ThermalPrinter/PrintStyle3.scss"
import { extractLastNumber } from "../../../Services/Others";
import { isMobile } from "react-device-detect";


const PurPrintStyle3 = ({ index, totalQuantityFilter, Date1, CashierName, totalQuantity, OrderDetailGST, OrderDetailIGST, OrderDetailVAT,
  table2Data, PaymentStatus, PrintGreeting, printDatas }) => {


  const dispatch = useDispatch();

  const FieldDetails = printDatas?.FieldDetails?.reduce((acc, item) => {
    acc[item.ConfigName] = true;
    return acc;
  }, {});

  const SLNO = FieldDetails?.["Sl.No"];
  const Item = FieldDetails?.["Item"];
  const MRP = FieldDetails?.["MRP"];
  const Discount = FieldDetails?.["Discount"];
  const Quantity = FieldDetails?.["Quantity"];
  const Rate = FieldDetails?.["Rate"];
  const Amount = FieldDetails?.["Amount"];
  const HsnCode = FieldDetails?.["HsnCode"];


  const GlobaldummyData = useSelector(GlobalPritdummyData);
  const GlobaltermsAndConditions = useSelector(GlobalprinttermsAndConditions);
  const SelectedHeaderColor = useSelector(GlobalSelectedPrintHeaderColor);
  const SelectedHeaderFontColor = useSelector(GlobalSelectedPrintHeaderFontColor);
  const SelectedTableHeaderColor = useSelector(GlobalSelectedTableHeaderColor);
  const SelectedTableHeaderFontColor = useSelector(GlobalSelectedTableHeaderFontColor);
  const SelectedTableBodyColor = useSelector(GlobalSelectedTableBodyColor);
  const SelectedTableBodyFontColor = useSelector(GlobalSelectedTableBodyFontColor);
  const SelectedRowType = useSelector(GlobalRowType);
  const SelectedTableFooterColor = useSelector(GlobalSelectedFooterColor);
  const SelectedTableFooterFontColor = useSelector(GlobalSelectedFooterFontColor);
  const SelectedNetAmountColor = useSelector(GlobalSelectedNetAmountColor);
  const SelectedNetAmountFontColor = useSelector(GlobalSelectedNetAmountFontColor);


  let TermsAndConditions = printDatas?.TermsandConditions
  let SignatureImg = printDatas?.Signature
  let Notestext = printDatas?.Notes
  let BillName = printDatas?.PrintHdrName
  let FormatTheme = printDatas?.PrintType == "S" ? true : false
  let PageSize = printDatas?.PageSize
  const Signature = FieldDetails?.["signature"];
  const TermsnAdCondition = FieldDetails?.["terms&conditions"];
  let printColors = printDatas?.PrintColors;
  const headerColor = printColors?.find(obj => obj.headerColor)?.headerColor;
  const tableHeaderColor = printColors?.find(obj => obj.tableHeaderColor)?.tableHeaderColor;
  const tableBodyColor = printColors?.find(obj => obj.tableBodyColor)?.tableBodyColor;
  const footerColor = printColors?.find(obj => obj.footerColor)?.footerColor;
  const netAmtColor = printColors?.find(obj => obj.netAmtColor)?.netAmtColor;

  const keysLength = Object.keys(table2Data ?? {}).length;
  if (keysLength > 0) {
    dispatch(changeReprintDataFound(true));
  }
  const currentDate = new Date();
  const day = currentDate.getDate().toString().padStart(2, '0');
  const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  const monthIndex = currentDate.getMonth();
  const year = currentDate.getFullYear().toString().slice(-2);

  const formattedDate = `${day}-${monthNames[monthIndex]}-${year}`;
  const TakeawayData = table2Data?.[0]?.ProductDetails
  let TotalOfferAmount = 0;
  const chunkSize = PageSize == "A5" ? 11 : 16;
  let dataSource = table2Data?.[0]?.ProductDetails;
  // Paginate the data
  const paginatedChunks = [];
  for (let i = 0; i < dataSource?.length; i += chunkSize) {
    paginatedChunks.push(dataSource?.slice(i, i + chunkSize));
  }
  const lastChunkRows = paginatedChunks.length > 0 ? paginatedChunks[paginatedChunks.length - 1].length : 0;
  const shouldFooterBeOnNewPage = lastChunkRows > (PageSize == "A5" ? 5 : 10);

  const headerStyle = {
    backgroundColor: GlobaldummyData
      ? SelectedHeaderColor
      : headerColor?.background,

    color: GlobaldummyData
      ? SelectedHeaderFontColor
      : headerColor?.font,
  }
  const tableHeaderStyle = {
    backgroundColor: GlobaldummyData
      ? SelectedTableHeaderColor
      : tableHeaderColor?.background,

    color: GlobaldummyData
      ? SelectedTableHeaderFontColor
      : tableHeaderColor?.font,
  }
  const tableBodyStyle = {
    backgroundColor: GlobaldummyData
      ? SelectedTableBodyColor
      : tableBodyColor?.background,
    color: GlobaldummyData
      ? SelectedTableBodyFontColor
      : tableBodyColor?.font,
  }
  const rowtypeStyle = GlobaldummyData ? SelectedRowType : tableBodyColor?.rowType;
  const footerColorStyle = {
    backgroundColor: GlobaldummyData
      ? SelectedTableFooterColor
      : footerColor?.background,

    color: GlobaldummyData
      ? SelectedTableFooterFontColor
      : footerColor?.font,
  }
  const netAmountStyle = {
    backgroundColor: GlobaldummyData
      ? SelectedNetAmountColor
      : netAmtColor?.background,

    color: GlobaldummyData
      ? SelectedNetAmountFontColor
      : netAmtColor?.font,
  }
  return (
    <>
      {FormatTheme ?
        <div className="PrintStyle3MasterDiv" id={`SQPrintStyle3`} style={{ fontFamily: "'Courier New', Courier, monospace", position: "relative", width: "100%", minHeight: isMobile ? (PageSize === "A5" ? "210mm" : "297mm") : "auto" }}>
          {paginatedChunks.map((dataChunk, chunkIndex) => (
            <div className={`container print-chunk${chunkIndex > 0 ? ' print-page-break' : ''}`} style={{ display: "flex", flexDirection: "column", justifyContent: ((chunkIndex === paginatedChunks.length - 1) && (!shouldFooterBeOnNewPage)) && FormatTheme ? "space-between" : "", height: FormatTheme ? PageSize == "A5" ? '170mm' : "257mm" : "", }} key={chunkIndex}>

              {/* <div className="header" style={{ position: "fixed", top: 0, width: "100%" }}> */}
              <div className="header" style={{ position: isMobile ? GlobaldummyData ? "absolute" : "fixed" : "", top: 0, width: "100%" }}>
                <div className="PrintStyle3-print" style={{ ...headerStyle }} >
                  <div style={{ fontSize: '30px', fontweight: '900' }}>
                    {table2Data?.[0]?.BrName}

                  </div>
                  <div style={{ fontweight: '600' }}> {GlobaldummyData ?
                    'BranchAddress, Town- 635XXX City - State' :
                    (table2Data?.[0]?.AddressDetails?.[0]?.Address1 || '') + (table2Data?.[0]?.AddressDetails?.[0]?.City ? (table2Data?.[0]?.AddressDetails?.[0]?.Address1 && table2Data?.[0]?.AddressDetails?.[0]?.City ? '-' : '') + table2Data?.[0]?.AddressDetails?.[0]?.City : '') + (table2Data?.[0]?.AddressDetails?.[0]?.Zip ? (table2Data?.[0]?.AddressDetails?.[0]?.City && table2Data?.[0]?.AddressDetails?.[0]?.Zip ? '-' : '') + table2Data?.[0]?.AddressDetails?.[0]?.Zip : '')}

                    {table2Data?.[0]?.BrGSTIN && <div>GST NO :{table2Data?.[0]?.BrGSTIN}, CIN :u00045hhsgbubufsdug</div>}
                    <div style={{ fontWeight: '600' }}>  Mobile : +91 {table2Data?.[0]?.BrMobile}</div>
                    {<div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>{BillName} </div>}
                  </div>
                </div>
                <hr className="PrintStyle3-print-dottline" />
                <div className="PrintStyle3-print-ordr-dtls">
                  <div style={{ lineheight: '50px' }}>
                    <div style={{ fontSize: '14px', fontWeight: 600 }} > BILL NO :
                      {
                        table2Data?.[0]?.QuotationNo && extractLastNumber(table2Data?.[0]?.QuotationNo)

                      }  </div>
                    <div style={{ fontSize: '14px', fontWeight: 600 }} > {Date1}</div>
                  </div>
                </div>
                <hr className="PrintStyle3-print-dottline" />

              </div>

              <div className="print-body" style={{ marginTop: "0rem" }}>
                <div className="PrintStyle3-print-tableMaster">
                  {(TakeawayData?.length > 0) &&
                    <div style={{ width: '95%' }} className="PrintStyle3-print-table">
                      <div style={{ ...tableHeaderStyle, display: 'flex', justifyContent: 'space-between', width: '100%', fontweight: '600', gap: '0.2rem' }}>
                        {SLNO && <div style={{ width: '100%', textAlign: 'center', fontWeight: 600 }}>S.No</div>}
                        {Item && <div style={{ width: '300%', textAlign: 'left', fontWeight: 600 }}>ITEM</div>}
                        {HsnCode && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>HSN</div>}
                        {MRP && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>MRP</div>}
                        {Quantity && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>QTY</div>}
                        {Rate && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>RATE</div>}
                        {Discount && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>DIS </div>}
                        {Amount && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>AMT</div>}
                      </div>

                      <div style={{ marginTop: '5px' }}>
                        {dataChunk?.map((item, index) => {
                          const isMatch =
                            (index % 2 === 0 && rowtypeStyle === "even") ||
                            (index % 2 === 1 && rowtypeStyle === "odd");

                          return (
                            <div
                              style={{
                                display: "flex",
                                justifyContent: "space-between",
                                width: "100%",
                                gap: "0.2rem",
                                ...(isMatch ? tableBodyStyle : {}),
                              }}
                            >
                              {SLNO && (
                                <div style={{ width: "100%", textAlign: "center", fontWeight: 600 }}>
                                  {chunkIndex * chunkSize + index + 1}
                                </div>
                              )}

                              {Item && (
                                <div
                                  style={{
                                    display: "flex",
                                    flexDirection: "column",
                                    width: "300%",
                                    textAlign: "left",
                                    fontWeight: 600,
                                  }}
                                >
                                  <div>{item?.ProdName}</div>
                                  <div>
                                    ({item?.Size ? item?.Size : "1"}{" "}
                                    {item?.SinglePc === "Y"
                                      ? "PCS"
                                      : item?.Type !== "C"
                                        ? item?.UomName
                                        : "COMBO"})
                                    &nbsp;{item?.BrandName ?? ""}
                                  </div>
                                </div>
                              )}

                              {HsnCode && (
                                <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                                  {item?.HSN}
                                </div>
                              )}

                              {MRP && (
                                <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                                  {item?.SinglePc === "Y" ? item?.Price : item?.MRP}
                                </div>
                              )}

                              {Quantity && (
                                <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                                  {item?.Qty}
                                </div>
                              )}

                              {Rate && (
                                <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                                  {item?.Price}
                                </div>
                              )}

                              {Discount && (
                                <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                                  {item?.Type !== "C"
                                    ? item?.OfferAmt || 0
                                    : item?.OfferValue || 0}
                                </div>
                              )}

                              {Amount && (
                                <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                                  {item?.NetAmt?.toFixed(2)}
                                </div>
                              )}
                            </div>
                          );
                        })}
                      </div>
                    </div>
                  }

                </div>



              </div>

              {((chunkIndex === paginatedChunks.length - 1) && (!shouldFooterBeOnNewPage)) && FormatTheme &&

                <>
                  <div className="PrintStyle3-print-ttlovrl" style={{...netAmountStyle}}>
                    <div>
                      <div style={{ fontWeight: '600' }}> Items :  </div>
                      <div style={{ fontWeight: '600' }}> Qty :  </div>
                      {(table2Data?.OverallDisc > 0 || TotalOfferAmount > 0) && <div style={{ fontWeight: '600' }}> Off:  </div>}
                      <div style={{ fontWeight: '600' }}> Amount : </div>
                    </div>
                    <div className="PrintStyle3-print-prdttl-amt">
                      <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{GlobaldummyData ? '7' : totalQuantityFilter?.length} </div>
                      <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{GlobaldummyData ? '9' : totalQuantity} </div>
                      {(table2Data?.OverallDisc > 0 || TotalOfferAmount > 0) && <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{GlobaldummyData ? '100' : Number(TotalOfferAmount + table2Data?.OverallDisc).toFixed(2)} </div>}
                      <div style={{ fontWeight: '600', marginRight: '0.5rem' }}> {GlobaldummyData ? '1,066' : Number(table2Data?.[0]?.NetAmount).toFixed(2)} </div>
                    </div>
                  </div>

                  <div className="PrintStyle3-print-ttlovrl">
                    {((OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0) ||
                      (OrderDetailIGST?.length > 0 && OrderDetailIGST?.[0]?.TaxAmt > 0) ||
                      (OrderDetailVAT?.length > 0 && OrderDetailVAT?.[0]?.TaxAmt > 0)) &&
                      <>
                        <div>
                          <div style={{ margin: 0, padding: 0, fontSize: "12px", textAlign: "center" }}>
                            --------- GST Breakup Details -----------</div>
                          {(OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0) &&
                            <table style={{ width: "90%" }}>

                              <tr>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>
                                  Taxable Amount
                                </td>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>
                                  CGST ({(OrderDetailGST?.[0]?.TaxPercentage) / 2}%)
                                </td>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>
                                  SGST ({(OrderDetailGST?.[0]?.TaxPercentage) / 2}%)
                                </td>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>

                                  Total Amount
                                </td>
                              </tr>
                              {OrderDetailGST?.map((item) =>
                                <tr>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    {Number(item.WithoutTaxRate).toFixed(2)}
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    {Number(item.CGST).toFixed(2)}
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    {Number(item.SGST).toFixed(2)}
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                                </tr>
                              )
                              }
                            </table>
                          }

                          {(OrderDetailIGST?.length > 0 && OrderDetailIGST?.[0]?.TaxAmt > 0) &&
                            <>
                              <div style={{ border: "0.01px dashed black", margin: "10px 0 5px 10px", width: '90%' }}></div>
                              <table style={{ width: "90%" }}>

                                <tr>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    Taxable Amount
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    IGST ({OrderDetailIGST?.[0]?.TaxPercentage}%)
                                  </td>

                                  <td style={{ fontSize: "10px", textAlign: "center" }}>

                                    Total Amount
                                  </td>
                                </tr>
                                {OrderDetailIGST?.map((item) =>
                                  <tr>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.WithoutTaxRate).toFixed(2)}
                                    </td>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.TaxAmt).toFixed(2)}
                                    </td>

                                    <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                                  </tr>
                                )
                                }
                              </table>
                            </>
                          }
                          {(OrderDetailVAT?.length > 0 && OrderDetailVAT?.[0]?.TaxAmt > 0) &&
                            <>
                              <div style={{ border: "0.01px dashed black", margin: "10px 0 5px 10px", width: '90%' }}></div>
                              <table style={{ width: "90%" }}>

                                <tr>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    Taxable Amount
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    VAT ({OrderDetailVAT?.[0]?.TaxPercentage}%)
                                  </td>

                                  <td style={{ fontSize: "10px", textAlign: "center" }}>

                                    Total Amount
                                  </td>
                                </tr>
                                {OrderDetailVAT?.map((item) =>
                                  <tr>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.WithoutTaxRate).toFixed(2)}
                                    </td>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.TaxAmt).toFixed(2)}
                                    </td>

                                    <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                                  </tr>
                                )
                                }
                              </table>
                            </>
                          }

                        </div>
                      </>
                    }

                  </div>
                  <hr className="PrintStyle3-print-dottline" />
                  <div className="PrintStyle3-print-stradrs" style={{ display: 'flex', justifyContent: 'space-between' }}>
                    <div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center', width: "100%" }}>
                      {table2Data?.CustSuppName && table2Data?.CustSuppName !== undefined && table2Data?.CustSuppName !== null && !GlobaldummyData &&
                        <div style={{ fontSize: "14px", fontWeight: 600 }}>Customer : {table2Data?.CustSuppName}
                        </div>
                      }
                    </div>
                  </div>
                  {/* <br/> */}
                  <hr className="PrintStyle3-print-dottline" />

                  <div className="page-footerA4Style11"
                    style={{
                      marginTop: "auto",
                      pageBreakBefore: "avoid",
                      pageBreakInside: "avoid",
                      minHeight: "auto",
                      ...footerColorStyle
                    }}
                  >
                    {
                      Notestext && (<div>
                        <p style={{ padding: "0rem 1rem" }}>{Notestext}</p>

                        <hr className="PrintA4Style11-print-dottline" />
                      </div>)
                    }


                    <div style={{ display: "flex", width: "90%", padding: "0 1rem", justifyContent: "flex-end", alignItems: "center" }}>
                      {
                        (TermsnAdCondition == true && TermsAndConditions?.length > 0) && (<div style={{ margin: "8px 0", fontFamily: "sans-serif", width: "100%", display: "flex", flexDirection: "column", alignItems: "flex-start" }}>
                          <p style={{ fontSize: "13px", fontWeight: "bold", marginBottom: "6px" }}>
                            Terms & Conditions
                          </p>
                          <ol style={{ fontSize: "12px", paddingLeft: "18px", margin: 0, lineHeight: "1" }}>
                            {TermsAndConditions?.map(item => (<li style={{ textAlign: "start" }}>{item?.TermsandConditions}</li>))}
                            {/* <li>Please check the product before leaving the counter.</li> */}
                          </ol>
                        </div>)
                      }

                      {Signature == true && (<div style={{ display: "flex", flexDirection: "column", alignItems: "center", marginTop: "1rem", paddingBottom: "1rem" }}>
                        <p style={{ fontSize: "13px", fontWeight: "bold", marginBottom: "6px" }}>Signature</p>
                        <img style={{ width: "100px", height: "60px" }} src={SignatureImg} alt="" />
                      </div>)}

                    </div>
                  </div>




                </>
              }
            </div>
          ))}

          {shouldFooterBeOnNewPage && FormatTheme &&
            <div
              className="print-page"
              style={{
                display: "flex",
                flexDirection: "column",
                minHeight: PageSize == "A5" ? "200mm" : "297mm",
                justifyContent: "flex-end",
                pageBreakBefore: "always",
              }}
            >
              <div className="page-footerA4Style11"
                style={{
                  marginTop: "auto",
                  pageBreakBefore: "avoid",
                  pageBreakInside: "avoid",
                  minHeight: "auto",
                }}
              >
                <>
                  <div className="PrintStyle3-print-ttlovrl" style={{...netAmountStyle}}>
                    <div>
                      <div style={{ fontWeight: '600' }}> Items :  </div>
                      <div style={{ fontWeight: '600' }}> Qty :  </div>
                      {(table2Data?.OverallDisc > 0 || TotalOfferAmount > 0) && <div style={{ fontWeight: '600' }}> Off:  </div>}
                      <div style={{ fontWeight: '600' }}> Amount : </div>
                    </div>
                    <div className="PrintStyle3-print-prdttl-amt">
                      <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{totalQuantityFilter?.length} </div>
                      <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{totalQuantity} </div>
                      {(table2Data?.OverallDisc > 0 || TotalOfferAmount > 0) && <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{Number(TotalOfferAmount + table2Data?.OverallDisc).toFixed(2)} </div>}
                      <div style={{ fontWeight: '600', marginRight: '0.5rem' }}> {Number(table2Data?.[0]?.NetAmount).toFixed(2)} </div>
                    </div>
                  </div>

                  <div className="PrintStyle3-print-ttlovrl">
                    {((OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0) ||
                      (OrderDetailIGST?.length > 0 && OrderDetailIGST?.[0]?.TaxAmt > 0) ||
                      (OrderDetailVAT?.length > 0 && OrderDetailVAT?.[0]?.TaxAmt > 0)) &&
                      <>
                        <div>
                          <div style={{ margin: 0, padding: 0, fontSize: "12px", textAlign: "center" }}>
                            --------- GST Breakup Details -----------</div>
                          {(OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0) &&
                            <table style={{ width: "90%" }}>

                              <tr>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>
                                  Taxable Amount
                                </td>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>
                                  CGST ({(OrderDetailGST?.[0]?.TaxPercentage) / 2}%)
                                </td>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>
                                  SGST ({(OrderDetailGST?.[0]?.TaxPercentage) / 2}%)
                                </td>
                                <td style={{ fontSize: "10px", textAlign: "center" }}>

                                  Total Amount
                                </td>
                              </tr>
                              {OrderDetailGST?.map((item) =>
                                <tr>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    {Number(item.WithoutTaxRate).toFixed(2)}
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    {Number(item.CGST).toFixed(2)}
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    {Number(item.SGST).toFixed(2)}
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                                </tr>
                              )
                              }
                            </table>
                          }

                          {(OrderDetailIGST?.length > 0 && OrderDetailIGST?.[0]?.TaxAmt > 0) &&
                            <>
                              <div style={{ border: "0.01px dashed black", margin: "10px 0 5px 10px", width: '90%' }}></div>
                              <table style={{ width: "90%" }}>

                                <tr>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    Taxable Amount
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    IGST ({OrderDetailIGST?.[0]?.TaxPercentage}%)
                                  </td>

                                  <td style={{ fontSize: "10px", textAlign: "center" }}>

                                    Total Amount
                                  </td>
                                </tr>
                                {OrderDetailIGST?.map((item) =>
                                  <tr>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.WithoutTaxRate).toFixed(2)}
                                    </td>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.TaxAmt).toFixed(2)}
                                    </td>

                                    <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                                  </tr>
                                )
                                }
                              </table>
                            </>
                          }
                          {(OrderDetailVAT?.length > 0 && OrderDetailVAT?.[0]?.TaxAmt > 0) &&
                            <>
                              <div style={{ border: "0.01px dashed black", margin: "10px 0 5px 10px", width: '90%' }}></div>
                              <table style={{ width: "90%" }}>

                                <tr>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    Taxable Amount
                                  </td>
                                  <td style={{ fontSize: "10px", textAlign: "center" }}>
                                    VAT ({OrderDetailVAT?.[0]?.TaxPercentage}%)
                                  </td>

                                  <td style={{ fontSize: "10px", textAlign: "center" }}>

                                    Total Amount
                                  </td>
                                </tr>
                                {OrderDetailVAT?.map((item) =>
                                  <tr>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.WithoutTaxRate).toFixed(2)}
                                    </td>
                                    <td style={{ fontSize: "10px", textAlign: "center" }}>
                                      {Number(item.TaxAmt).toFixed(2)}
                                    </td>

                                    <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                                  </tr>
                                )
                                }
                              </table>
                            </>
                          }

                        </div>
                      </>
                    }

                  </div>
                  <hr className="PrintStyle3-print-dottline" />

                  {/* <br/> */}




                  <div className="PrintStyle3-print-stradrs" style={{ display: 'flex', justifyContent: 'space-between' }}>

                    <div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center', width: "100%" }}>



                      {table2Data?.CustSuppName && table2Data?.CustSuppName !== undefined && table2Data?.CustSuppName !== null && !GlobaldummyData &&
                        <div style={{ fontSize: "14px", fontWeight: 600 }}>Customer : {table2Data?.CustSuppName}
                        </div>
                      }


                    </div>


                  </div>
                  {/* <br/> */}



                  <div className="page-footerA4Style11"
                    style={{
                      marginTop: "auto",
                      pageBreakBefore: "avoid",
                      pageBreakInside: "avoid",
                      minHeight: "auto",
                      ...footerColorStyle
                    }}
                  >
                    {
                      Notestext && (<div>
                        <p style={{ padding: "0rem 1rem" }}>{Notestext}</p>

                        <hr className="PrintA4Style11-print-dottline" />
                      </div>)
                    }


                    <div style={{ display: "flex", width: "90%", padding: "0 1rem", justifyContent: GlobaltermsAndConditions ? "space-between" : "flex-end", alignItems: "center" }}>
                      {
                        (TermsnAdCondition == true && TermsAndConditions?.length > 0) && (<div style={{ margin: "8px 0", fontFamily: "sans-serif", width: "100%", display: "flex", flexDirection: "column", alignItems: "flex-start" }}>
                          <p style={{ fontSize: "13px", fontWeight: "bold", marginBottom: "6px" }}>
                            Terms & Conditions
                          </p>
                          <ol style={{ fontSize: "12px", paddingLeft: "18px", margin: 0, lineHeight: "1" }}>
                            {TermsAndConditions?.map(item => (<li style={{ textAlign: "start" }}>{item?.TermsandConditions}</li>))}
                            {/* <li>Please check the product before leaving the counter.</li> */}
                          </ol>
                        </div>)
                      }

                      {Signature == true && (<div style={{ display: "flex", flexDirection: "column", alignItems: "center", marginTop: "1rem", paddingBottom: "1rem" }}>
                        <p style={{ fontSize: "13px", fontWeight: "bold", marginBottom: "6px" }}>Signature</p>
                        <img style={{ width: "100px", height: "60px" }} src={SignatureImg} alt="" />
                      </div>)}

                    </div>
                  </div>



                </>
              </div>
            </div>
          }
        </div>

        :
        <div className="PrintStyle3MasterDiv" id={`SQPrintStyle3`} style={{ fontFamily: "'Courier New', Courier, monospace" }}>

          <div className="PrintStyle3-print" style={{ ...headerStyle }}>
            <div style={{ fontSize: '30px', fontweight: '900' }}>{table2Data?.[0]?.BrName}</div>
            <div style={{ fontweight: '600' }}> {
              (table2Data?.[0]?.AddressDetails?.[0]?.Address1 || '') + (table2Data?.[0]?.AddressDetails?.[0]?.City ? (table2Data?.[0]?.AddressDetails?.[0]?.Address1 && table2Data?.[0]?.AddressDetails?.[0]?.City ? '-' : '') + table2Data?.[0]?.AddressDetails?.[0]?.City : '') + (table2Data?.[0]?.AddressDetails?.[0]?.Zip ? (table2Data?.[0]?.AddressDetails?.[0]?.City && table2Data?.[0]?.AddressDetails?.[0]?.Zip ? '-' : '') + table2Data?.[0]?.AddressDetails?.[0]?.Zip : '')}

              {table2Data?.[0]?.BrGSTIN && <div>GST NO :{table2Data?.[0]?.BrGSTIN}, CIN :u00045hhsgbubufsdug</div>}
              <div style={{ fontWeight: '600' }}>  Mobile : +91 {table2Data?.[0]?.BrMobile}</div>
              {<div style={{ fontSize: "14px", margin: "2px 0 0 0", padding: 0, fontWeight: 600 }}>{BillName}</div>}
            </div>
          </div>
          <hr className="PrintStyle3-print-dottline" />
          <div className="PrintStyle3-print-ordr-dtls">
            <div style={{ lineheight: '50px' }}>
              <div style={{ fontSize: '14px', fontWeight: 600 }} > BILL NO :
                {
                  table2Data?.[0]?.QuotationNo && extractLastNumber(table2Data?.[0]?.QuotationNo)

                }
              </div>
              <div style={{ fontSize: '14px', fontWeight: 600 }} > {Date1}</div>
            </div>
          </div>
          <hr className="PrintStyle3-print-dottline" />
          <div className="PrintStyle3-print-tableMaster">
            {(TakeawayData?.length > 0) &&
              <div style={{ width: '95%' }} className="PrintStyle3-print-table">
                <div style={{ ...tableHeaderStyle, display: 'flex', justifyContent: 'space-between', width: '100%', fontweight: '600', gap: '0.2rem' }}>
                  {SLNO && <div style={{ width: '100%', textAlign: 'center', fontWeight: 600 }}>S.No</div>}
                  {Item && <div style={{ width: '300%', textAlign: 'left', fontWeight: 600 }}>ITEM</div>}
                  {HsnCode && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>HSN</div>}
                  {MRP && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>MRP</div>}
                  {Quantity && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>QTY</div>}
                  {Rate && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>RATE</div>}
                  {Discount && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>DIS </div>}
                  {Amount && <div style={{ width: '100%', textAlign: 'right', fontWeight: 600 }}>AMT</div>}
                </div>

                <div style={{ marginTop: '5px' }}>
                  {dataChunk?.map((item, index) => {
                    const isMatch =
                      (index % 2 === 0 && rowtypeStyle === "even") ||
                      (index % 2 === 1 && rowtypeStyle === "odd");

                    return (
                      <div
                        style={{
                          display: "flex",
                          justifyContent: "space-between",
                          width: "100%",
                          gap: "0.2rem",
                          ...(isMatch ? tableBodyStyle : {}),
                        }}
                      >
                        {SLNO && (
                          <div style={{ width: "100%", textAlign: "center", fontWeight: 600 }}>
                            {chunkIndex * chunkSize + index + 1}
                          </div>
                        )}

                        {Item && (
                          <div
                            style={{
                              display: "flex",
                              flexDirection: "column",
                              width: "300%",
                              textAlign: "left",
                              fontWeight: 600,
                            }}
                          >
                            <div>{item?.ProdName}</div>
                            <div>
                              ({item?.Size ? item?.Size : "1"}{" "}
                              {item?.SinglePc === "Y"
                                ? "PCS"
                                : item?.Type !== "C"
                                  ? item?.UomName
                                  : "COMBO"})
                              &nbsp;{item?.BrandName ?? ""}
                            </div>
                          </div>
                        )}

                        {HsnCode && (
                          <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                            {item?.HSN}
                          </div>
                        )}

                        {MRP && (
                          <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                            {item?.SinglePc === "Y" ? item?.Price : item?.MRP}
                          </div>
                        )}

                        {Quantity && (
                          <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                            {item?.Qty}
                          </div>
                        )}

                        {Rate && (
                          <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                            {item?.Price}
                          </div>
                        )}

                        {Discount && (
                          <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                            {item?.Type !== "C"
                              ? item?.OfferAmt || 0
                              : item?.OfferValue || 0}
                          </div>
                        )}

                        {Amount && (
                          <div style={{ width: "100%", textAlign: "right", fontWeight: 600 }}>
                            {item?.NetAmt?.toFixed(2)}
                          </div>
                        )}
                      </div>
                    );
                  })}
                </div>
              </div>
            }

          </div>


          {/* <br/> */}
          <div className="PrintStyle3-print-ttlovrl" style={{...netAmountStyle}}>
            <div>
              <div style={{ fontWeight: '600' }}> Items :  </div>
              <div style={{ fontWeight: '600' }}> Qty :  </div>
              {(table2Data?.OverallDisc > 0 || TotalOfferAmount > 0) && <div style={{ fontWeight: '600' }}> Off:  </div>}
              <div style={{ fontWeight: '600' }}> Amount : </div>
            </div>
            <div className="PrintStyle3-print-prdttl-amt">
              <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{GlobaldummyData ? '7' : totalQuantityFilter?.length} </div>
              <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{GlobaldummyData ? '9' : totalQuantity} </div>
              {(table2Data?.OverallDisc > 0 || TotalOfferAmount > 0) && <div style={{ marginRight: '0.5rem', fontWeight: '600' }}>{GlobaldummyData ? '100' : Number(TotalOfferAmount + table2Data?.OverallDisc).toFixed(2)} </div>}
              <div style={{ fontWeight: '600', marginRight: '0.5rem' }}> {GlobaldummyData ? '1,066' : Number(table2Data?.[0]?.NetAmount).toFixed(2)} </div>
            </div>
          </div>

          <div className="PrintStyle3-print-ttlovrl">
            {((OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0) ||
              (OrderDetailIGST?.length > 0 && OrderDetailIGST?.[0]?.TaxAmt > 0) ||
              (OrderDetailVAT?.length > 0 && OrderDetailVAT?.[0]?.TaxAmt > 0)) &&
              <>
                <div>
                  <div style={{ margin: 0, padding: 0, fontSize: "12px", textAlign: "center" }}>
                    --------- GST Breakup Details -----------</div>
                  {(OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0) &&
                    <table style={{ width: "90%" }}>

                      <tr>
                        <td style={{ fontSize: "10px", textAlign: "center" }}>
                          Taxable Amount
                        </td>
                        <td style={{ fontSize: "10px", textAlign: "center" }}>
                          CGST ({(OrderDetailGST?.[0]?.TaxPercentage) / 2}%)
                        </td>
                        <td style={{ fontSize: "10px", textAlign: "center" }}>
                          SGST ({(OrderDetailGST?.[0]?.TaxPercentage) / 2}%)
                        </td>
                        <td style={{ fontSize: "10px", textAlign: "center" }}>

                          Total Amount
                        </td>
                      </tr>
                      {OrderDetailGST?.map((item) =>
                        <tr>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>
                            {Number(item.WithoutTaxRate).toFixed(2)}
                          </td>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>
                            {Number(item.CGST).toFixed(2)}
                          </td>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>
                            {Number(item.SGST).toFixed(2)}
                          </td>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                        </tr>
                      )
                      }
                    </table>
                  }

                  {(OrderDetailIGST?.length > 0 && OrderDetailIGST?.[0]?.TaxAmt > 0) &&
                    <>
                      <div style={{ border: "0.01px dashed black", margin: "10px 0 5px 10px", width: '90%' }}></div>
                      <table style={{ width: "90%" }}>

                        <tr>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>
                            Taxable Amount
                          </td>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>
                            IGST ({OrderDetailIGST?.[0]?.TaxPercentage}%)
                          </td>

                          <td style={{ fontSize: "10px", textAlign: "center" }}>

                            Total Amount
                          </td>
                        </tr>
                        {OrderDetailIGST?.map((item) =>
                          <tr>
                            <td style={{ fontSize: "10px", textAlign: "center" }}>
                              {Number(item.WithoutTaxRate).toFixed(2)}
                            </td>
                            <td style={{ fontSize: "10px", textAlign: "center" }}>
                              {Number(item.TaxAmt).toFixed(2)}
                            </td>

                            <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                          </tr>
                        )
                        }
                      </table>
                    </>
                  }
                  {(OrderDetailVAT?.length > 0 && OrderDetailVAT?.[0]?.TaxAmt > 0) &&
                    <>
                      <div style={{ border: "0.01px dashed black", margin: "10px 0 5px 10px", width: '90%' }}></div>
                      <table style={{ width: "90%" }}>

                        <tr>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>
                            Taxable Amount
                          </td>
                          <td style={{ fontSize: "10px", textAlign: "center" }}>
                            VAT ({OrderDetailVAT?.[0]?.TaxPercentage}%)
                          </td>

                          <td style={{ fontSize: "10px", textAlign: "center" }}>

                            Total Amount
                          </td>
                        </tr>
                        {OrderDetailVAT?.map((item) =>
                          <tr>
                            <td style={{ fontSize: "10px", textAlign: "center" }}>
                              {Number(item.WithoutTaxRate).toFixed(2)}
                            </td>
                            <td style={{ fontSize: "10px", textAlign: "center" }}>
                              {Number(item.TaxAmt).toFixed(2)}
                            </td>

                            <td style={{ fontSize: "10px", textAlign: "center" }}>{Number(item.TotalAmt).toFixed(2)}</td>
                          </tr>
                        )
                        }
                      </table>
                    </>
                  }

                </div>
              </>
            }

          </div>


          {/* <br/> */}


          <div className="PrintStyle3-print-stradrs" style={{ display: 'flex', justifyContent: 'space-between' }}>

            <div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center', width: "100%" }}>


              {table2Data?.CustSuppName && table2Data?.CustSuppName !== undefined && table2Data?.CustSuppName !== null && !GlobaldummyData &&
                <div style={{ fontSize: "14px", fontWeight: 600 }}>Customer : {table2Data?.CustSuppName}
                </div>
              }


            </div>


          </div>
          {/* <br/> */}


          <div className="page-footerA4Style11"
            style={{
              marginTop: "auto",
              pageBreakBefore: "avoid",
              pageBreakInside: "avoid",
              minHeight: "auto",
              ...footerColorStyle
            }}
          >
            {
              Notestext && (<div>
                <p style={{ padding: "0rem 1rem" }}>{Notestext}</p>

                <hr className="PrintA4Style11-print-dottline" />
              </div>)
            }


            <div style={{ display: "flex", width: "90%", padding: "0 1rem", justifyContent: "flex-end", alignItems: "center" }}>
              {
                (TermsnAdCondition == true && TermsAndConditions?.length > 0) && (<div style={{ margin: "8px 0", fontFamily: "sans-serif", width: "100%", display: "flex", flexDirection: "column", alignItems: "flex-start" }}>
                  <p style={{ fontSize: "13px", fontWeight: "bold", marginBottom: "6px" }}>
                    Terms & Conditions
                  </p>
                  <ol style={{ fontSize: "12px", paddingLeft: "18px", margin: 0, lineHeight: "1" }}>
                    {TermsAndConditions?.map(item => (<li style={{ textAlign: "start" }}>{item?.TermsandConditions}</li>))}
                    {/* <li>Please check the product before leaving the counter.</li> */}
                  </ol>
                </div>)
              }

              {Signature == true && (<div style={{ display: "flex", flexDirection: "column", alignItems: "center", marginTop: "1rem", paddingBottom: "1rem" }}>
                <p style={{ fontSize: "13px", fontWeight: "bold", marginBottom: "6px" }}>Signature</p>
                <img style={{ width: "100px", height: "60px" }} src={SignatureImg} alt="" />
              </div>)}

            </div>
          </div>



          {/* <div onClick={Print}> print</div> */}
        </div>}
    </>
  );
}

export default PurPrintStyle3;