diff --git a/packages/server/src/services/Sales/Estimates/GetSaleEstimateMailStateTransformer.ts b/packages/server/src/services/Sales/Estimates/GetSaleEstimateMailStateTransformer.ts
index c33783bc5..9dd2b749a 100644
--- a/packages/server/src/services/Sales/Estimates/GetSaleEstimateMailStateTransformer.ts
+++ b/packages/server/src/services/Sales/Estimates/GetSaleEstimateMailStateTransformer.ts
@@ -20,6 +20,16 @@ export class GetSaleEstimateMailStateTransformer extends SaleEstimateTransfromer
'subtotal',
'subtotalFormatted',
+ 'discountAmount',
+ 'discountAmountFormatted',
+ 'discountPercentage',
+ 'discountPercentageFormatted',
+ 'discountLabel',
+
+ 'adjustment',
+ 'adjustmentFormatted',
+ 'adjustmentLabel',
+
'estimateNumber',
'entries',
@@ -97,6 +107,17 @@ export class GetSaleEstimateMailStateTransformer extends SaleEstimateTransfromer
return estimate.amount;
}
+ /**
+ * Retrieves the discount label of the estimate.
+ * @param estimate
+ * @returns {string}
+ */
+ protected discountLabel(estimate) {
+ return estimate.discountType === 'percentage'
+ ? `Discount [${estimate.discountPercentageFormatted}]`
+ : 'Discount';
+ }
+
/**
* Retrieves the formatted total of the estimate.
* @param estimate
diff --git a/packages/server/src/services/Sales/Invoices/GetSaleInvoiceMailStateTransformer.ts b/packages/server/src/services/Sales/Invoices/GetSaleInvoiceMailStateTransformer.ts
index 128080f38..259ea31e7 100644
--- a/packages/server/src/services/Sales/Invoices/GetSaleInvoiceMailStateTransformer.ts
+++ b/packages/server/src/services/Sales/Invoices/GetSaleInvoiceMailStateTransformer.ts
@@ -28,6 +28,15 @@ export class GetSaleInvoiceMailStateTransformer extends SaleInvoiceTransformer {
'total',
'totalFormatted',
+ 'discountAmount',
+ 'discountAmountFormatted',
+ 'discountPercentage',
+ 'discountPercentageFormatted',
+ 'discountLabel',
+
+ 'adjustment',
+ 'adjustmentFormatted',
+
'subtotal',
'subtotalFormatted',
@@ -76,6 +85,17 @@ export class GetSaleInvoiceMailStateTransformer extends SaleInvoiceTransformer {
return invoice.pdfTemplate?.attributes?.primaryColor;
};
+ /**
+ * Retrieves the discount label of the estimate.
+ * @param estimate
+ * @returns {string}
+ */
+ protected discountLabel(invoice) {
+ return invoice.discountType === 'percentage'
+ ? `Discount [${invoice.discountPercentageFormatted}]`
+ : 'Discount';
+ }
+
/**
*
* @param invoice
diff --git a/packages/server/src/services/Sales/Receipts/GetSaleReceiptMailStateTransformer.ts b/packages/server/src/services/Sales/Receipts/GetSaleReceiptMailStateTransformer.ts
index c127f633a..7a7c41b2c 100644
--- a/packages/server/src/services/Sales/Receipts/GetSaleReceiptMailStateTransformer.ts
+++ b/packages/server/src/services/Sales/Receipts/GetSaleReceiptMailStateTransformer.ts
@@ -1,7 +1,9 @@
import { Transformer } from '@/lib/Transformer/Transformer';
import { ItemEntryTransformer } from '../Invoices/ItemEntryTransformer';
+import { DiscountType } from '@/interfaces';
+import { SaleReceiptTransformer } from './SaleReceiptTransformer';
-export class GetSaleReceiptMailStateTransformer extends Transformer {
+export class GetSaleReceiptMailStateTransformer extends SaleReceiptTransformer {
/**
* Exclude these attributes from user object.
* @returns {Array}
@@ -20,14 +22,28 @@ export class GetSaleReceiptMailStateTransformer extends Transformer {
'companyLogoUri',
'primaryColor',
'customerName',
+
'total',
'totalFormatted',
+
+ 'discountAmount',
+ 'discountAmountFormatted',
+ 'discountPercentage',
+ 'discountPercentageFormatted',
+ 'discountLabel',
+
+ 'adjustment',
+ 'adjustmentFormatted',
+
'subtotal',
'subtotalFormatted',
+
'receiptDate',
'receiptDateFormatted',
+
'closedAtDate',
'closedAtDateFormatted',
+
'receiptNumber',
'entries',
];
@@ -86,7 +102,18 @@ export class GetSaleReceiptMailStateTransformer extends Transformer {
};
/**
- *
+ * Retrieves the discount label of the estimate.
+ * @param estimate
+ * @returns {string}
+ */
+ protected discountLabel(receipt) {
+ return receipt.discountType === DiscountType.Percentage
+ ? `Discount [${receipt.discountPercentageFormatted}]`
+ : 'Discount';
+ }
+
+ /**
+ * Retrieves the subtotal of the receipt.
* @param receipt
* @returns
*/
@@ -95,7 +122,7 @@ export class GetSaleReceiptMailStateTransformer extends Transformer {
};
/**
- *
+ * Retrieves the formatted subtotal of the receipt.
* @param receipt
* @returns
*/
@@ -106,7 +133,7 @@ export class GetSaleReceiptMailStateTransformer extends Transformer {
};
/**
- *
+ * Retrieves the receipt date.
* @param receipt
* @returns
*/
@@ -115,7 +142,7 @@ export class GetSaleReceiptMailStateTransformer extends Transformer {
};
/**
- *
+ * Retrieves the formatted receipt date.
* @param {ISaleReceipt} invoice
* @returns {string}
*/
diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSendMailReceipt.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSendMailReceipt.tsx
index fcf9d8d36..700249a65 100644
--- a/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSendMailReceipt.tsx
+++ b/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSendMailReceipt.tsx
@@ -1,4 +1,5 @@
import { x } from '@xstyled/emotion';
+import { isEmpty } from 'lodash';
import { Group, Stack } from '@/components';
import {
SendMailReceipt,
@@ -14,6 +15,14 @@ export interface EstimateSendMailReceiptProps extends SendMailReceiptProps {
estimateNumberLabel?: string;
estimateNumber: string;
+ // # Discount
+ discount?: string;
+ discountLabel?: string;
+
+ // # Adjustment
+ adjustment?: string;
+ adjsutmentLabel?: string;
+
// # Total.
total: string;
totalLabel?: string;
@@ -47,10 +56,6 @@ export function EstimateSendMailReceipt({
estimateNumberLabel = 'Estimate #',
estimateNumber,
- // # Total.
- total,
- totalLabel = 'Total',
-
// # Expiration date.
expirationDateLabel = 'Expiration Date',
expirationDate,
@@ -65,6 +70,18 @@ export function EstimateSendMailReceipt({
subtotal,
subtotalLabel = 'Subtotal',
+ // # Discount
+ discount,
+ discountLabel = 'Discount',
+
+ // # Adjustment
+ adjustment,
+ adjsutmentLabel = 'Adjustment',
+
+ // # Total.
+ total,
+ totalLabel = 'Total',
+
// # View estimate button
showViewEstimateButton = true,
viewEstimateButtonLabel = 'View Estimate',
@@ -142,6 +159,36 @@ export function EstimateSendMailReceipt({
+ {!isEmpty(discount) && (
+
+ {discountLabel}
+
+ {discount}
+
+
+ )}
+
+ {!isEmpty(adjustment) && (
+
+ {adjsutmentLabel}
+
+ {adjustment}
+
+
+ )}
+
))}
+ {/*---- Subtotal ----*/}
+
+ {subtotalLabel}
+
+ {subtotal}
+
+
+
+ {/*---- Discount ----*/}
+ {!isEmpty(discount) && (
+
+ {discountLabel}
+
+ {discount}
+
+
+ )}
+
+ {/*---- Adjustment ----*/}
+ {!isEmpty(adjustment) && (
+
+ {adjustmentLabel}
+
+ {adjustment}
+
+
+ )}
+
+ {/*---- Total ----*/}
+ {/*---- Due amount ----*/}
+ {!isEmpty(discount) && (
+
+ {discountLabel}
+
+ {discount}
+
+
+ )}
+
+ {!isEmpty(adjustment) && (
+
+ {adjustmentLabel}
+
+ {adjustment}
+
+
+ )}
+
;
+ // # Discount
+ discountAmount: number;
+ discountAmountFormatted: string;
+ discountLabel: string;
+ discountPercentage: number | null;
+ discountPercentageFormatted: string;
+
+ // # Adjustment
+ adjustment: number,
+ adjustmentFormatted: string,
+
+ // # Total
total: number;
totalFormatted: string;