From 0459a32b3af4f8bc8cb717b159e587b425fae5e5 Mon Sep 17 00:00:00 2001 From: rory Date: Mon, 20 Oct 2025 18:33:54 -0700 Subject: [PATCH 1/2] Remove usePrevious tracking to fix waypoints not updating tax --- .../MoneyRequestConfirmationList.tsx | 45 +++++-------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 526464b893d4a..a55f29d8cdd2d 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -332,27 +332,19 @@ function MoneyRequestConfirmationList({ const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy, isDistanceRequest, isPerDiemRequest); - const previousTransactionAmount = usePrevious(transaction?.amount); - const previousTransactionCurrency = usePrevious(transaction?.currency); - const previousTransactionModifiedCurrency = usePrevious(transaction?.modifiedCurrency); - const previousCustomUnitRateID = usePrevious(customUnitRateID); useEffect(() => { - // previousTransaction is in the condition because if it is falsy, it means this is the first time the useEffect is triggered after we load it, so we should calculate the default - // tax even if the other parameters are the same against their previous values. + // Set the default tax code when conditions change if ( !shouldShowTax || !transaction || !transactionID || - (transaction.taxCode && - previousTransactionModifiedCurrency === transaction.modifiedCurrency && - previousTransactionCurrency === transaction.currency && - previousCustomUnitRateID === customUnitRateID) + transaction.taxCode // Skip if tax code is already set ) { return; } const defaultTaxCode = getDefaultTaxCode(policy, transaction); setMoneyRequestTaxRate(transactionID, defaultTaxCode ?? ''); - }, [customUnitRateID, policy, previousCustomUnitRateID, previousTransactionCurrency, previousTransactionModifiedCurrency, shouldShowTax, transaction, transactionID]); + }, [customUnitRateID, policy, shouldShowTax, transaction, transactionID]); const isMovingTransactionFromTrackExpense = isMovingTransactionFromTrackExpenseUtil(action); @@ -487,19 +479,9 @@ function MoneyRequestConfirmationList({ } }, [shouldCalculateDistanceAmount, isReadOnly, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]); - const previousTaxCode = usePrevious(transaction?.taxCode); - // Calculate and set tax amount in transaction draft useEffect(() => { - if ( - !shouldShowTax || - !transaction || - (transaction.taxAmount !== undefined && - previousTransactionAmount === transaction.amount && - previousTransactionCurrency === transaction.currency && - previousCustomUnitRateID === customUnitRateID && - previousTaxCode === transaction.taxCode) - ) { + if (!shouldShowTax || !transaction) { return; } @@ -520,20 +502,13 @@ function MoneyRequestConfirmationList({ const taxPercentage = getTaxValue(policy, transaction, taxCode) ?? ''; const taxAmount = calculateTaxAmount(taxPercentage, taxableAmount, transaction.currency); const taxAmountInSmallestCurrencyUnits = convertToBackendAmount(Number.parseFloat(taxAmount.toString())); - setMoneyRequestTaxAmount(transaction.transactionID, taxAmountInSmallestCurrencyUnits); + + // Only update if the calculated tax amount is different from the current one + if (transaction.taxAmount !== taxAmountInSmallestCurrencyUnits) { + setMoneyRequestTaxAmount(transaction.transactionID, taxAmountInSmallestCurrencyUnits); + } } - }, [ - policy, - shouldShowTax, - previousTransactionAmount, - previousTransactionCurrency, - transaction, - isDistanceRequest, - customUnitRateID, - previousCustomUnitRateID, - previousTaxCode, - distance, - ]); + }, [policy, shouldShowTax, transaction, isDistanceRequest, customUnitRateID, distance]); // If completing a split expense fails, set didConfirm to false to allow the user to edit the fields again if (isEditingSplitBill && didConfirm) { From 13021fab00ba2dd392a71160b1774d858e62b889 Mon Sep 17 00:00:00 2001 From: rory Date: Mon, 20 Oct 2025 18:39:25 -0700 Subject: [PATCH 2/2] Fix manual currency change case too --- src/components/MoneyRequestConfirmationList.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index a55f29d8cdd2d..227090ceb548b 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -334,16 +334,16 @@ function MoneyRequestConfirmationList({ useEffect(() => { // Set the default tax code when conditions change - if ( - !shouldShowTax || - !transaction || - !transactionID || - transaction.taxCode // Skip if tax code is already set - ) { + if (!shouldShowTax || !transaction || !transactionID) { return; } const defaultTaxCode = getDefaultTaxCode(policy, transaction); - setMoneyRequestTaxRate(transactionID, defaultTaxCode ?? ''); + const currentTaxCode = transaction.taxCode ?? ''; + + // Update tax code if it's different from what should be the default + if (defaultTaxCode !== currentTaxCode) { + setMoneyRequestTaxRate(transactionID, defaultTaxCode ?? ''); + } }, [customUnitRateID, policy, shouldShowTax, transaction, transactionID]); const isMovingTransactionFromTrackExpense = isMovingTransactionFromTrackExpenseUtil(action);