diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 977f3c86f287..ec740a4e9843 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -267,7 +267,7 @@ function MoneyRequestConfirmationList({ const currency = (mileageRate as MileageRate)?.currency ?? policyCurrency; - const distance = transaction?.routes?.route0?.distance ?? 0; + const distance = TransactionUtils.getDistance(transaction); const taxRates = policy?.taxRates ?? null; // A flag for showing the categories field diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 9373df336e78..f71a220d0c99 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -195,11 +195,11 @@ function MoneyRequestView({ const currency = policy ? policy.outputCurrency : PolicyUtils.getPersonalPolicy()?.outputCurrency ?? CONST.CURRENCY.USD; - const mileageRate = TransactionUtils.isCustomUnitRateIDForP2P(transaction) ? DistanceRequestUtils.getRateForP2P(currency) : distanceRates[rateID as string] ?? {}; + const mileageRate = TransactionUtils.isCustomUnitRateIDForP2P(transaction) ? DistanceRequestUtils.getRateForP2P(currency) : distanceRates[rateID] ?? {}; const {unit} = mileageRate; - const rate = (transaction?.comment?.customUnit?.defaultP2PRate as number) ?? mileageRate.rate; + const rate = transaction?.comment?.customUnit?.defaultP2PRate ?? mileageRate.rate; - const distance = DistanceRequestUtils.convertToDistanceInMeters((transaction?.comment?.customUnit?.quantity as number) ?? 0, unit); + const distance = DistanceRequestUtils.convertToDistanceInMeters(TransactionUtils.getDistance(transaction), unit); const rateToDisplay = DistanceRequestUtils.getRateForDisplay(unit, rate, currency, translate, toLocaleDigit, isOffline); const distanceToDisplay = DistanceRequestUtils.getDistanceForDisplay(hasRoute, distance, unit, rate, translate); let merchantTitle = isEmptyMerchant ? '' : transactionMerchant; diff --git a/src/libs/TransactionUtils.ts b/src/libs/TransactionUtils.ts index 74bc15f32487..36cbb4f1ecc5 100644 --- a/src/libs/TransactionUtils.ts +++ b/src/libs/TransactionUtils.ts @@ -356,8 +356,8 @@ function getMerchant(transaction: OnyxEntry): string { return transaction?.modifiedMerchant ? transaction.modifiedMerchant : transaction?.merchant ?? ''; } -function getDistance(transaction: Transaction): number { - return transaction?.routes?.route0?.distance ?? 0; +function getDistance(transaction: Transaction | null): number { + return transaction?.comment?.customUnit?.quantity ?? 0; } /** diff --git a/src/types/onyx/Transaction.ts b/src/types/onyx/Transaction.ts index 8d880d4673aa..7894876fdcdf 100644 --- a/src/types/onyx/Transaction.ts +++ b/src/types/onyx/Transaction.ts @@ -48,12 +48,20 @@ type Comment = { waypoints?: WaypointCollection; isLoading?: boolean; type?: string; - customUnit?: Record; + customUnit?: TransactionCustomUnit; source?: string; originalTransactionID?: string; splits?: Split[]; }; +type TransactionCustomUnit = { + customUnitID?: string; + customUnitRateID?: string; + quantity?: number; + name?: string; + defaultP2PRate?: number; +}; + type GeometryType = 'LineString'; type Geometry = {