From e6d79bd0be9c9f6668e2fbaf48db68b6e068549a Mon Sep 17 00:00:00 2001 From: nkdengineer <161821005+nkdengineer@users.noreply.github.com> Date: Tue, 17 Mar 2026 15:37:02 +0700 Subject: [PATCH 1/2] Revert "[CP Staging] Revert "fix: Confirm page shows Amount field with 0.00 amount when receipt is scanning v2"" --- src/components/MoneyRequestConfirmationList.tsx | 8 +++++++- src/libs/actions/IOU/index.ts | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index c5fc3b3280dfc..7287cd3038d0f 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'; @@ -404,7 +405,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 9ced5bd4d6ce2..bf1ff793b90af 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -1425,12 +1425,21 @@ function startDistanceRequest( } } +function setMoneyRequestReceiptState(transactionID: string, isDraft: boolean) { + if (!isDraft) { + 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) { Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {amount, currency, shouldShowOriginalAmount}); + setMoneyRequestReceiptState(transactionID, true); } function setMoneyRequestCreated(transactionID: string, created: string, isDraft: boolean) { Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {created}); + setMoneyRequestReceiptState(transactionID, isDraft); } function setMoneyRequestDateAttribute(transactionID: string, start: string, end: string) { @@ -1444,10 +1453,12 @@ function setMoneyRequestCurrency(transactionID: string, currency: string, isEdit function setMoneyRequestDescription(transactionID: string, comment: string, isDraft: boolean) { Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {comment: {comment: comment.trim()}}); + setMoneyRequestReceiptState(transactionID, isDraft); } function setMoneyRequestMerchant(transactionID: string, merchant: string, isDraft: boolean) { Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {merchant}); + setMoneyRequestReceiptState(transactionID, isDraft); } function setMoneyRequestAttendees(transactionID: string, attendees: Attendee[], isDraft: boolean) { From 2ef765d22ad46b61c979112ce05de83c1ab183c8 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Wed, 18 Mar 2026 13:48:32 +0700 Subject: [PATCH 2/2] fix regression --- src/libs/actions/IOU/index.ts | 20 +++++++++---------- .../iou/request/step/IOURequestStepAmount.tsx | 4 ++-- .../iou/request/step/IOURequestStepDate.tsx | 4 ++-- .../step/IOURequestStepDescription.tsx | 3 ++- .../request/step/IOURequestStepMerchant.tsx | 3 ++- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/libs/actions/IOU/index.ts b/src/libs/actions/IOU/index.ts index 5a4c420c2e728..c05ff6cb0bf91 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -1454,21 +1454,21 @@ function startDistanceRequest( } } -function setMoneyRequestReceiptState(transactionID: string, isDraft: boolean) { - if (!isDraft) { +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) { +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); + 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); + setMoneyRequestReceiptState(transactionID, isDraft, shouldStopSmartscan); } function setMoneyRequestDateAttribute(transactionID: string, start: string, end: string) { @@ -1480,14 +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); + 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); + 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,