diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 630f85997e349..91edcac42ce29 100644 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -55,6 +55,7 @@ import { hasRoute as hasRouteUtil, hasTaxRateWithMatchingValue, isMerchantMissing, + isScanning, isScanRequest as isScanRequestUtil, } from '@libs/TransactionUtils'; import {getIsViolationFixed} from '@libs/Violations/ViolationsUtils'; @@ -410,7 +411,12 @@ function MoneyRequestConfirmationList({ amountToBeUsed = perDiemRequestAmount; } - const formattedAmount = isDistanceRequestWithPendingRoute ? '' : convertToDisplayString(amountToBeUsed, isDistanceRequest ? currency : iouCurrencyCode); + let formattedAmount = convertToDisplayString(amountToBeUsed, isDistanceRequest ? currency : iouCurrencyCode); + if (isDistanceRequestWithPendingRoute) { + formattedAmount = ''; + } else if (isScanning(transaction)) { + formattedAmount = translate('iou.receiptStatusTitle'); + } const formattedAmountPerAttendee = isDistanceRequestWithPendingRoute || isScanRequest ? '' diff --git a/src/libs/actions/IOU/index.ts b/src/libs/actions/IOU/index.ts index 47d72fd6e80e0..c05ff6cb0bf91 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -1454,12 +1454,21 @@ function startDistanceRequest( } } -function setMoneyRequestAmount(transactionID: string, amount: number, currency: string, shouldShowOriginalAmount = false) { +function setMoneyRequestReceiptState(transactionID: string, isDraft: boolean, shouldStopSmartscan = false) { + if (!isDraft || !shouldStopSmartscan) { + return; + } + Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {receipt: {state: CONST.IOU.RECEIPT_STATE.OPEN}}); +} + +function setMoneyRequestAmount(transactionID: string, amount: number, currency: string, shouldShowOriginalAmount = false, shouldStopSmartscan = false) { Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {amount, currency, shouldShowOriginalAmount}); + setMoneyRequestReceiptState(transactionID, true, shouldStopSmartscan); } -function setMoneyRequestCreated(transactionID: string, created: string, isDraft: boolean) { +function setMoneyRequestCreated(transactionID: string, created: string, isDraft: boolean, shouldStopSmartscan = false) { Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {created}); + setMoneyRequestReceiptState(transactionID, isDraft, shouldStopSmartscan); } function setMoneyRequestDateAttribute(transactionID: string, start: string, end: string) { @@ -1471,12 +1480,14 @@ function setMoneyRequestCurrency(transactionID: string, currency: string, isEdit Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {[fieldToUpdate]: currency}); } -function setMoneyRequestDescription(transactionID: string, comment: string, isDraft: boolean) { +function setMoneyRequestDescription(transactionID: string, comment: string, isDraft: boolean, shouldStopSmartscan = false) { Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {comment: {comment: comment.trim()}}); + setMoneyRequestReceiptState(transactionID, isDraft, shouldStopSmartscan); } -function setMoneyRequestMerchant(transactionID: string, merchant: string, isDraft: boolean) { +function setMoneyRequestMerchant(transactionID: string, merchant: string, isDraft: boolean, shouldStopSmartscan = false) { Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {merchant}); + setMoneyRequestReceiptState(transactionID, isDraft, shouldStopSmartscan); } function setMoneyRequestAttendees(transactionID: string, attendees: Attendee[], isDraft: boolean) { diff --git a/src/pages/iou/request/step/IOURequestStepAmount.tsx b/src/pages/iou/request/step/IOURequestStepAmount.tsx index 8831be3e1ed13..d36d7b50c6f16 100644 --- a/src/pages/iou/request/step/IOURequestStepAmount.tsx +++ b/src/pages/iou/request/step/IOURequestStepAmount.tsx @@ -27,7 +27,7 @@ import Navigation from '@libs/Navigation/Navigation'; import {getParticipantsOption, getReportOption} from '@libs/OptionsListUtils'; import {getPolicyExpenseChat, getReportOrDraftReport, getTransactionDetails, isMoneyRequestReport, isPolicyExpenseChat, isSelfDM, shouldEnableNegative} from '@libs/ReportUtils'; import shouldUseDefaultExpensePolicy from '@libs/shouldUseDefaultExpensePolicy'; -import {calculateTaxAmount, getAmount, getCurrency, getDefaultTaxCode, getRequestType, getTaxValue, isDistanceRequest, isExpenseUnreported} from '@libs/TransactionUtils'; +import {calculateTaxAmount, getAmount, getCurrency, getDefaultTaxCode, getRequestType, getTaxValue, hasReceipt, isDistanceRequest, isExpenseUnreported} from '@libs/TransactionUtils'; import MoneyRequestAmountForm from '@pages/iou/MoneyRequestAmountForm'; import { getMoneyRequestParticipantsFromReport, @@ -198,7 +198,7 @@ function IOURequestStepAmount({ const amountInSmallestCurrencyUnits = convertToBackendAmount(Number.parseFloat(amount)); // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - setMoneyRequestAmount(transactionID, amountInSmallestCurrencyUnits, selectedCurrency || CONST.CURRENCY.USD, shouldKeepUserInput); + setMoneyRequestAmount(transactionID, amountInSmallestCurrencyUnits, selectedCurrency || CONST.CURRENCY.USD, shouldKeepUserInput, hasReceipt(transaction)); if (isMovingTransactionFromTrackExpense(action)) { const taxCode = selectedCurrency !== policy?.outputCurrency ? policy?.taxRates?.foreignTaxDefault : policy?.taxRates?.defaultExternalID; diff --git a/src/pages/iou/request/step/IOURequestStepDate.tsx b/src/pages/iou/request/step/IOURequestStepDate.tsx index 894bd07f5eba6..651abdb747b78 100644 --- a/src/pages/iou/request/step/IOURequestStepDate.tsx +++ b/src/pages/iou/request/step/IOURequestStepDate.tsx @@ -17,7 +17,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import {shouldUseTransactionDraft} from '@libs/IOUUtils'; import Navigation from '@libs/Navigation/Navigation'; -import {getFormattedCreated} from '@libs/TransactionUtils'; +import {getFormattedCreated, hasReceipt} from '@libs/TransactionUtils'; import {setMoneyRequestCreated, updateMoneyRequestDate} from '@userActions/IOU'; import {setDraftSplitTransaction} from '@userActions/IOU/Split'; import CONST from '@src/CONST'; @@ -91,7 +91,7 @@ function IOURequestStepDate({ const isTransactionDraft = shouldUseTransactionDraft(action); - setMoneyRequestCreated(transactionID, newCreated, isTransactionDraft); + setMoneyRequestCreated(transactionID, newCreated, isTransactionDraft, hasReceipt(transaction)); if (isEditing) { updateMoneyRequestDate({ diff --git a/src/pages/iou/request/step/IOURequestStepDescription.tsx b/src/pages/iou/request/step/IOURequestStepDescription.tsx index 38c742d0a65b0..df0932ab9abb7 100644 --- a/src/pages/iou/request/step/IOURequestStepDescription.tsx +++ b/src/pages/iou/request/step/IOURequestStepDescription.tsx @@ -23,6 +23,7 @@ import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import {shouldUseTransactionDraft} from '@libs/IOUUtils'; import Navigation from '@libs/Navigation/Navigation'; import Parser from '@libs/Parser'; +import {hasReceipt} from '@libs/TransactionUtils'; import variables from '@styles/variables'; import {setMoneyRequestDescription, updateMoneyRequestDescription} from '@userActions/IOU'; import {setDraftSplitTransaction} from '@userActions/IOU/Split'; @@ -154,7 +155,7 @@ function IOURequestStepDescription({ return; } - setMoneyRequestDescription(transaction?.transactionID, newComment, isTransactionDraft); + setMoneyRequestDescription(transaction?.transactionID, newComment, isTransactionDraft, hasReceipt(transaction)); if (action === CONST.IOU.ACTION.EDIT) { updateMoneyRequestDescription({ diff --git a/src/pages/iou/request/step/IOURequestStepMerchant.tsx b/src/pages/iou/request/step/IOURequestStepMerchant.tsx index 53ed15bcd41f2..f3f89c3c4de9d 100644 --- a/src/pages/iou/request/step/IOURequestStepMerchant.tsx +++ b/src/pages/iou/request/step/IOURequestStepMerchant.tsx @@ -17,6 +17,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import Navigation from '@libs/Navigation/Navigation'; import {getTransactionDetails, isExpenseRequest, isPolicyExpenseChat} from '@libs/ReportUtils'; +import {hasReceipt} from '@libs/TransactionUtils'; import {isInvalidMerchantValue, isValidInputLength} from '@libs/ValidationUtils'; import {setMoneyRequestMerchant, updateMoneyRequestMerchant} from '@userActions/IOU'; import {setDraftSplitTransaction} from '@userActions/IOU/Split'; @@ -122,7 +123,7 @@ function IOURequestStepMerchant({ shouldNavigateAfterSaveRef.current = true; return; } - setMoneyRequestMerchant(transactionID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT, !isEditing); + setMoneyRequestMerchant(transactionID, newMerchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT, !isEditing, hasReceipt(transaction)); if (isEditing) { updateMoneyRequestMerchant({ transactionID,