diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx
index d61fc71c1..7bacc8f15 100644
--- a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx
+++ b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx
@@ -6,13 +6,15 @@ import { T, TotalLines, TotalLine, TotalLineTextStyle } from '@/components';
import {
useEstimateAdjustmentFormatted,
useEstimateDiscountFormatted,
- useEstimateTotals,
+ useEstimateSubtotalFormatted,
+ useEstimateTotalFormatted,
} from './utils';
import { AdjustmentTotalLine } from '../../Invoices/InvoiceForm/AdjustmentTotalLine';
import { DiscountTotalLine } from '../../Invoices/InvoiceForm/DiscountTotalLine';
export function EstimateFormFooterRight() {
- const { formattedSubtotal, formattedTotal } = useEstimateTotals();
+ const subtotalFormatted = useEstimateSubtotalFormatted();
+ const totalFormatted = useEstimateTotalFormatted();
const {
values: { currency_code },
} = useFormikContext();
@@ -23,7 +25,7 @@ export function EstimateFormFooterRight() {
}
- value={formattedSubtotal}
+ value={subtotalFormatted}
/>
}
- value={formattedTotal}
+ value={totalFormatted}
textStyle={TotalLineTextStyle.Bold}
/>
diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/utils.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/utils.tsx
index 6af7c4f3a..766dca338 100644
--- a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/utils.tsx
+++ b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/utils.tsx
@@ -10,6 +10,7 @@ import {
repeatValue,
transformToForm,
formattedAmount,
+ toSafeNumber,
} from '@/utils';
import { useEstimateFormContext } from './EstimateFormProvider';
import {
@@ -272,9 +273,11 @@ export const useEstimateSubtotalFormatted = () => {
*/
export const useEstimateDiscount = () => {
const { values } = useFormikContext();
- const discountAmount = parseFloat(values.discount);
+ const discount = toSafeNumber(values.discount);
- return discountAmount;
+ return values?.discount_type === 'percentage'
+ ? (subtotal * discount) / 100
+ : discount;
};
/**
@@ -296,7 +299,7 @@ export const useEstimateDiscountFormatted = () => {
*/
export const useEstimateAdjustment = () => {
const { values } = useFormikContext();
- const adjustmentAmount = parseFloat(values.adjustment);
+ const adjustmentAmount = toSafeNumber(values.adjustment);
return adjustmentAmount;
};
diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooterRight.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooterRight.tsx
index 07474b807..3574d687f 100644
--- a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooterRight.tsx
+++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormFooterRight.tsx
@@ -12,23 +12,23 @@ import {
import {
useReceiptAdjustmentFormatted,
useReceiptDiscountAmountFormatted,
+ useReceiptSubtotalFormatted,
+ useReceiptTotalFormatted,
useReceiptTotals,
} from './utils';
import { DiscountTotalLine } from '../../Invoices/InvoiceForm/DiscountTotalLine';
import { AdjustmentTotalLine } from '../../Invoices/InvoiceForm/AdjustmentTotalLine';
export function ReceiptFormFooterRight() {
- const {
- formattedSubtotal,
- formattedTotal,
- formattedDueTotal,
- formattedPaymentTotal,
- } = useReceiptTotals();
+ const { formattedDueTotal, formattedPaymentTotal } = useReceiptTotals();
const {
values: { currency_code },
} = useFormikContext();
+ const subtotalFormatted = useReceiptSubtotalFormatted();
+ const totalFormatted = useReceiptTotalFormatted();
+
const discountAmount = useReceiptDiscountAmountFormatted();
const adjustmentAmount = useReceiptAdjustmentFormatted();
@@ -36,7 +36,7 @@ export function ReceiptFormFooterRight() {
}
- value={formattedSubtotal}
+ value={subtotalFormatted}
/>
}
- value={formattedTotal}
+ value={totalFormatted}
borderStyle={TotalLineBorderStyle.SingleDark}
textStyle={TotalLineTextStyle.Bold}
/>
diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx
index 656fd41a9..a5ee40d50 100644
--- a/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx
+++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptForm/utils.tsx
@@ -268,14 +268,40 @@ export const useReceiptSubtotal = () => {
return subtotal;
};
+/**
+ * Retrieves the formatted subtotal.
+ * @returns {string}
+ */
+export const useReceiptSubtotalFormatted = () => {
+ const subtotal = useReceiptSubtotal();
+ const { values } = useFormikContext();
+
+ return formattedAmount(subtotal, values.currency_code, { money: true });
+};
+
+/**
+ * Retrieves the receipt discount amount.
+ * @returns {number}
+ */
+export const useReceiptDiscountAmount = () => {
+ const { values } = useFormikContext();
+ const subtotal = useReceiptSubtotal();
+ const discount = toSafeNumber(values.discount);
+
+ return values?.discount_type === 'percentage'
+ ? (subtotal * discount) / 100
+ : discount;
+};
+
/**
* Retrieves the formatted discount amount.
* @returns {string}
*/
export const useReceiptDiscountAmountFormatted = () => {
const { values } = useFormikContext();
+ const discount = useReceiptDiscountAmount();
- return formattedAmount(values.discount, values.currency_code);
+ return formattedAmount(discount, values.currency_code);
};
/**