diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx index 54d0eba59..aed120527 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx @@ -1,3 +1,4 @@ +import { Classes, Text } from '@blueprintjs/core'; import { Box, Group, Stack } from '@/components'; import { PaperTemplate, @@ -67,6 +68,12 @@ export interface CreditNotePaperTemplateProps extends PaperTemplateProps { creditNoteNumebr?: string; creditNoteNumberLabel?: string; showCreditNoteNumber?: boolean; + + // Entries + lineItemLabel?: string; + lineQuantityLabel?: string; + lineRateLabel?: string; + lineTotalLabel?: string; } export function CreditNotePaperTemplate({ @@ -127,6 +134,12 @@ export function CreditNotePaperTemplate({ creditNoteDate = 'September 3, 2024', showCreditNoteDate = true, creditNoteDateLabel = 'Credit Note Date', + + // Entries + lineItemLabel = 'Item', + lineQuantityLabel = 'Qty', + lineRateLabel = 'Rate', + lineTotalLabel = 'Total', }: CreditNotePaperTemplateProps) { return ( @@ -172,10 +185,23 @@ export function CreditNotePaperTemplate({ ( + + {data.item} + + {data.description} + + + ), + }, + { label: lineQuantityLabel, accessor: 'quantity' }, + { label: lineRateLabel, accessor: 'rate', align: 'right' }, + { label: lineTotalLabel, accessor: 'total', align: 'right' }, ]} data={lines} /> diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx index adfda72c3..6a04a94e5 100644 --- a/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx +++ b/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx @@ -1,3 +1,4 @@ +import { Classes, Text } from '@blueprintjs/core'; import { Box, Group, Stack } from '@/components'; import { PaperTemplate, @@ -69,6 +70,13 @@ export interface EstimatePaperTemplateProps extends PaperTemplateProps { quantity: string; total: string; }>; + + // Lines + lineItemLabel?: string, + lineQuantityLabel?: string, + lineRateLabel?: string, + lineTotalLabel?: string, + } export function EstimatePaperTemplate({ @@ -134,6 +142,13 @@ export function EstimatePaperTemplate({ expirationDateLabel = 'Expiration Date', showExpirationDate = true, expirationDate = 'September 3, 2024', + + // Entries + lineItemLabel = 'Item', + lineQuantityLabel = 'Qty', + lineRateLabel = 'Rate', + lineTotalLabel = 'Total', + }: EstimatePaperTemplateProps) { return ( @@ -183,10 +198,23 @@ export function EstimatePaperTemplate({ ( + + {data.item} + + {data.description} + + + ), + }, + { label: lineQuantityLabel, accessor: 'quantity' }, + { label: lineRateLabel, accessor: 'rate', align: 'right' }, + { label: lineTotalLabel, accessor: 'total', align: 'right' }, ]} data={lines} /> diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx index 3e646f0a9..ea2883658 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx +++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import { Classes, Text } from '@blueprintjs/core'; import { PaperTemplate, PaperTemplateTotalBorder } from './PaperTemplate'; import { Box, Group, Stack } from '@/components'; import { @@ -9,6 +9,7 @@ import { DefaultPdfTemplateAddressBilledTo, DefaultPdfTemplateAddressBilledFrom, } from '@/constants/PdfTemplates'; + interface PapaerLine { item?: string; description?: string; @@ -55,7 +56,7 @@ export interface InvoicePaperTemplateProps { // Entries lineItemLabel?: string; - lineDescriptionLabel?: string; + lineQuantityLabel?: string; lineRateLabel?: string; lineTotalLabel?: string; @@ -129,7 +130,7 @@ export function InvoicePaperTemplate({ // Entries lineItemLabel = 'Item', - lineDescriptionLabel = 'Description', + lineQuantityLabel = 'Qty', lineRateLabel = 'Rate', lineTotalLabel = 'Total', @@ -214,7 +215,6 @@ export function InvoicePaperTemplate({ )} - {showCustomerAddress && ( {billedToLabel} @@ -226,8 +226,21 @@ export function InvoicePaperTemplate({ ( + + {data.item} + + {data.description} + + + ), + }, + { label: lineQuantityLabel, accessor: 'quantity' }, { label: lineRateLabel, accessor: 'rate', align: 'right' }, { label: lineTotalLabel, accessor: 'total', align: 'right' }, ]} diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx index 9d7d6e306..3e6465851 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx +++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx @@ -1,6 +1,6 @@ import React from 'react'; import clsx from 'classnames'; -import { get } from 'lodash'; +import { get, isFunction } from 'lodash'; import { Box, Group, GroupProps } from '@/components'; import styles from './InvoicePaperTemplate.module.scss'; @@ -26,8 +26,9 @@ export function PaperTemplate({ interface PaperTemplateTableProps { columns: Array<{ - accessor: string; + accessor: string | ((data: Record) => JSX.Element); label: string; + value?: JSX.Element; align?: 'left' | 'center' | 'right'; }>; data: Array>; @@ -71,7 +72,9 @@ PaperTemplate.Table = ({ columns, data }: PaperTemplateTableProps) => { {columns.map((column, index) => ( - {get(_data, column.accessor)} + {isFunction(column?.accessor) + ? column?.accessor(_data) + : get(_data, column.accessor)} ))} @@ -115,9 +118,9 @@ PaperTemplate.TotalLine = ({ ); }; -PaperTemplate.MutedText = () => {}; +PaperTemplate.MutedText = () => { }; -PaperTemplate.Text = () => {}; +PaperTemplate.Text = () => { }; PaperTemplate.AddressesGroup = (props: GroupProps) => { return ( diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx index 9dd66180c..8169db451 100644 --- a/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx +++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx @@ -1,3 +1,4 @@ +import { Classes, Text } from '@blueprintjs/core'; import { Box, Group, Stack } from '@/components'; import { PaperTemplate, @@ -67,6 +68,12 @@ export interface ReceiptPaperTemplateProps extends PaperTemplateProps { receiptNumebr?: string; receiptNumberLabel?: string; showReceiptNumber?: boolean; + + // Entries + lineItemLabel?: string; + lineQuantityLabel?: string; + lineRateLabel?: string; + lineTotalLabel?: string; } export function ReceiptPaperTemplate({ @@ -115,13 +122,22 @@ export function ReceiptPaperTemplate({ total: '$1000.00', }, ], + + // Receipt Number showReceiptNumber = true, receiptNumberLabel = 'Receipt Number', receiptNumebr = '346D3D40-0001', + // Receipt Date receiptDate = 'September 3, 2024', showReceiptDate = true, receiptDateLabel = 'Receipt Date', + + // Entries + lineItemLabel = 'Item', + lineQuantityLabel = 'Qty', + lineRateLabel = 'Rate', + lineTotalLabel = 'Total', }: ReceiptPaperTemplateProps) { return ( @@ -167,10 +183,23 @@ export function ReceiptPaperTemplate({ ( + + {data.item} + + {data.description} + + + ), + }, + { label: lineQuantityLabel, accessor: 'quantity' }, + { label: lineRateLabel, accessor: 'rate', align: 'right' }, + { label: lineTotalLabel, accessor: 'total', align: 'right' }, ]} data={lines} />