From d0126ffc2ccb4af30f0d76962f995fa23b50a53e Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Sun, 17 Dec 2023 17:51:17 +0200 Subject: [PATCH] fix: the currency code of transaction tax rate entry --- .../webapp/src/containers/Entries/utils.tsx | 43 +++++++++++-------- .../Purchases/Bills/BillForm/utils.tsx | 4 +- .../Sales/Invoices/InvoiceForm/utils.tsx | 4 +- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/packages/webapp/src/containers/Entries/utils.tsx b/packages/webapp/src/containers/Entries/utils.tsx index 50f6555e34..326669cd47 100644 --- a/packages/webapp/src/containers/Entries/utils.tsx +++ b/packages/webapp/src/containers/Entries/utils.tsx @@ -284,26 +284,31 @@ export const useComposeRowsOnRemoveTableRow = () => { /** * Retrieves the aggregate tax rates from the given item entries. + * @param {string} currencyCode - + * @param {any} taxRates - + * @param {any} entries - */ -export const aggregateItemEntriesTaxRates = R.curry((taxRates, entries) => { - const taxRatesById = keyBy(taxRates, 'id'); +export const aggregateItemEntriesTaxRates = R.curry( + (currencyCode, taxRates, entries) => { + const taxRatesById = keyBy(taxRates, 'id'); - // Calculate the total tax amount of invoice entries. - const filteredEntries = entries.filter((e) => e.tax_rate_id); - const groupedTaxRates = groupBy(filteredEntries, 'tax_rate_id'); + // Calculate the total tax amount of invoice entries. + const filteredEntries = entries.filter((e) => e.tax_rate_id); + const groupedTaxRates = groupBy(filteredEntries, 'tax_rate_id'); - return Object.keys(groupedTaxRates).map((taxRateId) => { - const taxRate = taxRatesById[taxRateId]; - const taxRates = groupedTaxRates[taxRateId]; - const totalTaxAmount = sumBy(taxRates, 'tax_amount'); - const taxAmountFormatted = formattedAmount(totalTaxAmount, 'USD'); + return Object.keys(groupedTaxRates).map((taxRateId) => { + const taxRate = taxRatesById[taxRateId]; + const taxRates = groupedTaxRates[taxRateId]; + const totalTaxAmount = sumBy(taxRates, 'tax_amount'); + const taxAmountFormatted = formattedAmount(totalTaxAmount, currencyCode); - return { - taxRateId, - taxRate: taxRate.rate, - label: `${taxRate.name} [${taxRate.rate}%]`, - taxAmount: totalTaxAmount, - taxAmountFormatted, - }; - }); -}); + return { + taxRateId, + taxRate: taxRate.rate, + label: `${taxRate.name} [${taxRate.rate}%]`, + taxAmount: totalTaxAmount, + taxAmountFormatted, + }; + }); + }, +); diff --git a/packages/webapp/src/containers/Purchases/Bills/BillForm/utils.tsx b/packages/webapp/src/containers/Purchases/Bills/BillForm/utils.tsx index 2d82bfea5e..763573b309 100644 --- a/packages/webapp/src/containers/Purchases/Bills/BillForm/utils.tsx +++ b/packages/webapp/src/containers/Purchases/Bills/BillForm/utils.tsx @@ -322,8 +322,8 @@ export const useBillAggregatedTaxRates = () => { const { taxRates } = useBillFormContext(); const aggregateTaxRates = React.useMemo( - () => aggregateItemEntriesTaxRates(taxRates), - [taxRates], + () => aggregateItemEntriesTaxRates(values.currency_code, taxRates), + [values.currency_code, taxRates], ); // Calculate the total tax amount of bill entries. return React.useMemo(() => { diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx index 4186cbc63d..7b8a228148 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx +++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceForm/utils.tsx @@ -333,8 +333,8 @@ export const useInvoiceAggregatedTaxRates = () => { const { taxRates } = useInvoiceFormContext(); const aggregateTaxRates = React.useMemo( - () => aggregateItemEntriesTaxRates(taxRates), - [taxRates], + () => aggregateItemEntriesTaxRates(values.currency_code, taxRates), + [values.currency_code, taxRates], ); // Calculate the total tax amount of invoice entries. return React.useMemo(() => {