import React, { useEffect, useState } from 'react'; import { useDispatch } from 'react-redux'; import moment from 'moment'; import { extractLastNumberOrderId, getSession, } from '../../../../Services/Others'; import QRcode from '../../../../Images/QRcode.png'; import { printDiv } from '../../../../Services/Others'; // import HpyImg from "../../../../Images/happyemoji.png" import '../../../../Styles/BookingScreen/PrintTemplates/A4/PrintA4Style11.scss'; import { useSelector } from 'react-redux'; import { GloabalFieldDetails, GlobalBillName, Globalnotes, GlobalprintAmount, GlobalprintCashierName, GlobalprintCredit, GlobalprintDiscount, GlobalprintHsnCode, GlobalprintItem, GlobalprintLogo, GlobalprintMRP, GlobalprintQrcodet, GlobalprintQuantity, GlobalprintRate, GlobalprintSignature, GlobalprintSlNo, GlobalprintTax, GlobalprinttermsAndConditions, GlobalPritdummyData, GlobalSignatureImage, GlobalthemeFormat, GlobalSelectedPrintHeaderColor, GlobalSelectedPrintHeaderFontColor, GlobalSelectedTableHeaderColor, GlobalSelectedTableHeaderFontColor, GlobalSelectedTableBodyFontColor, GlobalSelectedTableBodyColor, GlobalRowType, GlobalSelectedFooterColor, GlobalSelectedFooterFontColor, GlobalSelectedNetAmountColor, GlobalSelectedNetAmountFontColor, } from '../../../../Features/ThemeChange/ThemeChange'; import signature from '../../../../Images/signatureimage.jpg'; import QRCodeModule from 'react-qr-code'; import Logo from '../../../../Images/Logo.jpg'; import { settingDataSelector } from '../../../../Features/PreferenceMaster/PreferenceMaster'; import { PreferenceData } from '../../../../Features/BookingScreen/BookingData/BookingData'; const PrintA4Style11 = ({ index, ExtraChargeTotal, UpiId, Date1, base64Image, totalQuantityFilter = 6, BranchCity, BranchZip, CashierName, totalQuantity, OrderDetailGST, OrderDetailIGST, OrderDetailVAT, table2Data, PaymentStatus, PrintLogo, PrintGreeting, printDatas, sportsAppPreference, MembershipApplied = null, SalesModePref, }) => { const QRCode = QRCodeModule.default || QRCodeModule; const GlobalthemeFormatr = useSelector(GlobalthemeFormat); const GlobalSignature = useSelector(GlobalprintSignature); const GlobaltermsAndConditions = useSelector(GlobalprinttermsAndConditions); const FieldDetails = useSelector(GloabalFieldDetails); const GlobalIsnotes = useSelector(Globalnotes); const GlobalSignatureImages = useSelector(GlobalSignatureImage); console.log(FieldDetails, 'FieldDetails'); const SLNO = FieldDetails?.['Sl.No']; const Item = FieldDetails?.['Item']; const MRP = FieldDetails?.['MRP']; const Discount = FieldDetails?.['Discount']; const Tax = FieldDetails?.['Tax']; const Quantity = FieldDetails?.['Quantity']; const Rate = FieldDetails?.['Rate']; const Amount = FieldDetails?.['Amount']; const HsnCode = FieldDetails?.['HsnCode']; const Qrcodet = FieldDetails?.['Qrcode']; const Signature = FieldDetails?.['signature']; const TermsnAdCondition = FieldDetails?.['terms&conditions']; const isNotes = FieldDetails?.['Notes']; const CashierNameField = FieldDetails?.['CashierName']; const LogoField = FieldDetails?.['Logo']; const CreditDetails = FieldDetails?.['Credit details']; const WeightasKg = FieldDetails?.['Weight']; const GlobalSlNo = useSelector(GlobalprintSlNo); const GlobalItem = useSelector(GlobalprintItem); const GlobalMRP = useSelector(GlobalprintMRP); const GlobalDiscount = useSelector(GlobalprintDiscount); const GlobalTax = useSelector(GlobalprintTax); 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 GlobalBilltext = useSelector(GlobalBillName); const GlobalCashierName = useSelector(GlobalprintCashierName); const GlobalLogo = useSelector(GlobalprintLogo); const GlobalCredit = useSelector(GlobalprintCredit); const SettingData = useSelector(PreferenceData); 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 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 Retailshortname = SettingData?.[0]?.SettingDtlDetails?.find( (setting) => setting?.SettingIdName?.toLowerCase() === 'retailshortname' ); const Wholesaleshortname = SettingData?.[0]?.SettingDtlDetails?.find( (setting) => setting?.SettingIdName?.toLowerCase() === 'wholesaleshortname' ); const UomPrint = SettingData?.[0]?.SettingDtlDetails?.filter( (i) => i.SettingIdName === 'PrintUom' )?.[0]; const estimatePrintHeader = SettingData?.[0]?.SettingDtlDetails?.find( (setting) => setting?.SettingIdName?.toLowerCase() === 'estimateprintheader' )?.SettingValue === 'Y'; const estimateTitle = SettingData?.[0]?.SettingDtlDetails?.find( (setting) => setting?.SettingIdName?.toLowerCase() === 'estimatetitle' )?.SettingValue === 'Y'; const currentDate = new Date(); console.log(OrderDetailGST, 'OrderDetailGST'); 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?.productDetails?.filter( (item) => item.BookingTypeName?.toLowerCase() === 'takeaway' ); const DineInData = table2Data?.productDetails?.filter( (item) => item.BookingTypeName?.toLowerCase() === 'dine in' ); let PaymentStatusSuccess = PaymentStatus?.filter( (ps) => ps.PaymentStatus === 'S' ); const isEditedBill = PaymentStatus?.some((payment) => { const type = payment?.AdjustmentType?.toLowerCase(); return ( (type === 'extra' || type === 'refund') && payment?.BeforeAdjustment != null && payment?.AfterAdjustment != null ); }); const lastTransaction = PaymentStatus?.find( (ps) => ps.PaymentStatus === 'S' && ps?.LastOrderTran === 'Y' ); const TakeawayTotal = TakeawayData?.reduce( (accumulator, currentValue) => accumulator + currentValue.TotalAmt, 0 ); const DineInTotal = DineInData?.reduce( (accumulator, currentValue) => accumulator + currentValue.TotalAmt, 0 ); const aggregatedPayments = PaymentStatusSuccess?.reduce( (acc, paymentdata) => { const paymentType = paymentdata?.PaymentTypeName; const amount = Number(paymentdata?.Amount); if (acc[paymentType]) { acc[paymentType] += amount; } else { acc[paymentType] = amount; } return acc; }, {} ); let TermsAndConditions = printDatas?.TermsandConditions; let SignatureImg = printDatas?.Signature; let Notestext = printDatas?.Notes; let BillName = printDatas?.PrintHdrName; let FormatTheme = printDatas?.PrintType == 'S' ? true : false; console.log(FormatTheme, 'TermsAndConditions'); const productsData = table2Data?.productDetails || []; const offers = table2Data?.OrderOfferDetails || []; const paymentTypeUPI = PaymentStatus?.find( (ps) => ps.PaymentTypeName === 'UPI' ); const PackageDetails = table2Data?.PackageDtl; let TotalOfferAmount = 0; const products = [ { id: 1, name: 'Butter Naan', price: 88.0, quantity: 2, mrp: 50, amt: 60, discount: 12, ProdTaxPercentage: 5, }, { id: 2, name: 'Grill Chicken (f)', price: 300.0, quantity: 1, mrp: 50, amt: 60, discount: 12, ProdTaxPercentage: 5, }, { id: 3, name: 'Tandoori Chicken (H) ', price: 200.0, quantity: 1, mrp: 50, amt: 60, discount: 12, ProdTaxPercentage: 0, }, { id: 4, name: 'Kulfi', price: 30.0, quantity: 1, mrp: 50, amt: 60, discount: 12, ProdTaxPercentage: 18, }, { id: 1, name: 'Butter Naan', price: 88.0, quantity: 2, mrp: 50, amt: 60, discount: 12, ProdTaxPercentage: 40, }, { id: 2, name: 'Grill Chicken (f)', price: 300.0, quantity: 1, mrp: 50, amt: 60, discount: 12, ProdTaxPercentage: 5, }, ]; const chunkSize = 11; let dataSource = []; if (GlobaldummyData || TakeawayData?.length > 0) { dataSource = GlobaldummyData ? products : TakeawayData; } else if (DineInData?.length > 0) { dataSource = DineInData; } // 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 > 6; 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 (
|
{/* Placeholder for the fixed-position header */}
|
||||||||||||||||||||||||||||||||||||||||||||||
<>
)}
ITEMS
Qty
{TotalOfferAmount > 0 ||
table2Data?.OverallDisc ? (
OFFER
) : (
''
)}
{/* Amount */}
{GlobaldummyData
? '7'
: totalQuantityFilter?.length}
{GlobaldummyData
? '9'
: totalQuantity}
{TotalOfferAmount > 0 ||
table2Data?.OverallDisc ? (
{Number(
TotalOfferAmount +
table2Data?.OverallDisc
).toFixed(2)}
) : (
''
)}
{/* {GlobaldummyData ? "1066" : Number(table2Data?.NetAmount).toFixed(2)} */}
Amount :
{GlobaldummyData
? '1066'
: Number(
table2Data?.NetAmount
).toFixed(2)}
Bill Gross Amount
{(
lastTransaction?.BeforeAdjustment ||
0
).toFixed(2)}
{'Adjustment Amount'}
{lastTransaction?.AdjustmentType ===
'REFUND'
? '-'
: '+'}
{Math.abs(
(lastTransaction?.BeforeAdjustment ??
0) -
(lastTransaction?.AfterAdjustment ??
0)
).toFixed(2)}
Net Bill Amount
{(
lastTransaction?.AfterAdjustment ||
0
).toFixed(2)}
Advance Amount:Opening Balance:
{/* OLD CREDIT BAL */}
{PaymentStatusSuccess?.[0]
?.PaymentTypeName ===
'Credit' && (
<>
{table2Data.CustomerDetails[0]
.OldCreditBal > 0 ? (
)}
Advance Amount: { table2Data .CustomerDetails[0] .OldCreditBal } ) : table2Data .CustomerDetails[0] .OldCreditBal < 0 ? ({' '} Opening Balance:{' '} {Math.abs( table2Data .CustomerDetails[0] .OldCreditBal )} ) : null} > )} {/* CURRENT CREDIT BAL */} {table2Data.CustomerDetails[0] .CurrentCreditBal > 0 ? ({' '} Current Advance Amount:{' '} { table2Data.CustomerDetails[0] .CurrentCreditBal } ) : table2Data.CustomerDetails[0] .CurrentCreditBal < 0 ? ({' '} Current Balance Amount:{' '} {Math.abs( table2Data.CustomerDetails[0] .CurrentCreditBal )} ) : null}{table2Data?.OrderType !== 'E' && OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0 && ( <> --------- GST Breakup Details -----------
{GlobaldummyData
? GlobalQrcodet && (
Scan to Pay{' '}
₹
{GlobaldummyData
? '1,066'
: Number(
table2Data?.NetAmount
).toFixed(2)}
Scan to Pay{' '}
₹
{GlobaldummyData
? '1,066'
: Number(
table2Data?.NetAmount
).toFixed(2)}
{GlobaldummyData && GlobalCashierName && (
>
{sportsAppPreference && MembershipApplied && (
CASHIER : {CashierName}
)}
{CashierName && CashierNameField && (
CASHIER : {CashierName}
)}
{Date1}
{`*** Membership ${table2Data?.NetAmount === 0 ? 'Free Hours' : 'Discount'} Utilized - ${MembershipApplied?.Detail?.[0]?.MembershipName} ***`}
)}
{GlobaldummyData
? GlobalIsnotes && (
Notes : 10 days Return policy {Notestext}
{GlobaldummyData
? GlobaltermsAndConditions && (
Terms & Conditions
Terms & Conditions
Signature Signature {/* {(chunkIndex === paginatedChunks.length - 1) && ( )} */} |
||||||||||||||||||||||||||||||||||||||||||||||
|
{/* Placeholder for the fixed-position header */}
|
||||||||||||||||||||||||||||||||||||||||||||||
<>
)}
ITEMS
Qty
{TotalOfferAmount > 0 ||
table2Data?.OverallDisc ? (
OFFER
) : (
''
)}
{/* Amount */}
{GlobaldummyData
? '7'
: totalQuantityFilter?.length}
{GlobaldummyData
? '9'
: totalQuantity}
{TotalOfferAmount > 0 ||
table2Data?.OverallDisc ? (
{Number(
TotalOfferAmount +
table2Data?.OverallDisc
).toFixed(2)}
) : (
''
)}
{/* {GlobaldummyData ? "1066" : Number(table2Data?.NetAmount).toFixed(2)} */}
Amount :
{GlobaldummyData
? '1066'
: Number(
table2Data?.NetAmount
).toFixed(2)}
Bill Gross Amount
{(
lastTransaction?.BeforeAdjustment ||
0
).toFixed(2)}
{'Adjustment Amount'}
{lastTransaction?.AdjustmentType ===
'REFUND'
? '-'
: '+'}
{Math.abs(
(lastTransaction?.BeforeAdjustment ??
0) -
(lastTransaction?.AfterAdjustment ??
0)
).toFixed(2)}
Net Bill Amount
{(
lastTransaction?.AfterAdjustment ||
0
).toFixed(2)}
Advance Amount:Opening Balance:
{/* OLD CREDIT BAL */}
{PaymentStatusSuccess?.[0]
?.PaymentTypeName ===
'Credit' && (
<>
{table2Data.CustomerDetails[0]
.OldCreditBal > 0 ? (
)}
Advance Amount: { table2Data .CustomerDetails[0] .OldCreditBal } ) : table2Data .CustomerDetails[0] .OldCreditBal < 0 ? ({' '} Opening Balance:{' '} {Math.abs( table2Data .CustomerDetails[0] .OldCreditBal )} ) : null} > )} {/* CURRENT CREDIT BAL */} {table2Data.CustomerDetails[0] .CurrentCreditBal > 0 ? ({' '} Current Advance Amount:{' '} { table2Data.CustomerDetails[0] .CurrentCreditBal } ) : table2Data.CustomerDetails[0] .CurrentCreditBal < 0 ? ({' '} Current Balance Amount:{' '} {Math.abs( table2Data.CustomerDetails[0] .CurrentCreditBal )} ) : null}{table2Data?.OrderType !== 'E' && OrderDetailGST?.length > 0 && OrderDetailGST?.[0]?.TaxAmt > 0 && ( <> --------- GST Breakup Details -----------
{GlobaldummyData
? GlobalQrcodet && (
Scan to Pay{' '}
₹
{GlobaldummyData
? '1,066'
: Number(
table2Data?.NetAmount
).toFixed(2)}
Scan to Pay{' '}
₹
{GlobaldummyData
? '1,066'
: Number(
table2Data?.NetAmount
).toFixed(2)}
{GlobaldummyData && GlobalCashierName && (
>
{sportsAppPreference && MembershipApplied && (
CASHIER : {CashierName}
)}
{CashierName && CashierNameField && (
CASHIER : {CashierName}
)}
{Date1}
{`*** Membership ${table2Data?.NetAmount === 0 ? 'Free Hours' : 'Discount'} Utilized - ${MembershipApplied?.Detail?.[0]?.MembershipName} ***`}
)}
{GlobaldummyData
? GlobalIsnotes && (
Notes : 10 days Return policy {Notestext}
{GlobaldummyData
? GlobaltermsAndConditions && (
Terms & Conditions
Terms & Conditions
Signature Signature |
Split Payment:
*/} {Object.keys(aggregatedPayments).map((paymentType) => (Advance Amount: {table2Data.CustomerDetails[0].OldCreditBal}
) : table2Data.CustomerDetails[0].OldCreditBal < 0 ? ({' '} Opening Balance:{' '} {Math.abs( table2Data.CustomerDetails[0].OldCreditBal )}
) : null} > )} {/* CURRENT CREDIT BAL */} {table2Data.CustomerDetails[0].CurrentCreditBal > 0 ? ({' '} Current Advance Amount:{' '} {table2Data.CustomerDetails[0].CurrentCreditBal}
) : table2Data.CustomerDetails[0].CurrentCreditBal < 0 ? ({' '} Current Balance Amount:{' '} {Math.abs( table2Data.CustomerDetails[0].CurrentCreditBal )}
) : null}--------- GST Breakup Details -----------
| GST Rate | Taxable Amount | CGST | SGST | Total |
|---|---|---|---|---|
| {item?.TaxPercentage}%{' '} | {' '} {Number(item.WithOutTaxAmount).toFixed( 2 )}{' '} | {' '} {Number(item.CGST).toFixed(2)} | {' '} {Number(item.SGST).toFixed(2)} | {' '} {Number(item.TotalAmt).toFixed(2)} |
Notes : 10 days Return policy
{Notestext}
Terms & Conditions
Terms & Conditions
Signature
Signature
Advance Amount: {table2Data.CustomerDetails[0].OldCreditBal}
) : table2Data.CustomerDetails[0].OldCreditBal < 0 ? ({' '} Opening Balance:{' '} {Math.abs( table2Data.CustomerDetails[0].OldCreditBal )}
) : null} > )} {/* CURRENT CREDIT BAL */} {table2Data.CustomerDetails[0].CurrentCreditBal > 0 ? ({' '} Current Advance Amount:{' '} {table2Data.CustomerDetails[0].CurrentCreditBal}
) : table2Data.CustomerDetails[0].CurrentCreditBal < 0 ? ({' '} Current Balance Amount:{' '} {Math.abs( table2Data.CustomerDetails[0].CurrentCreditBal )}
) : null}--------- GST Breakup Details -----------
| GST Rate | Taxable Amount | CGST | SGST | Total |
|---|---|---|---|---|
| {item?.TaxPercentage}%{' '} | {' '} {Number(item.WithOutTaxAmount).toFixed(2)}{' '} | {' '} {Number(item.CGST).toFixed(2)} | {' '} {Number(item.SGST).toFixed(2)} | {' '} {Number(item.TotalAmt).toFixed(2)} |
Notes : 10 days Return policy
{Notestext}
Terms & Conditions
Terms & Conditions
Signature
Signature