From cd5d4ac331b603a6ed3ae5ad9e20eccefab33d64 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 5 Mar 2026 12:12:29 +0530 Subject: [PATCH] Implement dynamic header and table color functionality --- .../PrintStyleDCToInvoiceA4.jsx | 66 +++++++++++++++---- 1 file changed, 53 insertions(+), 13 deletions(-) diff --git a/src/Pages/DeliveryChallanToInvoice/PrintTemplates/PrintStyleDCToInvoiceA4.jsx b/src/Pages/DeliveryChallanToInvoice/PrintTemplates/PrintStyleDCToInvoiceA4.jsx index 0a51c21..716e6e2 100644 --- a/src/Pages/DeliveryChallanToInvoice/PrintTemplates/PrintStyleDCToInvoiceA4.jsx +++ b/src/Pages/DeliveryChallanToInvoice/PrintTemplates/PrintStyleDCToInvoiceA4.jsx @@ -1,6 +1,6 @@ import { useMemo } from "react"; import { useSelector } from "react-redux"; -import { GloabalFieldDetails } from "../../../Features/ThemeChange/ThemeChange"; +import { GloabalDCtoInvoiceFieldDetails, GloabalFieldDetails } from "../../../Features/ThemeChange/ThemeChange"; import { dateFormatChange1 } from "../../../Services/Others"; const PrintStyleDCToInvoiceA4 = ({ invoiceData, preference, printDatas }) => { @@ -18,7 +18,7 @@ const PrintStyleDCToInvoiceA4 = ({ invoiceData, preference, printDatas }) => { VehicleNo } = invoiceData; - const fieldDetails = useSelector(GloabalFieldDetails); + const fieldDetails = useSelector(GloabalDCtoInvoiceFieldDetails); const signature = fieldDetails?.["signature"]; const termsAndConditions = fieldDetails?.["terms&conditions"]; const termsAndConditionsData = printDatas?.TermsandConditions; @@ -45,6 +45,33 @@ const PrintStyleDCToInvoiceA4 = ({ invoiceData, preference, printDatas }) => { const lastChunkRows = paginatedChunks.at(-1)?.length || 0; const shouldFooterBeOnNewPage = lastChunkRows > (pageSize === "A5" ? 5 : 10); + 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 headerStyle = { + backgroundColor: headerColor?.background, + color: headerColor?.font, + } + const tableHeaderStyle = { + backgroundColor: tableHeaderColor?.background, + color: tableHeaderColor?.font, + } + const tableBodyStyle = { + backgroundColor: tableBodyColor?.background, + color: tableBodyColor?.font, + } + const rowtypeStyle = tableBodyColor?.rowType; + const footerColorStyle = { + backgroundColor: footerColor?.background, + color: footerColor?.font, + } + const netAmountStyle = { + backgroundColor: netAmtColor?.background, + color: netAmtColor?.font, + } const getPageStyle = (isFinalFooterPage) => ({ display: "flex", @@ -60,9 +87,10 @@ const PrintStyleDCToInvoiceA4 = ({ invoiceData, preference, printDatas }) => { TotalAmount={TotalAmount} TaxAmount={TaxAmount} GrandTotal={GrandTotal} + netAmountStyle={netAmountStyle} /> -
+
{(notesText || termsAndConditions || signature || printGreeting?.SettingValue === "Y") && ( <> {notesText && (<> @@ -108,6 +136,7 @@ const PrintStyleDCToInvoiceA4 = ({ invoiceData, preference, printDatas }) => { DCNo={DCNo} InvoiceDate={InvoiceDate} VehicleNo={VehicleNo} + headerStyle={headerStyle} /> ); @@ -126,7 +155,7 @@ const PrintStyleDCToInvoiceA4 = ({ invoiceData, preference, printDatas }) => { >
{(chunkIndex === 0 || formatTheme) && } - +
{!formatTheme && isFinalFooterPage && renderFooter()}
@@ -137,7 +166,7 @@ const PrintStyleDCToInvoiceA4 = ({ invoiceData, preference, printDatas }) => { ) : (
- +
{renderFooter()}
@@ -150,8 +179,8 @@ export default PrintStyleDCToInvoiceA4; // COMPONENTS -const Header = ({ logo, branch, InvoiceNo, DCNo, InvoiceDate, VehicleNo }) => ( -
+const Header = ({ logo, branch, InvoiceNo, DCNo, InvoiceDate, VehicleNo ,headerStyle}) => ( +
{branch?.CompName}
@@ -177,7 +206,7 @@ const Header = ({ logo, branch, InvoiceNo, DCNo, InvoiceDate, VehicleNo }) => (
); -const ProductTable = ({ data }) => { +const ProductTable = ({ data ,tableHeaderStyle,tableBodyStyle,rowtypeStyle}) => { const columns = [ { label: "S.No", key: "sno", width: "5%", align: 'center' }, { label: "Product", key: "ProdName", width: "35%", align: 'center' }, @@ -191,7 +220,7 @@ const ProductTable = ({ data }) => { return ( - + {columns.map(col => ( ))} @@ -199,7 +228,18 @@ const ProductTable = ({ data }) => { {data.map((prod, index) => ( - + @@ -214,8 +254,8 @@ const ProductTable = ({ data }) => { ); }; -const Summary = ({ TotalAmount, TaxAmount, GrandTotal }) => ( -
+const Summary = ({ TotalAmount, TaxAmount, GrandTotal,netAmountStyle }) => ( +
Subtotal :
₹ {TotalAmount.toFixed(2)}
@@ -224,7 +264,7 @@ const Summary = ({ TotalAmount, TaxAmount, GrandTotal }) => (
Tax Amount :
₹ {TaxAmount.toFixed(2)}
-
+
Grand Total :
₹ {GrandTotal.toFixed(2)}
{col.label}
{index + 1} {prod.ProdName} {prod.ProdVariantName}