@@ -91,10 +91,12 @@ function resolveSplitMileageRate({
9191 transaction,
9292 policy,
9393 isSelfDMSplit,
94+ personalPolicyOutputCurrency,
9495} : {
9596 transaction : OnyxEntry < OnyxTypes . Transaction > ;
96- policy ? : OnyxEntry < OnyxTypes . Policy > ;
97+ policy : OnyxEntry < OnyxTypes . Policy > ;
9798 isSelfDMSplit ?: boolean ;
99+ personalPolicyOutputCurrency : string | undefined ;
98100} ) : ReturnType < typeof DistanceRequestUtils . getRate > {
99101 const customUnitRateID = transaction ?. comment ?. customUnit ?. customUnitRateID ;
100102 const isP2PRate = customUnitRateID === CONST . CUSTOM_UNITS . FAKE_P2P_ID ;
@@ -106,7 +108,7 @@ function resolveSplitMileageRate({
106108 ! ! policy &&
107109 ( ! rawPolicyRate || rawPolicyRate . pendingAction === CONST . RED_BRICK_ROAD_PENDING_ACTION . DELETE || rawPolicyRate . enabled === false ) ;
108110
109- const baseMileageRate = DistanceRequestUtils . getRate ( { transaction, policy : policy ?? undefined } ) ;
111+ const baseMileageRate = DistanceRequestUtils . getRate ( { transaction, policy : policy ?? undefined , personalPolicyOutputCurrency } ) ;
110112 if ( baseMileageRate . rate && ! isOriginalRateDeleted ) {
111113 return baseMileageRate ;
112114 }
@@ -288,8 +290,9 @@ function addSplitExpenseField(
288290 transaction : OnyxEntry < OnyxTypes . Transaction > ,
289291 draftTransaction : OnyxEntry < OnyxTypes . Transaction > ,
290292 transactionReport : OnyxEntry < OnyxTypes . Report > ,
291- policy ?: OnyxEntry < OnyxTypes . Policy > ,
292- isSelfDMSplit ?: boolean ,
293+ policy : OnyxEntry < OnyxTypes . Policy > ,
294+ isSelfDMSplit : boolean ,
295+ personalPolicyOutputCurrency : string | undefined ,
293296) {
294297 if ( ! transaction || ! draftTransaction ) {
295298 return ;
@@ -310,7 +313,7 @@ function addSplitExpenseField(
310313 }
311314 : undefined ;
312315
313- const mileageRate = resolveSplitMileageRate ( { transaction, policy, isSelfDMSplit} ) ;
316+ const mileageRate = resolveSplitMileageRate ( { transaction, policy, isSelfDMSplit, personalPolicyOutputCurrency } ) ;
314317 const { unit, rate} = mileageRate ;
315318
316319 if ( rate && rate > 0 && customUnit ) {
@@ -369,9 +372,10 @@ function addSplitExpenseField(
369372 */
370373function evenlyDistributeSplitExpenseAmounts (
371374 draftTransaction : OnyxEntry < OnyxTypes . Transaction > ,
372- transaction ?: OnyxEntry < OnyxTypes . Transaction > ,
373- policy ?: OnyxEntry < OnyxTypes . Policy > ,
374- isSelfDMSplit ?: boolean ,
375+ transaction : OnyxEntry < OnyxTypes . Transaction > ,
376+ policy : OnyxEntry < OnyxTypes . Policy > ,
377+ isSelfDMSplit : boolean ,
378+ personalPolicyOutputCurrency : string | undefined ,
375379) {
376380 if ( ! draftTransaction ) {
377381 return ;
@@ -395,7 +399,7 @@ function evenlyDistributeSplitExpenseAmounts(
395399 const splitCount = splitExpenses . length ;
396400 const lastIndex = splitCount - 1 ;
397401
398- const mileageRate = resolveSplitMileageRate ( { transaction, policy, isSelfDMSplit} ) ;
402+ const mileageRate = resolveSplitMileageRate ( { transaction, policy, isSelfDMSplit, personalPolicyOutputCurrency } ) ;
399403 const { unit, rate} = mileageRate ;
400404
401405 const updatedSplitExpenses = splitExpenses . map ( ( splitExpense , index ) => {
@@ -446,8 +450,9 @@ function resetSplitExpensesByDateRange(
446450 transactionReport : OnyxEntry < OnyxTypes . Report > ,
447451 startDate : string ,
448452 endDate : string ,
449- policy ?: OnyxEntry < OnyxTypes . Policy > ,
450- isSelfDMSplit ?: boolean ,
453+ policy : OnyxEntry < OnyxTypes . Policy > ,
454+ isSelfDMSplit : boolean ,
455+ personalPolicyOutputCurrency : string | undefined ,
451456) {
452457 if ( ! transaction || ! draftTransaction || ! startDate || ! endDate ) {
453458 return ;
@@ -465,7 +470,7 @@ function resetSplitExpensesByDateRange(
465470
466471 const isDistanceRequest = isDistanceRequestTransactionUtils ( transaction ) ;
467472
468- const mileageRate = resolveSplitMileageRate ( { transaction, policy, isSelfDMSplit} ) ;
473+ const mileageRate = resolveSplitMileageRate ( { transaction, policy, isSelfDMSplit, personalPolicyOutputCurrency } ) ;
469474 const { unit, rate} = mileageRate ;
470475
471476 // Create split expenses for each date with proportional amounts
@@ -543,8 +548,9 @@ function updateSplitExpenseField(
543548 originalTransactionDraft : OnyxEntry < OnyxTypes . Transaction > ,
544549 splitExpenseTransactionID : string ,
545550 originalTransaction : OnyxEntry < OnyxTypes . Transaction > ,
546- policy ?: OnyxEntry < OnyxTypes . Policy > ,
547- isSelfDMSplit ?: boolean ,
551+ policy : OnyxEntry < OnyxTypes . Policy > ,
552+ isSelfDMSplit : boolean ,
553+ personalPolicyOutputCurrency : string | undefined ,
548554) {
549555 if ( ! splitExpenseDraftTransaction || ! splitExpenseTransactionID || ! originalTransactionDraft ) {
550556 return ;
@@ -587,7 +593,7 @@ function updateSplitExpenseField(
587593
588594 // Recalculate amount for distance transactions when rate or distance changes
589595 if ( isDistanceRequest && originalTransaction ) {
590- const mileageRate = resolveSplitMileageRate ( { transaction : splitExpenseDraftTransaction , policy, isSelfDMSplit} ) ;
596+ const mileageRate = resolveSplitMileageRate ( { transaction : splitExpenseDraftTransaction , policy, isSelfDMSplit, personalPolicyOutputCurrency } ) ;
591597 const { unit, rate} = mileageRate ;
592598
593599 if ( rate && rate > 0 ) {
@@ -635,8 +641,9 @@ function updateSplitExpenseAmountField(
635641 draftTransaction : OnyxEntry < OnyxTypes . Transaction > ,
636642 currentItemTransactionID : string ,
637643 amount : number ,
638- policy ?: OnyxEntry < OnyxTypes . Policy > ,
639- isSelfDMSplit ?: boolean ,
644+ policy : OnyxEntry < OnyxTypes . Policy > ,
645+ isSelfDMSplit : boolean ,
646+ personalPolicyOutputCurrency : string | undefined ,
640647) {
641648 if ( ! draftTransaction ?. transactionID || ! currentItemTransactionID || Number . isNaN ( amount ) ) {
642649 return ;
@@ -660,7 +667,7 @@ function updateSplitExpenseAmountField(
660667
661668 // Update distance for distance transactions based on new amount and rate
662669 if ( isDistanceRequest && originalTransaction && splitExpense . customUnit ) {
663- const mileageRate = resolveSplitMileageRate ( { transaction : originalTransaction , policy, isSelfDMSplit} ) ;
670+ const mileageRate = resolveSplitMileageRate ( { transaction : originalTransaction , policy, isSelfDMSplit, personalPolicyOutputCurrency } ) ;
664671 const { rate : currentRate = 0 } =
665672 DistanceRequestUtils . getRateByCustomUnitRateID ( { policy, customUnitRateID : splitExpense . customUnit ?. customUnitRateID ?? String ( CONST . DEFAULT_NUMBER_ID ) } ) ?? { } ;
666673 const { unit, rate : mileageRateValue } = mileageRate ;
0 commit comments