@@ -240,6 +240,7 @@ function MoneyRequestView({
240240 const currentUserEmailParam = currentUserPersonalDetails . login ?? '' ;
241241 const { isBetaEnabled} = usePermissions ( ) ;
242242 const isASAPSubmitBetaEnabled = isBetaEnabled ( CONST . BETAS . ASAP_SUBMIT ) ;
243+ const isZeroExpensesBetaEnabled = isBetaEnabled ( CONST . BETAS . ZERO_EXPENSES ) ;
243244
244245 const moneyRequestReport = parentReport ;
245246 const isApproved = isReportApproved ( { report : moneyRequestReport } ) ;
@@ -275,7 +276,9 @@ function MoneyRequestView({
275276 postedDate : transactionPostedDate ,
276277 convertedAmount : transactionConvertedAmount ,
277278 } = getTransactionDetails ( transaction , undefined , undefined , allowNegativeAmount , false , currentUserPersonalDetails ) ?? { } ;
278- const isEmptyMerchant = transactionMerchant === '' || transactionMerchant === CONST . TRANSACTION . PARTIAL_TRANSACTION_MERCHANT ;
279+ const isZeroTransactionAmount = transactionAmount === 0 ;
280+ const isEmptyMerchant =
281+ transactionMerchant === '' || transactionMerchant === CONST . TRANSACTION . PARTIAL_TRANSACTION_MERCHANT || transactionMerchant === CONST . TRANSACTION . DEFAULT_MERCHANT ;
279282 const isDistanceRequest = isDistanceRequestTransactionUtils ( transaction ) ;
280283 const isManualDistanceRequest = isManualDistanceRequestTransactionUtils ( transaction , ! ! mergeTransactionID ) ;
281284 const isOdometerDistanceRequest = isOdometerDistanceRequestTransactionUtils ( transaction ) ;
@@ -288,9 +291,10 @@ function MoneyRequestView({
288291 // Use the updated transaction amount in merge flow to have correct positive/negative sign
289292 const actualAmount = isFromMergeTransaction && updatedTransaction ? updatedTransaction . amount : transactionAmount ;
290293 const actualCurrency = updatedTransaction ? getCurrency ( updatedTransaction ) : transactionCurrency ;
291- const shouldDisplayTransactionAmount = ( ( isDistanceRequest && hasRoute ) || ! ! actualAmount ) && actualAmount !== undefined ;
294+ const shouldDisplayTransactionAmount = ( isDistanceRequest && hasRoute ) || ! isDistanceRequest ;
292295 const formattedTransactionAmount = shouldDisplayTransactionAmount ? convertToDisplayString ( actualAmount , actualCurrency ) : '' ;
293- const formattedPerAttendeeAmount = shouldDisplayTransactionAmount ? convertToDisplayString ( actualAmount / ( actualAttendees ?. length ?? 1 ) , actualCurrency ) : '' ;
296+ const formattedPerAttendeeAmount =
297+ shouldDisplayTransactionAmount && actualAmount !== undefined ? convertToDisplayString ( actualAmount / ( transactionAttendees ?. length ?? 1 ) , actualCurrency ) : '' ;
294298
295299 const transactionOriginalAmount = transaction && getOriginalAmountForDisplay ( transaction , isExpenseReport ( moneyRequestReport ) ) ;
296300 const formattedOriginalAmount = transactionOriginalAmount && transactionOriginalCurrency && convertToDisplayString ( transactionOriginalAmount , transactionOriginalCurrency ) ;
@@ -398,16 +402,18 @@ function MoneyRequestView({
398402 let rateToDisplay = isCustomUnitOutOfPolicy ? translate ( 'common.rateOutOfPolicy' ) : DistanceRequestUtils . getRateForDisplay ( unit , rate , currency , translate , toLocaleDigit , isOffline ) ;
399403 const distanceToDisplay = DistanceRequestUtils . getDistanceForDisplay ( hasRoute , distance , unit , rate , translate ) ;
400404 let merchantTitle = isEmptyMerchant ? '' : transactionMerchant ;
401- let amountTitle = formattedTransactionAmount ? formattedTransactionAmount . toString ( ) : '' ;
405+ let amountTitle = formattedTransactionAmount ? .toString ( ) || '' ;
402406 if ( isTransactionScanning ) {
403407 merchantTitle = translate ( 'iou.receiptStatusTitle' ) ;
404408 amountTitle = translate ( 'iou.receiptStatusTitle' ) ;
405409 }
406410
407411 const shouldNavigateToUpgradePath = ! policyForMovingExpenses && ! shouldSelectPolicy ;
408-
409412 const updatedTransactionDescription = getDescription ( updatedTransaction ) || undefined ;
410- const isEmptyUpdatedMerchant = updatedTransaction ?. modifiedMerchant === '' || updatedTransaction ?. modifiedMerchant === CONST . TRANSACTION . PARTIAL_TRANSACTION_MERCHANT ;
413+ const isEmptyUpdatedMerchant =
414+ updatedTransaction ?. modifiedMerchant === '' ||
415+ updatedTransaction ?. modifiedMerchant === CONST . TRANSACTION . PARTIAL_TRANSACTION_MERCHANT ||
416+ updatedTransaction ?. modifiedMerchant === CONST . TRANSACTION . DEFAULT_MERCHANT ;
411417 const updatedMerchantTitle = isEmptyUpdatedMerchant ? '' : ( updatedTransaction ?. modifiedMerchant ?? merchantTitle ) ;
412418
413419 const shouldShowConvertedAmount =
@@ -503,7 +509,7 @@ function MoneyRequestView({
503509 // NOTE: receipt field can return multiple violations, so we need to handle it separately
504510 const fieldChecks : Partial < Record < ViolationField , { isError : boolean ; translationPath : TranslationPaths } > > = {
505511 amount : {
506- isError : transactionAmount === 0 ,
512+ isError : isZeroTransactionAmount && ! isZeroExpensesBetaEnabled ,
507513 translationPath : canEditAmount ? 'common.error.enterAmount' : 'common.error.missingAmount' ,
508514 } ,
509515 merchant : {
0 commit comments