From 46ec466f68294aea7d64f4457c226bdc9366af57 Mon Sep 17 00:00:00 2001 From: Agata Kosior Date: Tue, 2 Dec 2025 09:48:05 +0100 Subject: [PATCH] fix: revert 72238-taxes-field --- .../MoneyRequestConfirmationList.tsx | 31 +++++---------- .../MoneyRequestConfirmationListFooter.tsx | 20 ++-------- .../ReportActionItem/MoneyRequestView.tsx | 2 +- src/hooks/usePolicyForTransaction.ts | 39 ------------------- src/libs/PolicyUtils.ts | 4 +- src/libs/actions/IOU.ts | 6 +-- .../step/IOURequestStepConfirmation.tsx | 2 +- .../step/IOURequestStepParticipants.tsx | 19 +-------- .../step/IOURequestStepTaxAmountPage.tsx | 8 ++-- .../step/IOURequestStepTaxRatePage.tsx | 3 +- 10 files changed, 25 insertions(+), 109 deletions(-) delete mode 100644 src/hooks/usePolicyForTransaction.ts diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 9d3734cc611..3a65c74e683 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -253,8 +253,6 @@ function MoneyRequestConfirmationList({ selector: mileageRateSelector, canBeMissing: true, }); - const {policyForMovingExpenses} = usePolicyForMovingExpenses(); - const isMovingTransactionFromTrackExpense = isMovingTransactionFromTrackExpenseUtil(action); const [defaultMileageRateReal] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, { selector: mileageRateSelector, canBeMissing: true, @@ -282,6 +280,7 @@ function MoneyRequestConfirmationList({ isTestDriveReceipt || isManagerMcTestReceipt, ); + const {policyForMovingExpenses} = usePolicyForMovingExpenses(); const isTrackExpense = iouType === CONST.IOU.TYPE.TRACK; const policy = isTrackExpense ? policyForMovingExpenses : (policyReal ?? policyDraft); const policyCategories = policyCategoriesReal ?? policyCategoriesDraft; @@ -299,6 +298,7 @@ function MoneyRequestConfirmationList({ const isTypeInvoice = iouType === CONST.IOU.TYPE.INVOICE; const isScanRequest = useMemo(() => isScanRequestUtil(transaction), [transaction]); const isCreateExpenseFlow = !!transaction?.isFromGlobalCreate && !isPerDiemRequest; + const isMovingTransactionFromTrackExpense = isMovingTransactionFromTrackExpenseUtil(action); const transactionID = transaction?.transactionID; const customUnitRateID = getRateID(transaction); @@ -342,18 +342,16 @@ function MoneyRequestConfirmationList({ const policyTagLists = useMemo(() => getTagLists(policyTags), [policyTags]); - const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat || isTrackExpense, policy, isDistanceRequest, isPerDiemRequest); + const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy, isDistanceRequest, isPerDiemRequest); // Update the tax code when the default changes (for example, because the transaction currency changed) - const defaultTaxCode = getDefaultTaxCode(policy, transaction) ?? (isMovingTransactionFromTrackExpense ? (getDefaultTaxCode(policyForMovingExpenses, transaction) ?? '') : ''); - + const defaultTaxCode = getDefaultTaxCode(policy, transaction) ?? ''; useEffect(() => { - if (!transactionID || isMovingTransactionFromTrackExpense || isReadOnly) { + if (!transactionID || isReadOnly) { return; } setMoneyRequestTaxRate(transactionID, defaultTaxCode); - // trigger this useEffect also when policyID changes - the defaultTaxCode may stay the same - }, [defaultTaxCode, isMovingTransactionFromTrackExpense, isReadOnly, transactionID, policyID]); + }, [defaultTaxCode, transactionID, isReadOnly]); const distance = getDistanceInMeters(transaction, unit); const prevDistance = usePrevious(distance); @@ -504,18 +502,15 @@ function MoneyRequestConfirmationList({ // Calculate and set tax amount in transaction draft const taxableAmount = isDistanceRequest ? DistanceRequestUtils.getTaxableAmount(policy, customUnitRateID, distance) : (transaction?.amount ?? 0); - // First we'll try to get the tax value from the chosen policy and if not found, we'll try to get it from the policy for moving expenses (only if the transaction is moving from track expense) - const taxPercentage = - getTaxValue(policy, transaction, transaction?.taxCode ?? defaultTaxCode) ?? - (isMovingTransactionFromTrackExpense ? getTaxValue(policyForMovingExpenses, transaction, transaction?.taxCode ?? defaultTaxCode) : ''); + const taxPercentage = getTaxValue(policy, transaction, transaction?.taxCode ?? defaultTaxCode) ?? ''; const taxAmount = calculateTaxAmount(taxPercentage, taxableAmount, transaction?.currency ?? CONST.CURRENCY.USD); const taxAmountInSmallestCurrencyUnits = convertToBackendAmount(Number.parseFloat(taxAmount.toString())); useEffect(() => { - if (!transactionID || isMovingTransactionFromTrackExpense || isReadOnly) { + if (!transactionID || isReadOnly) { return; } setMoneyRequestTaxAmount(transactionID, taxAmountInSmallestCurrencyUnits); - }, [transactionID, taxAmountInSmallestCurrencyUnits, isMovingTransactionFromTrackExpense, isReadOnly]); + }, [transactionID, taxAmountInSmallestCurrencyUnits, isReadOnly]); // If completing a split expense fails, set didConfirm to false to allow the user to edit the fields again if (isEditingSplitBill && didConfirm) { @@ -840,7 +835,7 @@ function MoneyRequestConfirmationList({ if (!transactionID || iouCategory || !shouldShowCategories || enabledCategories.length !== 1 || !isCategoryRequired) { return; } - setMoneyRequestCategory(transactionID, enabledCategories.at(0)?.name ?? '', policy?.id, isMovingTransactionFromTrackExpense); + setMoneyRequestCategory(transactionID, enabledCategories.at(0)?.name ?? '', policy?.id); // Keep 'transaction' out to ensure that we auto select the option only once // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [shouldShowCategories, policyCategories, isCategoryRequired, policy?.id]); @@ -924,11 +919,6 @@ function MoneyRequestConfirmationList({ return; } - if (shouldShowTax && !Object.keys(policy?.taxRates?.taxes ?? {}).some((key) => key === transaction.taxCode)) { - setFormError('violations.taxOutOfPolicy'); - return; - } - if (isPerDiemRequest && (transaction.comment?.customUnit?.subRates ?? []).length === 0) { setFormError('iou.error.invalidSubrateLength'); return; @@ -986,7 +976,6 @@ function MoneyRequestConfirmationList({ isMerchantRequired, isMerchantEmpty, shouldDisplayFieldError, - shouldShowTax, transaction, iouCategory.length, policyTags, diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index bde1179a237..ab571df5c7f 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -16,7 +16,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import {getDecodedCategoryName} from '@libs/CategoryUtils'; import {convertToDisplayString} from '@libs/CurrencyUtils'; import DistanceRequestUtils from '@libs/DistanceRequestUtils'; -import {isMovingTransactionFromTrackExpense, shouldShowReceiptEmptyState} from '@libs/IOUUtils'; +import {shouldShowReceiptEmptyState} from '@libs/IOUUtils'; import Navigation from '@libs/Navigation/Navigation'; import {getDestinationForDisplay, getSubratesFields, getSubratesForDisplay, getTimeDifferenceIntervals, getTimeForDisplay} from '@libs/PerDiemRequestUtils'; import {canSendInvoice, getPerDiemCustomUnit} from '@libs/PolicyUtils'; @@ -274,7 +274,7 @@ function MoneyRequestConfirmationListFooter({ const [outstandingReportsByPolicyID] = useOnyx(ONYXKEYS.DERIVED.OUTSTANDING_REPORTS_BY_POLICY_ID, { canBeMissing: true, }); - const {policyForMovingExpensesID, policyForMovingExpenses, shouldSelectPolicy} = usePolicyForMovingExpenses(); + const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(); const [currentUserLogin] = useOnyx(ONYXKEYS.SESSION, {selector: emailSelector, canBeMissing: true}); const isUnreported = transaction?.reportID === CONST.REPORT.UNREPORTED_REPORT_ID; @@ -353,13 +353,11 @@ function MoneyRequestConfirmationListFooter({ return name; }, [isUnreported, selectedReport, selectedPolicy, translate]); - const isMovingCurrentTransactionFromTrackExpense = isMovingTransactionFromTrackExpense(action); - // When creating an expense in an individual report, the report field becomes read-only // since the destination is already determined and there's no need to show a selectable list. const shouldReportBeEditable = (isFromGlobalCreate ? allOutstandingReports.length > 1 : availableOutstandingReports.length > 1) && !isMoneyRequestReport(reportID, allReports); - const taxRates = policy?.taxRates ?? (isMovingCurrentTransactionFromTrackExpense ? policyForMovingExpenses?.taxRates : null); + const taxRates = policy?.taxRates ?? null; // In Send Money and Split Bill with Scan flow, we don't allow the Merchant or Date to be edited. For distance requests, don't show the merchant as there's already another "Distance" menu item const shouldShowDate = shouldShowSmartScanFields || isDistanceRequest; // Determines whether the tax fields can be modified. @@ -374,19 +372,11 @@ function MoneyRequestConfirmationListFooter({ const taxAmount = getTaxAmount(transaction, false); const formattedTaxAmount = convertToDisplayString(taxAmount, iouCurrencyCode); // Get the tax rate title based on the policy and transaction - let taxRateTitle; - if (getTaxName(policy, transaction)) { - taxRateTitle = getTaxName(policy, transaction); - } else if (isMovingCurrentTransactionFromTrackExpense) { - taxRateTitle = getTaxName(policyForMovingExpenses, transaction); - } else { - taxRateTitle = ''; - } + const taxRateTitle = getTaxName(policy, transaction); // Determine if the merchant error should be displayed const shouldDisplayMerchantError = isMerchantRequired && (shouldDisplayFieldError || formError === 'iou.error.invalidMerchant') && isMerchantEmpty; const shouldDisplayDistanceRateError = formError === 'iou.error.invalidRate'; const shouldDisplayTagError = formError === 'violations.tagOutOfPolicy'; - const shouldDisplayTaxRateError = formError === 'violations.taxOutOfPolicy'; const shouldDisplayCategoryError = formError === 'violations.categoryOutOfPolicy'; const showReceiptEmptyState = shouldShowReceiptEmptyState(iouType, action, policy, isPerDiemRequest); @@ -705,8 +695,6 @@ function MoneyRequestConfirmationListFooter({ }} disabled={didConfirm} interactive={canModifyTaxFields} - brickRoadIndicator={shouldDisplayTaxRateError ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} - errorText={shouldDisplayTaxRateError ? translate(formError) : ''} /> ), shouldShow: shouldShowTax, diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 143b531dee2..be594c9c3df 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -307,7 +307,7 @@ function MoneyRequestView({ const canEditReimbursable = isEditable && canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.REIMBURSABLE, undefined, isChatReportArchived); const shouldShowAttendees = useMemo(() => shouldShowAttendeesTransactionUtils(iouType, policy), [iouType, policy]); - const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat || isExpenseUnreported, policy, isDistanceRequest, isPerDiemRequest); + const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy, isDistanceRequest, isPerDiemRequest); const tripID = getTripIDFromTransactionParentReportID(parentReport?.parentReportID); const shouldShowViewTripDetails = hasReservationList(transaction) && !!tripID; diff --git a/src/hooks/usePolicyForTransaction.ts b/src/hooks/usePolicyForTransaction.ts deleted file mode 100644 index 31f33c9b5c8..00000000000 --- a/src/hooks/usePolicyForTransaction.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type {OnyxEntry} from 'react-native-onyx'; -import {isExpenseUnreported} from '@libs/TransactionUtils'; -import CONST from '@src/CONST'; -import ONYXKEYS from '@src/ONYXKEYS'; -import type {Policy, Report, Transaction} from '@src/types/onyx'; -import useOnyx from './useOnyx'; -import usePolicyForMovingExpenses from './usePolicyForMovingExpenses'; - -type UsePolicyForTransactionParams = { - /** The transaction to determine the policy for */ - transaction: OnyxEntry; - - /** The report associated with the transaction */ - report: OnyxEntry; - - /** The current action being performed */ - action: string; - - /** The type of IOU (split, track, submit, etc.) */ - iouType: string; -}; - -type UsePolicyForTransactionResult = { - /** The policy to use for the transaction */ - policy: OnyxEntry; -}; - -function usePolicyForTransaction({transaction, report, action, iouType}: UsePolicyForTransactionParams): UsePolicyForTransactionResult { - const {policyForMovingExpenses} = usePolicyForMovingExpenses(); - const isUnreportedExpense = isExpenseUnreported(transaction); - const isCreatingTrackExpense = action === CONST.IOU.ACTION.CREATE && iouType === CONST.IOU.TYPE.TRACK; - - const [reportPolicy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`, {canBeMissing: true}); - const policy = isUnreportedExpense || isCreatingTrackExpense ? policyForMovingExpenses : reportPolicy; - - return {policy}; -} - -export default usePolicyForTransaction; diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index 46d0718af60..eae0ba15ecf 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -576,13 +576,13 @@ function isCollectPolicy(policy: OnyxEntry): boolean { return policy?.type === CONST.POLICY.TYPE.TEAM; } -function isTaxTrackingEnabled(isPolicyExpenseChatOrUnreportedExpense: boolean, policy: OnyxEntry, isDistanceRequest: boolean, isPerDiemRequest = false): boolean { +function isTaxTrackingEnabled(isPolicyExpenseChat: boolean, policy: OnyxEntry, isDistanceRequest: boolean, isPerDiemRequest = false): boolean { if (isPerDiemRequest) { return false; } const distanceUnit = getDistanceRateCustomUnit(policy); const customUnitID = distanceUnit?.customUnitID ?? CONST.DEFAULT_NUMBER_ID; - const isPolicyTaxTrackingEnabled = isPolicyExpenseChatOrUnreportedExpense && policy?.tax?.trackingEnabled; + const isPolicyTaxTrackingEnabled = isPolicyExpenseChat && policy?.tax?.trackingEnabled; const isTaxEnabledForDistance = isPolicyTaxTrackingEnabled && !!customUnitID && policy?.customUnits?.[customUnitID]?.attributes?.taxEnabled; return !!(isDistanceRequest ? isTaxEnabledForDistance : isPolicyTaxTrackingEnabled); diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 1bb91737909..2583b4255fd 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -1235,11 +1235,8 @@ function setMoneyRequestPendingFields(transactionID: string, pendingFields: Onyx Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {pendingFields}); } -function setMoneyRequestCategory(transactionID: string, category: string, policyID?: string, isMovingFromTrackExpense?: boolean) { +function setMoneyRequestCategory(transactionID: string, category: string, policyID?: string) { Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {category}); - if (isMovingFromTrackExpense) { - return; - } if (!policyID) { setMoneyRequestTaxRate(transactionID, ''); setMoneyRequestTaxAmount(transactionID, null); @@ -11730,7 +11727,6 @@ function completePaymentOnboarding( shouldSkipTestDriveModal: true, }); } - function payMoneyRequest( paymentType: PaymentMethodType, chatReport: OnyxTypes.Report, diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index ff42952901c..d4da6d03087 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -394,7 +394,7 @@ function IOURequestStepConfirmation({ if (!isDistanceRequest || !!item?.category) { continue; } - setMoneyRequestCategory(item.transactionID, defaultCategory, policy?.id, isMovingTransactionFromTrackExpense); + setMoneyRequestCategory(item.transactionID, defaultCategory, policy?.id); } // Prevent resetting to default when unselect category // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps diff --git a/src/pages/iou/request/step/IOURequestStepParticipants.tsx b/src/pages/iou/request/step/IOURequestStepParticipants.tsx index c98e9f2d88f..bb3776bfa0c 100644 --- a/src/pages/iou/request/step/IOURequestStepParticipants.tsx +++ b/src/pages/iou/request/step/IOURequestStepParticipants.tsx @@ -7,7 +7,6 @@ import FormHelpMessage from '@components/FormHelpMessage'; import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; -import usePolicyForMovingExpenses from '@hooks/usePolicyForMovingExpenses'; import useThemeStyles from '@hooks/useThemeStyles'; import {setTransactionReport} from '@libs/actions/Transaction'; import {READ_COMMANDS} from '@libs/API/types'; @@ -79,7 +78,6 @@ function IOURequestStepParticipants({ const {translate} = useLocalize(); const styles = useThemeStyles(); const isFocused = useIsFocused(); - const {policyForMovingExpensesID} = usePolicyForMovingExpenses(); const [skipConfirmation] = useOnyx(`${ONYXKEYS.COLLECTION.SKIP_CONFIRMATION}${initialTransactionID}`, {canBeMissing: true}); const [optimisticTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_DRAFT, { selector: transactionDraftValuesSelector, @@ -321,7 +319,7 @@ function IOURequestStepParticipants({ const tag = isMovingTransactionFromTrackExpense && transaction?.tag ? transaction?.tag : ''; setMoneyRequestTag(transaction.transactionID, tag); const category = isMovingTransactionFromTrackExpense && transaction?.category ? transaction?.category : ''; - setMoneyRequestCategory(transaction.transactionID, category, isMovingTransactionFromTrackExpense ? policyForMovingExpensesID : '', isMovingTransactionFromTrackExpense); + setMoneyRequestCategory(transaction.transactionID, category); if (shouldUpdateTransactionReportID) { setTransactionReport(transaction.transactionID, {reportID: transactionReportID}, true); } @@ -376,20 +374,7 @@ function IOURequestStepParticipants({ }); } }); - }, [ - action, - participants, - iouType, - initialTransaction, - transactions, - initialTransactionID, - reportID, - waitForKeyboardDismiss, - isMovingTransactionFromTrackExpense, - policyForMovingExpensesID, - introSelected, - backTo, - ]); + }, [action, participants, iouType, initialTransaction, transactions, initialTransactionID, reportID, waitForKeyboardDismiss, isMovingTransactionFromTrackExpense, backTo, introSelected]); const navigateBack = useCallback(() => { if (backTo) { diff --git a/src/pages/iou/request/step/IOURequestStepTaxAmountPage.tsx b/src/pages/iou/request/step/IOURequestStepTaxAmountPage.tsx index 5aaad8b556c..c54346dc511 100644 --- a/src/pages/iou/request/step/IOURequestStepTaxAmountPage.tsx +++ b/src/pages/iou/request/step/IOURequestStepTaxAmountPage.tsx @@ -6,7 +6,6 @@ import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails' import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import usePermissions from '@hooks/usePermissions'; -import usePolicyForTransaction from '@hooks/usePolicyForTransaction'; import useRestartOnReceiptFailure from '@hooks/useRestartOnReceiptFailure'; import {setDraftSplitTransaction, setMoneyRequestCurrency, setMoneyRequestParticipantsFromReport, setMoneyRequestTaxAmount, updateMoneyRequestTaxAmount} from '@libs/actions/IOU'; import {convertToBackendAmount, isValidCurrencyCode} from '@libs/CurrencyUtils'; @@ -52,10 +51,9 @@ function IOURequestStepTaxAmountPage({ transaction, report, }: IOURequestStepTaxAmountPageProps) { - const {policy} = usePolicyForTransaction({transaction, report, action, iouType}); - - const [policyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policy?.id}`, {canBeMissing: true}); - const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policy?.id}`, {canBeMissing: true}); + const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`, {canBeMissing: true}); + const [policyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${report?.policyID}`, {canBeMissing: true}); + const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${report?.policyID}`, {canBeMissing: true}); const [splitDraftTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${transactionID}`, {canBeMissing: true}); const {translate} = useLocalize(); const textInput = useRef(null); diff --git a/src/pages/iou/request/step/IOURequestStepTaxRatePage.tsx b/src/pages/iou/request/step/IOURequestStepTaxRatePage.tsx index 355e648d5a9..7223775263d 100644 --- a/src/pages/iou/request/step/IOURequestStepTaxRatePage.tsx +++ b/src/pages/iou/request/step/IOURequestStepTaxRatePage.tsx @@ -5,7 +5,6 @@ import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails' import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import usePermissions from '@hooks/usePermissions'; -import usePolicyForTransaction from '@hooks/usePolicyForTransaction'; import useRestartOnReceiptFailure from '@hooks/useRestartOnReceiptFailure'; import {convertToBackendAmount} from '@libs/CurrencyUtils'; import Navigation from '@libs/Navigation/Navigation'; @@ -41,8 +40,8 @@ function IOURequestStepTaxRatePage({ report, }: IOURequestStepTaxRatePageProps) { const {translate} = useLocalize(); - const {policy} = usePolicyForTransaction({transaction, report, action, iouType}); + const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`, {canBeMissing: true}); const [policyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policy?.id}`, {canBeMissing: true}); const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policy?.id}`, {canBeMissing: true}); const [splitDraftTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${transactionID}`, {canBeMissing: true});