diff --git a/src/components/MoneyRequestConfirmationList/hooks/useConfirmationValidation.ts b/src/components/MoneyRequestConfirmationList/hooks/useConfirmationValidation.ts index fe88d1b2c166..721fb0dc8596 100644 --- a/src/components/MoneyRequestConfirmationList/hooks/useConfirmationValidation.ts +++ b/src/components/MoneyRequestConfirmationList/hooks/useConfirmationValidation.ts @@ -160,7 +160,7 @@ function useConfirmationValidation({ const isP2P = !!(firstParticipant?.accountID && !firstParticipant?.isPolicyExpenseChat); // P2P manual submit: $0 is invalid unless scan/time/distance (same guard as legacy inline confirm). - if (iouType !== CONST.IOU.TYPE.PAY && !isScanRequestUtil(transaction) && !isTimeRequest && !isDistanceRequest && iouAmount === 0 && isP2P) { + if (!isScanRequestUtil(transaction) && !isTimeRequest && !isDistanceRequest && iouAmount === 0 && isP2P) { return {errorKey: 'common.error.invalidAmount'}; } if (isNewManualExpenseFlowEnabled && !transaction?.isAmountSet) { diff --git a/src/components/MoneyRequestConfirmationList/sections/MerchantField.tsx b/src/components/MoneyRequestConfirmationList/sections/MerchantField.tsx index 928bf9bb3b73..a09e33d37bf3 100644 --- a/src/components/MoneyRequestConfirmationList/sections/MerchantField.tsx +++ b/src/components/MoneyRequestConfirmationList/sections/MerchantField.tsx @@ -9,7 +9,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import {clearMoneyRequestMerchant, setMoneyRequestMerchant} from '@libs/actions/IOU'; import Navigation from '@libs/Navigation/Navigation'; import {getMerchant, hasReceipt} from '@libs/TransactionUtils'; -import {isValidInputLength} from '@libs/ValidationUtils'; +import {isInvalidMerchantValue, isValidInputLength} from '@libs/ValidationUtils'; import {setDraftSplitTransaction} from '@userActions/IOU/Split'; import CONST from '@src/CONST'; import type {IOUAction, IOUType} from '@src/CONST'; @@ -54,7 +54,7 @@ function MerchantField({ const [splitDraftTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${transactionID}`); const merchantValue = getMerchant(transaction); - const displayMerchantValue = !transaction?.isMerchantSet ? '' : merchantValue; + const displayMerchantValue = isInvalidMerchantValue(merchantValue) ? '' : merchantValue; const isMerchantEmpty = !displayMerchantValue; // Determine if the merchant error should be displayed diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 093c5ae605bd..1867eb8ce144 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -302,6 +302,7 @@ import addTrailingForwardSlash from './UrlUtils'; import type {AvatarSource} from './UserAvatarUtils'; import {getDefaultAvatarURL} from './UserAvatarUtils'; import {generateAccountID} from './UserUtils'; +import {isInvalidMerchantValue} from './ValidationUtils'; import ViolationsUtils from './Violations/ViolationsUtils'; type AvatarRange = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18; @@ -11326,6 +11327,7 @@ function createDraftTransactionAndNavigateToParticipantSelector({ .find((action) => isMoneyRequestAction(action) && getOriginalMessage(action)?.IOUTransactionID === transactionID); const {created, amount, currency, merchant, mccGroup} = getTransactionDetails(transaction) ?? {}; + const isMerchantValid = !isInvalidMerchantValue(merchant); const baseComment = getTransactionCommentObject(transaction); // Use modifiedAttendees if present (for edited transactions), otherwise use the attendees from comment const comment = { @@ -11345,10 +11347,12 @@ function createDraftTransactionAndNavigateToParticipantSelector({ modifiedAmount: undefined, modifiedCurrency: undefined, amount, + isAmountSet: true, currency, comment, merchant, modifiedMerchant: '', + isMerchantSet: !!isMerchantValid, modifiedAttendees: undefined, mccGroup, participants: [],