diff --git a/src/libs/API/parameters/CreateDistanceRequestParams.ts b/src/libs/API/parameters/CreateDistanceRequestParams.ts index 6093b33807a21..a6edf31445f6f 100644 --- a/src/libs/API/parameters/CreateDistanceRequestParams.ts +++ b/src/libs/API/parameters/CreateDistanceRequestParams.ts @@ -12,6 +12,7 @@ type CreateDistanceRequestParams = { iouReportID?: string; createdIOUReportActionID?: string; reportPreviewReportActionID?: string; + amount?: number; category?: string; receipt?: Receipt; tag?: string; diff --git a/src/libs/actions/IOU/Duplicate.ts b/src/libs/actions/IOU/Duplicate.ts index 26262802c5688..bc2feddfbb4e8 100644 --- a/src/libs/actions/IOU/Duplicate.ts +++ b/src/libs/actions/IOU/Duplicate.ts @@ -18,7 +18,7 @@ import { buildTransactionThread, getTransactionDetails, } from '@libs/ReportUtils'; -import {getRequestType, getTransactionType, isDistanceRequest, isExpenseSplit} from '@libs/TransactionUtils'; +import {getRequestType, getTransactionType, isDistanceRequest, isExpenseSplit, isOdometerDistanceRequest} from '@libs/TransactionUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type * as OnyxTypes from '@src/types/onyx'; @@ -564,6 +564,8 @@ function duplicateExpenseTransaction({ merchant: transaction?.modifiedMerchant ? transaction.modifiedMerchant : (transaction?.merchant ?? ''), modifiedAmount: undefined, originalTransactionID: undefined, + odometerStart: transaction?.comment?.odometerStart ?? undefined, + odometerEnd: transaction?.comment?.odometerEnd ?? undefined, receipt: undefined, source: undefined, waypoints, @@ -587,8 +589,9 @@ function duplicateExpenseTransaction({ personalDetails, }; - // Since we remove waypoints for split distance expenses, we need to re-add the distance param here - if (isExpenseSplit(transaction) && isDistanceRequest(transaction)) { + // We remove waypoints for split distance expenses, so we have to re-add the distance param here. + // Odometer expenses don't have the distance parameter so we also need to pass it here. + if (isDistanceRequest(transaction) && (isExpenseSplit(transaction) || isOdometerDistanceRequest(transaction))) { params.transactionParams.distance = transaction.comment?.customUnit?.quantity ?? undefined; } @@ -606,6 +609,7 @@ function duplicateExpenseTransaction({ ...transaction.comment, originalTransactionID: undefined, source: undefined, + waypoints, }, iouRequestType: getRequestType(transaction), modifiedCreated: '', @@ -648,6 +652,7 @@ function duplicateExpenseTransaction({ ...transaction.comment, originalTransactionID: undefined, source: undefined, + waypoints, }, iouRequestType: getRequestType(transaction), modifiedCreated: '', @@ -658,6 +663,7 @@ function duplicateExpenseTransaction({ ...(params.transactionParams ?? {}), comment: Parser.htmlToMarkdown(transactionDetails?.comment ?? ''), validWaypoints: waypoints, + modifiedAmount: transactionDetails?.amount, }, policyRecentlyUsedCurrencies: policyRecentlyUsedCurrencies ?? [], quickAction, diff --git a/src/libs/actions/IOU/index.ts b/src/libs/actions/IOU/index.ts index ea24eab929f0f..fbfcc3f08e94a 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -7580,6 +7580,7 @@ function createDistanceRequest(distanceRequestInformation: CreateDistanceRequest taxAmount, taxCode, merchant, + modifiedAmount, billable, reimbursable, validWaypoints, @@ -7757,6 +7758,7 @@ function createDistanceRequest(distanceRequestInformation: CreateDistanceRequest } parameters = { + amount: modifiedAmount ?? undefined, comment, iouReportID: iouReport.reportID, chatReportID: chatReport.reportID,