diff --git a/src/libs/actions/IOU/index.ts b/src/libs/actions/IOU/index.ts index 823e6a08861b0..095775b1f4449 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -1741,13 +1741,14 @@ function removeMoneyRequestOdometerImage(transactionID: string, imageType: Odome * Set the distance rate of a transaction. * Used when creating a new transaction or moving an existing one from Self DM */ -function setMoneyRequestDistanceRate(transactionID: string, customUnitRateID: string, policy: OnyxEntry, isDraft: boolean) { +function setMoneyRequestDistanceRate(currentTransaction: OnyxEntry, customUnitRateID: string, policy: OnyxEntry, isDraft: boolean) { if (policy) { Onyx.merge(ONYXKEYS.NVP_LAST_SELECTED_DISTANCE_RATES, {[policy.id]: customUnitRateID}); } const distanceRate = DistanceRequestUtils.getRateByCustomUnitRateID({policy, customUnitRateID}); - const transaction = isDraft ? allTransactionDrafts[`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`] : allTransactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`]; + const transactionID = currentTransaction?.transactionID; + const transaction = isDraft ? allTransactionDrafts[`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`] : currentTransaction; let newDistance; if (distanceRate?.unit && distanceRate?.unit !== transaction?.comment?.customUnit?.distanceUnit) { newDistance = DistanceRequestUtils.convertDistanceUnit(getDistanceInMeters(transaction, transaction?.comment?.customUnit?.distanceUnit), distanceRate.unit); @@ -5792,7 +5793,7 @@ function updateMoneyRequestDescription({ /** Updates the distance rate of an expense */ function updateMoneyRequestDistanceRate({ - transactionID, + transaction, transactionThreadReport, parentReport, rateID, @@ -5806,7 +5807,7 @@ function updateMoneyRequestDistanceRate({ updatedTaxCode, parentReportNextStep, }: { - transactionID: string; + transactionID: OnyxEntry; transactionThreadReport: OnyxEntry; parentReport: OnyxEntry; rateID: string; @@ -5826,8 +5827,7 @@ function updateMoneyRequestDistanceRate({ ...(updatedTaxCode ? {taxCode: updatedTaxCode} : {}), }; - const transaction = allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`]; - if (transaction) { + if (transaction?.transactionID) { const existingDistanceUnit = transaction?.comment?.customUnit?.distanceUnit; const newDistanceUnit = DistanceRequestUtils.getRateByCustomUnitRateID({customUnitRateID: rateID, policy})?.unit; @@ -5840,10 +5840,10 @@ function updateMoneyRequestDistanceRate({ let data: UpdateMoneyRequestData; // eslint-disable-next-line @typescript-eslint/no-deprecated if (isTrackExpenseReport(transactionThreadReport) && isSelfDM(parentReport)) { - data = getUpdateTrackExpenseParams(transactionID, transactionThreadReport?.reportID, transactionChanges, policy); + data = getUpdateTrackExpenseParams(transaction?.transactionID, transactionThreadReport?.reportID, transactionChanges, policy); } else { data = getUpdateMoneyRequestParams({ - transactionID, + transactionID: transaction?.transactionID, transactionThreadReport, iouReport: parentReport, transactionChanges, diff --git a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx index 26468764c004d..874d014545bb4 100644 --- a/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistanceRate.tsx @@ -119,11 +119,11 @@ function IOURequestStepDistanceRate({ } if (currentRateID !== customUnitRateID) { - setMoneyRequestDistanceRate(transactionID, customUnitRateID, policy, shouldUseTransactionDraft(action)); + setMoneyRequestDistanceRate(transaction, customUnitRateID, policy, shouldUseTransactionDraft(action)); if (isEditing && transaction?.transactionID) { updateMoneyRequestDistanceRate({ - transactionID: transaction.transactionID, + transaction, transactionThreadReport: report, parentReport, parentReportNextStep, diff --git a/src/pages/workspace/distanceRates/CreateDistanceRatePage.tsx b/src/pages/workspace/distanceRates/CreateDistanceRatePage.tsx index 5275804aac943..c12cf3bcce2ed 100644 --- a/src/pages/workspace/distanceRates/CreateDistanceRatePage.tsx +++ b/src/pages/workspace/distanceRates/CreateDistanceRatePage.tsx @@ -9,9 +9,11 @@ import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import useAutoFocusInput from '@hooks/useAutoFocusInput'; import useLocalize from '@hooks/useLocalize'; +import useOnyx from '@hooks/useOnyx'; import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; import {setMoneyRequestDistanceRate} from '@libs/actions/IOU'; +import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import {getOptimisticRateName, validateRateValue} from '@libs/PolicyDistanceRatesUtils'; import {getDistanceRateCustomUnit} from '@libs/PolicyUtils'; @@ -43,6 +45,7 @@ function CreateDistanceRatePage({ const customUnitRateID = generateCustomUnitID(); const {inputCallbackRef} = useAutoFocusInput(); const isDistanceRateUpgrade = transactionID && reportID; + const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${getNonEmptyStringOnyxID(transactionID)}`, {canBeMissing: true}); const FullPageBlockingView = !customUnitID ? FullPageOfflineBlockingView : View; @@ -67,7 +70,7 @@ function CreateDistanceRatePage({ createPolicyDistanceRate(policyID, customUnitID, newRate); if (isDistanceRateUpgrade) { - setMoneyRequestDistanceRate(transactionID, customUnitRateID, policy, true); + setMoneyRequestDistanceRate(transaction, customUnitRateID, policy, true); Navigation.goBack(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, transactionID, reportID), {compareParams: false}); return; }