diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 3a65c74e6837..b89435f91164 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -347,11 +347,11 @@ function MoneyRequestConfirmationList({ // Update the tax code when the default changes (for example, because the transaction currency changed) const defaultTaxCode = getDefaultTaxCode(policy, transaction) ?? ''; useEffect(() => { - if (!transactionID || isReadOnly) { + if (!transactionID || isReadOnly || !shouldShowTax) { return; } setMoneyRequestTaxRate(transactionID, defaultTaxCode); - }, [defaultTaxCode, transactionID, isReadOnly]); + }, [defaultTaxCode, transactionID, isReadOnly, shouldShowTax]); const distance = getDistanceInMeters(transaction, unit); const prevDistance = usePrevious(distance); @@ -506,11 +506,11 @@ function MoneyRequestConfirmationList({ const taxAmount = calculateTaxAmount(taxPercentage, taxableAmount, transaction?.currency ?? CONST.CURRENCY.USD); const taxAmountInSmallestCurrencyUnits = convertToBackendAmount(Number.parseFloat(taxAmount.toString())); useEffect(() => { - if (!transactionID || isReadOnly) { + if (!transactionID || isReadOnly || !shouldShowTax) { return; } setMoneyRequestTaxAmount(transactionID, taxAmountInSmallestCurrencyUnits); - }, [transactionID, taxAmountInSmallestCurrencyUnits, isReadOnly]); + }, [transactionID, taxAmountInSmallestCurrencyUnits, isReadOnly, shouldShowTax]); // If completing a split expense fails, set didConfirm to false to allow the user to edit the fields again if (isEditingSplitBill && didConfirm) { diff --git a/tests/ui/components/IOURequestStepConfirmationPageTest.tsx b/tests/ui/components/IOURequestStepConfirmationPageTest.tsx index f8f3abc93264..1f27205ba155 100644 --- a/tests/ui/components/IOURequestStepConfirmationPageTest.tsx +++ b/tests/ui/components/IOURequestStepConfirmationPageTest.tsx @@ -3,6 +3,7 @@ import React from 'react'; import Onyx from 'react-native-onyx'; import OnyxUtils from 'react-native-onyx/dist/OnyxUtils'; import {CurrentUserPersonalDetailsProvider} from '@components/CurrentUserPersonalDetailsProvider'; +import HTMLEngineProvider from '@components/HTMLEngineProvider'; import {LocaleContextProvider} from '@components/LocaleContextProvider'; import OnyxListItemProvider from '@components/OnyxListItemProvider'; import IOURequestStepConfirmationWithWritableReportOrNotFound from '@pages/iou/request/step/IOURequestStepConfirmation'; @@ -85,6 +86,7 @@ const REPORT_ID = '1'; const PARTICIPANT_ACCOUNT_ID = 2; const TRANSACTION_ID = '1'; const POLICY_ID = 'test-policy-id'; +const POLICY_CHAT_REPORT_ID = '595'; // Helper to create a policy with tax and distance enabled function createPolicyWithTaxAndDistance(): Policy { @@ -122,10 +124,11 @@ function createPolicyWithTaxAndDistance(): Policy { customUnits: { [CONST.CUSTOM_UNITS.NAME_DISTANCE]: { name: CONST.CUSTOM_UNITS.NAME_DISTANCE, - customUnitID: 'customUnitID', + customUnitID: CONST.CUSTOM_UNITS.NAME_DISTANCE, enabled: true, attributes: { unit: CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES, + taxEnabled: true, }, rates: { altTaxRate: { @@ -145,6 +148,10 @@ function createPolicyWithTaxAndDistance(): Policy { }; } +function HTMLProviderWrapper({children}: {children: React.ReactNode}) { + return {children}; +} + // Helper to create waypoints function createWaypoints(startAddress: string, endAddress: string): WaypointCollection { return { @@ -218,24 +225,26 @@ describe('IOURequestStepConfirmationPageTest', () => { render( - - - - - + + + + + + + , ); @@ -259,24 +268,26 @@ describe('IOURequestStepConfirmationPageTest', () => { render( - - - - - + + + + + + + , ); fireEvent.press(await screen.findByText(translateLocal('iou.splitExpense'))); @@ -308,24 +319,26 @@ describe('IOURequestStepConfirmationPageTest', () => { render( - - - - - + + + + + + + , ); fireEvent.press(await screen.findByText(translateLocal('iou.createExpenses', {expensesNumber: 2}))); @@ -347,6 +360,12 @@ describe('IOURequestStepConfirmationPageTest', () => { policyID: POLICY_ID, type: CONST.REPORT.TYPE.EXPENSE, }); + await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${POLICY_CHAT_REPORT_ID}`, { + reportID: POLICY_CHAT_REPORT_ID, + policyID: POLICY_ID, + type: CONST.REPORT.TYPE.CHAT, + chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT, + }); await Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${TRANSACTION_ID}`, { transactionID: TRANSACTION_ID, reportID: REPORT_ID, @@ -373,30 +392,32 @@ describe('IOURequestStepConfirmationPageTest', () => { created: '2025-01-15', taxCode: 'taxRate1', iouRequestType: CONST.IOU.REQUEST_TYPE.DISTANCE, - participants: [{accountID: PARTICIPANT_ACCOUNT_ID, selected: true}], + participants: [{isPolicyExpenseChat: true, selected: true, reportID: POLICY_CHAT_REPORT_ID}], }); }); const {rerender} = render( - - - - - + + + + + + + , ); @@ -436,24 +457,26 @@ describe('IOURequestStepConfirmationPageTest', () => { rerender( - - - - - + + + + + + + , ); @@ -480,6 +503,12 @@ describe('IOURequestStepConfirmationPageTest', () => { policyID: POLICY_ID, type: CONST.REPORT.TYPE.EXPENSE, }); + await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${POLICY_CHAT_REPORT_ID}`, { + reportID: POLICY_CHAT_REPORT_ID, + policyID: POLICY_ID, + type: CONST.REPORT.TYPE.CHAT, + chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT, + }); await Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${TRANSACTION_ID}`, { transactionID: TRANSACTION_ID, reportID: REPORT_ID, @@ -490,30 +519,32 @@ describe('IOURequestStepConfirmationPageTest', () => { taxCode: 'taxRate1', taxAmount: 476, iouRequestType: CONST.IOU.REQUEST_TYPE.MANUAL, - participants: [{accountID: PARTICIPANT_ACCOUNT_ID, selected: true}], + participants: [{isPolicyExpenseChat: true, selected: true, reportID: POLICY_CHAT_REPORT_ID}], }); }); const {rerender} = render( - - - - - + + + + + + + , ); @@ -534,24 +565,26 @@ describe('IOURequestStepConfirmationPageTest', () => { rerender( - - - - - + + + + + + + , ); @@ -633,24 +666,26 @@ describe('IOURequestStepConfirmationPageTest', () => { render( - - - - - + + + + + + + , ); @@ -691,6 +726,12 @@ describe('IOURequestStepConfirmationPageTest', () => { await act(async () => { await Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY}${POLICY_ID}`, policy); + await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${POLICY_CHAT_REPORT_ID}`, { + reportID: POLICY_CHAT_REPORT_ID, + policyID: POLICY_ID, + type: CONST.REPORT.TYPE.CHAT, + chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT, + }); await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${REPORT_ID}`, { reportID: REPORT_ID, policyID: POLICY_ID, @@ -722,30 +763,32 @@ describe('IOURequestStepConfirmationPageTest', () => { created: '2025-01-15', taxCode: 'taxRate1', iouRequestType: CONST.IOU.REQUEST_TYPE.DISTANCE, - participants: [{accountID: PARTICIPANT_ACCOUNT_ID, selected: true}], + participants: [{isPolicyExpenseChat: true, selected: true, reportID: POLICY_CHAT_REPORT_ID}], }); }); const {rerender} = render( - - - - - + + + + + + + , ); @@ -784,24 +827,26 @@ describe('IOURequestStepConfirmationPageTest', () => { rerender( - - - - - + + + + + + + , );