@@ -108,19 +108,21 @@ function buildDistanceAmountAndMerchant({
108108 transaction,
109109 policy,
110110 translate,
111+ personalPolicyOutputCurrency,
111112} : {
112113 isManualDistance : boolean ;
113114 distance : number | undefined ;
114115 unit : Unit | undefined ;
115116 transaction : Transaction | undefined ;
116117 policy : OnyxEntry < Policy > ;
117118 translate : < TPath extends TranslationPaths > ( path : TPath , ...parameters : TranslationParameters < TPath > ) => string ;
119+ personalPolicyOutputCurrency : string | undefined ;
118120} ) : { amount : number ; merchant : string } {
119121 if ( ! isManualDistance || distance === undefined || ! unit ) {
120122 return { amount : 0 , merchant : translate ( 'iou.fieldPending' ) } ;
121123 }
122124 const distanceInMeters = DistanceRequestUtils . convertToDistanceInMeters ( distance , unit ) ;
123- const mileageRate = DistanceRequestUtils . getRate ( { transaction, policy} ) ;
125+ const mileageRate = DistanceRequestUtils . getRate ( { transaction, policy, personalPolicyOutputCurrency } ) ;
124126 const amount = DistanceRequestUtils . getDistanceRequestAmount ( distanceInMeters , unit , mileageRate ?. rate ?? 0 ) ;
125127 const merchant = DistanceRequestUtils . getDistanceMerchant (
126128 true ,
@@ -248,7 +250,15 @@ function handleMoneyRequestStepDistanceNavigation({
248250
249251 const validWaypoints = ! isManualDistance && ! isOdometerDistance ? getValidWaypoints ( waypoints , true , isGPSDistance ) : undefined ;
250252
251- const { amount, merchant} = buildDistanceAmountAndMerchant ( { isManualDistance, distance, unit, transaction, policy, translate} ) ;
253+ const { amount, merchant} = buildDistanceAmountAndMerchant ( {
254+ isManualDistance,
255+ distance,
256+ unit,
257+ transaction,
258+ policy,
259+ translate,
260+ personalPolicyOutputCurrency : personalOutputCurrency ,
261+ } ) ;
252262 setMoneyRequestMerchant ( transactionID , merchant , false ) ;
253263 const distanceDefaultTaxCode = getDefaultTaxCode ( policy , transaction ) ;
254264 const distanceTaxCode = ( transaction ?. taxCode ? transaction . taxCode : distanceDefaultTaxCode ) ?? '' ;
@@ -443,8 +453,9 @@ function handleMoneyRequestStepDistanceNavigation({
443453 setTransactionReport ( transactionID , { reportID : transactionReportID } , true ) ;
444454 // Do not pass transaction and policy so it only updates customUnitRateID without changing distance and distance unit
445455 // as it is set for Manual requests before this function is called and transaction may have
446- // obsolete customUnit values
447- setCustomUnitRateID ( transactionID , rateID , undefined , undefined ) ;
456+ // obsolete customUnit values. personalPolicyOutputCurrency is intentionally omitted for the same reason:
457+ // without a transaction, setCustomUnitRateID never resolves a rate, so the currency is never read.
458+ setCustomUnitRateID ( transactionID , rateID , undefined , undefined , false , undefined ) ;
448459
449460 // Update distance and distance unit in transaction object as it is usually set before this function is called using
450461 // defaultExpensePolicy data which is not accurate in this case as defaultExpensePolicy has autoReporting set to false
0 commit comments