diff --git a/src/pages/iou/request/step/IOURequestStepAmount.tsx b/src/pages/iou/request/step/IOURequestStepAmount.tsx index 11a779f32f02..54352a1b8fba 100644 --- a/src/pages/iou/request/step/IOURequestStepAmount.tsx +++ b/src/pages/iou/request/step/IOURequestStepAmount.tsx @@ -56,16 +56,6 @@ type IOURequestStepAmountProps = IOURequestStepAmountOnyxProps & transaction: OnyxEntry; }; -function getTaxAmount(transaction: OnyxEntry, policy: OnyxEntry, newAmount: number, currency: string) { - if (!transaction?.amount) { - return 0; - } - const transactionTaxCode = transaction?.taxCode ?? ''; - const defaultTaxCode = TransactionUtils.getDefaultTaxCode(policy, transaction, currency) ?? ''; - const taxPercentage = TransactionUtils.getTaxValue(policy, transaction, transactionTaxCode ?? defaultTaxCode) ?? ''; - return CurrencyUtils.convertToBackendAmount(TransactionUtils.calculateTaxAmount(taxPercentage, newAmount)); -} - function IOURequestStepAmount({ report, route: { @@ -279,7 +269,8 @@ function IOURequestStepAmount({ } // If the value hasn't changed, don't request to save changes on the server and just close the modal - if (newAmount === TransactionUtils.getAmount(transaction) && currency === TransactionUtils.getCurrency(transaction)) { + const transactionCurrency = TransactionUtils.getCurrency(transaction); + if (newAmount === TransactionUtils.getAmount(transaction) && currency === transactionCurrency) { Navigation.dismissModal(); return; } @@ -290,8 +281,11 @@ function IOURequestStepAmount({ return; } - const taxAmount = getTaxAmount(transaction, policy, newAmount, currency); - const taxCode = TransactionUtils.getDefaultTaxCode(policy, transaction, currency) ?? ''; + // If currency has changed, then we get the default tax rate based on currency, otherwise we use the current tax rate selected in transaction, if we have it. + const transactionTaxCode = transaction?.taxCode ?? ''; + const taxCode = currency !== transactionCurrency ? TransactionUtils.getDefaultTaxCode(policy, transaction, currency) ?? '' : transactionTaxCode; + const taxPercentage = TransactionUtils.getTaxValue(policy, transaction, taxCode) ?? ''; + const taxAmount = CurrencyUtils.convertToBackendAmount(TransactionUtils.calculateTaxAmount(taxPercentage, newAmount)); IOU.updateMoneyRequestAmountAndCurrency({transactionID, transactionThreadReportID: reportID, currency, amount: newAmount, taxAmount, policy, taxCode}); Navigation.dismissModal();