import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { extractLastNumber, extractLastNumberOrderId, } from '../../../Services/Others'; import { GlobalprintSlNo, GlobalprintItem, GlobalprintMRP, GlobalprintDiscount, GlobalprintQuantity, GlobalprintRate, GlobalprintAmount, GlobalprintHsnCode, GlobalprintQrcodet, GlobalPritdummyData, GloabalFieldDetails, changeReprintDataFound, GlobalprintSignature, GlobalprinttermsAndConditions, GlobalSignatureImage, Globalnotes, GlobalthemeFormat, GlobalBillName, GlobalSelectedPrintHeaderColor, GlobalSelectedPrintHeaderFontColor, GlobalSelectedTableHeaderColor, GlobalSelectedTableHeaderFontColor, GlobalSelectedTableBodyColor, GlobalSelectedTableBodyFontColor, GlobalRowType, GlobalSelectedFooterColor, GlobalSelectedFooterFontColor, } from '../../../Features/ThemeChange/ThemeChange'; import { GlobalUpiIDprint } from '../../../Features/BookingScreen/BookingData/BookingData'; import '../../../Styles/BookingScreen/PrintTemplates/ThermalPrinter/PrintStyle10.scss'; import QRCodeModule from 'react-qr-code'; import signature from '../../../Images/signatureimage.jpg'; import { ApplicationPreferences } from '../../../Features/BrachLogin/BranchLogin'; import { isMobile } from 'react-device-detect'; const PurchaseOrdStyle10 = ({ index, ExtraChargeTotal, Date1, totalQuantityFilter, CashierName, totalQuantity, OrderDetailGST, OrderDetailIGST, OrderDetailVAT, table2Data, PaymentStatus, PrintGreeting, printDatas, }) => { const QRCode = QRCodeModule.default || QRCodeModule; const dispatch = useDispatch(); const GlobalUpiID = useSelector(GlobalUpiIDprint); // const FieldDetails = useSelector(GloabalFieldDetails); 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 Qrcodet = FieldDetails?.['Qrcode']; const GlobalSlNo = useSelector(GlobalprintSlNo); const GlobalItem = useSelector(GlobalprintItem); const GlobalMRP = useSelector(GlobalprintMRP); const GlobalDiscount = useSelector(GlobalprintDiscount); const GlobalQuantity = useSelector(GlobalprintQuantity); const GlobalRate = useSelector(GlobalprintRate); const GlobalAmount = useSelector(GlobalprintAmount); const GlobalHsnCode = useSelector(GlobalprintHsnCode); const GlobalQrcodet = useSelector(GlobalprintQrcodet); const GlobaldummyData = useSelector(GlobalPritdummyData); const GlobalSignature = useSelector(GlobalprintSignature); const GlobaltermsAndConditions = useSelector(GlobalprinttermsAndConditions); const GlobalSignatureImages = useSelector(GlobalSignatureImage); const GlobalIsnotes = useSelector(Globalnotes); const GlobalthemeFormatr = useSelector(GlobalthemeFormat); const GlobalBilltext = useSelector(GlobalBillName); 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 chunkSize = isMobile ? 10 : PageSize == 'A5' ? 10 : 16; let dataSource = table2Data?.productDetails || []; const Signature = FieldDetails?.['signature']; const TermsnAdCondition = FieldDetails?.['terms&conditions']; // Paginate the data const productsData = table2Data?.productDetails || []; console.log(productsData, 'productsData'); 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 > (isMobile ? 10 : PageSize == 'A5' ? 5 : 13); 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}`; console.log(printDatas, 'FormatTheme', FormatTheme); const purchaseData = table2Data?.productDetails || []; const calculatedTotalQuantity = purchaseData?.reduce((total, item) => { return total + (Number(item?.SalesQty) || 0); }, 0); // 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 ); // 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 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, }; return ( <> {FormatTheme ? (
Mobile:+91{' '} {GlobaldummyData ? '8428XXXXXX' : table2Data?.BrMobile}
{table2Data?.OrderType === 'E' && (| S.No | )} {Item &&Item | } {HsnCode && (HSN | )} {MRP && (MRP | )} {Rate && (Rate | )} {Quantity && (Qty | )} {Discount && (Disc | )} {Amount && (Amount | )}
|---|---|---|---|---|---|---|---|
| {rowIndex + 1 + chunkIndex * chunkSize} | )} {/* Item Name fallback order */} {Item && ({row.ProdName || row.ItemName || row.ProductName || row.Item || row.Name || ''} | )} {/* HSN fallback order */} {HsnCode && ({row.HSN || row.HSNCode || row.HsnCode || row.Hsn || ''} | )} {/* MRP fallback order */} {MRP && ({row.MRP !== undefined ? Number(row.MRP).toFixed(2) : row.Mrp !== undefined ? Number(row.Mrp).toFixed(2) : ''} | )} {/* Rate fallback order */} {Rate && ({row.Rate !== undefined ? Number(row.Rate).toFixed(2) : row.SaleRate !== undefined ? Number(row.SaleRate).toFixed(2) : ''} | )} {/* Quantity fallback order */} {Quantity && ({row.SalesQty !== undefined ? Number(row.SalesQty).toFixed(2) : row.Qty !== undefined ? Number(row.Qty).toFixed(2) : ''} | )} {/* Discount fallback order */} {Discount && ({row.discount !== undefined ? Number(row.discount).toFixed(2) : row.Disc !== undefined ? Number(row.Disc).toFixed(2) : ''} | )} {/* Amount fallback order */} {Amount && ({row.TotalAmt !== undefined ? Number(row.TotalAmt).toFixed(2) : row.Amount !== undefined ? Number(row.Amount).toFixed(2) : ''} | )}
--------- GST Breakup Details -----------
{OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0 && (| Taxable Amount | CGST ( {OrderDetailGST?.[0]?.TaxPercentage / 2}%) | SGST ( {OrderDetailGST?.[0]?.TaxPercentage / 2}%) | Total Amount |
| {Number(item.WithOutTaxAmount).toFixed( 2 )} | {Number(item.CGST).toFixed(2)} | {Number(item.SGST).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
| Taxable Amount | IGST ( {OrderDetailIGST?.[0]?.TaxPercentage}%) | Total Amount |
| {Number( item.WithOutTaxAmount ).toFixed(2)} | {Number(item.TaxAmt).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
| Taxable Amount | VAT ( {OrderDetailVAT?.[0]?.TaxPercentage}%) | Total Amount |
| {Number( item.WithOutTaxAmount ).toFixed(2)} | {Number(item.TaxAmt).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
{Notestext}
Terms & Conditions
Signature
--------- GST Breakup Details -----------
{OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0 && (| Taxable Amount | CGST ( {OrderDetailGST?.[0]?.TaxPercentage / 2}%) | SGST ( {OrderDetailGST?.[0]?.TaxPercentage / 2}%) | Total Amount |
| {Number(item.WithOutTaxAmount).toFixed(2)} | {Number(item.CGST).toFixed(2)} | {Number(item.SGST).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
| Taxable Amount | IGST ( {OrderDetailIGST?.[0]?.TaxPercentage}%) | Total Amount |
| {Number(item.WithOutTaxAmount).toFixed( 2 )} | {Number(item.TaxAmt).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
| Taxable Amount | VAT ({OrderDetailVAT?.[0]?.TaxPercentage} %) | Total Amount |
| {Number(item.WithOutTaxAmount).toFixed( 2 )} | {Number(item.TaxAmt).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
{Notestext}
Terms & Conditions
Signature
Mobile:+91{' '} {GlobaldummyData ? '8428XXXXXX' : table2Data?.BrMobile}
{table2Data?.OrderType === 'E' && (| S.N | : SLNO &&S.N | } {GlobaldummyData ? GlobalItem &&Item | : Item &&Item | } {GlobaldummyData ? GlobalQuantity && (Qty | ) : Quantity && (Qty | )} {GlobaldummyData ? GlobalHsnCode && (HSN | ) : HsnCode && (HSN | )} {GlobaldummyData ? GlobalMRP && (MRP | ) : MRP && (MRP | )} {GlobaldummyData ? GlobalDiscount && (Dis{' '} | ) : Discount && (Dis{' '} | )} {GlobaldummyData ? GlobalRate && (Rate | ) : Rate && (Rate | )} {GlobaldummyData ? GlobalAmount && (Amt | ) : Amount && (Amt | )}
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {index + 1} | ) : SLNO && ({index + 1} | )} {GlobaldummyData ? GlobalItem && ({item?.ProdName}({item?.Size + item?.UomName}) | ) : Item && (
{item?.ProdName}
({item?.Size ? item?.Size : '1'}{' '}
{item?.SinglePc == 'Y'
? 'PCS'
: item?.Type != 'C'
? item?.UomName
: 'COMBO'}
)
{item?.BrandName !== null
? item?.BrandName
: ''}
{item?.ProductIdentifierDtls?.length > 0
? item?.ProductIdentifierDtls?.filter(
(items) =>
!(
items.SerialNumber == '' ||
items.SerialNumber == null
)
)?.map((a) => {
return
{a.SerialNumber} ;
})
: ''}{' '}
{item?.ProductIdentifierDtls?.length > 0
? item?.ProductIdentifierDtls.filter(
(item1) =>
item1.IMEI1 !== '' ||
item1.IMEI2 !== ''
)?.map((item2) => {
const imei1 = item2.IMEI1 || '';
const imei2 = item2.IMEI2 || '';
return (
{[imei1, imei2]
.filter(Boolean)
.join(',')}
);
})
: ''}
|
)}
{GlobaldummyData
? GlobalQuantity && (
{item?.SalesQty} | ) : Quantity && ({item?.SalesQty} | )} {GlobaldummyData ? GlobalHsnCode && ({item?.HSN} | ) : HsnCode && ({item?.HSN} | )} {GlobaldummyData ? GlobalMRP && ({item?.MRP} | ) : MRP && ({item?.SinglePc === 'Y' ? item?.Rate : item?.MRP} | )} {GlobaldummyData ? GlobalDiscount && ({item.discount} | ) : Discount && ({item?.Type != 'C' ? item?.OfferAmt || 0 : item?.OfferValue || 0} | )} {GlobaldummyData ? GlobalRate && ({item?.Rate} | ) : Rate && ({item?.Rate} | )} {GlobaldummyData ? GlobalAmount && ({item?.TotalAmt} | ) : Amount && ({item?.Type != 'C' ? item?.TotalAmt - item?.OfferAmt || 0 : item?.TotalAmt - item?.OfferValue || 0} | )}
{table2Data?.PaymentTypeName} Payment : {Number(table2Data?.NetAmount).toFixed(2)}/-
--------- GST Breakup Details -----------
{OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0 && (| Taxable Amount | CGST ({OrderDetailGST?.[0]?.TaxPercentage / 2}%) | SGST ({OrderDetailGST?.[0]?.TaxPercentage / 2}%) | Total Amount |
| {Number(item.WithOutTaxAmount).toFixed(2)} | {Number(item.CGST).toFixed(2)} | {Number(item.SGST).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
| Taxable Amount | IGST ({OrderDetailIGST?.[0]?.TaxPercentage}%) | Total Amount |
| {Number(item.WithOutTaxAmount).toFixed(2)} | {Number(item.TaxAmt).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
| Taxable Amount | VAT ({OrderDetailVAT?.[0]?.TaxPercentage}%) | Total Amount |
| {Number(item.WithOutTaxAmount).toFixed(2)} | {Number(item.TaxAmt).toFixed(2)} | {Number(item.TotalAmt).toFixed(2)} |
Notes : 10 days Return policy
{Notestext}
Terms & Conditions
Signature