From c5d2347dc7dce6d145e9065a8745d0473a333c37 Mon Sep 17 00:00:00 2001 From: "dmkt9 (via MelvinBot)" Date: Thu, 30 Apr 2026 14:53:50 +0000 Subject: [PATCH 1/3] Use wasActionTakenByCurrentUser for receipt view violation message consistency Replace canEditMoneyRequest with wasActionTakenByCurrentUser when determining whether to show "Enter details manually" in violation messages on the receipt view. This aligns the receipt view behavior with the transaction row, ensuring non-submitters see a consistent message without the misleading edit prompt. Co-authored-by: dmkt9 --- .../ReportActionItem/MoneyRequestReceiptView.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx index 313196797541..dcbb392b5841 100644 --- a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx +++ b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx @@ -40,11 +40,10 @@ import {hasHoverSupport} from '@libs/DeviceCapabilities'; import {getMicroSecondOnyxErrorWithTranslationKey, isReceiptError} from '@libs/ErrorUtils'; import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID'; import {getThumbnailAndImageURIs} from '@libs/ReceiptUtils'; -import {getOriginalMessage, isMoneyRequestAction} from '@libs/ReportActionsUtils'; +import {getOriginalMessage, isMoneyRequestAction, wasActionTakenByCurrentUser} from '@libs/ReportActionsUtils'; import {isMarkAsCashActionForTransaction} from '@libs/ReportPrimaryActionUtils'; import { canEditFieldOfMoneyRequest, - canEditMoneyRequest, canUserPerformWriteAction as canUserPerformWriteActionReportUtils, getCreationReportErrors, isInvoiceReport, @@ -196,7 +195,7 @@ function MoneyRequestReceiptView({ // Used for non-restricted fields such as: description, category, tag, billable, etc... const isReportArchived = useReportIsArchived(report?.reportID); const isEditable = !!canUserPerformWriteActionReportUtils(report, isReportArchived) && !readonly; - const canEdit = isMoneyRequestAction(parentReportAction) && canEditMoneyRequest(parentReportAction, transaction, isChatReportArchived, moneyRequestReport, policy) && isEditable; + const isActionTakenByCurrentUser = isMoneyRequestAction(parentReportAction) && wasActionTakenByCurrentUser(parentReportAction); const companyCardPageURL = `${environmentURL}/${ROUTES.WORKSPACE_COMPANY_CARDS.getRoute(report?.policyID)}`; const {personalCardsWithBrokenConnection} = useCardFeedErrors(); const connectionLink = getBrokenConnectionUrlToFixPersonalCard(personalCardsWithBrokenConnection, environmentURL); @@ -275,7 +274,7 @@ function MoneyRequestReceiptView({ const violationMessage = ViolationsUtils.getViolationTranslation({ violation, translate, - canEdit, + canEdit: isActionTakenByCurrentUser, companyCardPageURL, connectionLink, card, @@ -290,7 +289,7 @@ function MoneyRequestReceiptView({ } } return [imageViolations, allViolations]; - }, [transactionViolations, translate, canEdit, companyCardPageURL, connectionLink, cardList, isMarkAsCash, routeDistanceMeters, distanceUnit]); + }, [transactionViolations, translate, isActionTakenByCurrentUser, companyCardPageURL, connectionLink, cardList, isMarkAsCash, routeDistanceMeters, distanceUnit]); const receiptRequiredViolation = transactionViolations?.some((violation) => violation.name === CONST.VIOLATIONS.RECEIPT_REQUIRED); const itemizedReceiptRequiredViolation = transactionViolations?.some((violation) => violation.name === CONST.VIOLATIONS.ITEMIZED_RECEIPT_REQUIRED); From f3cd44f92a07a2d63628463436eafcdc1192e918 Mon Sep 17 00:00:00 2001 From: "dmkt9 (via MelvinBot)" Date: Thu, 30 Apr 2026 15:38:53 +0000 Subject: [PATCH 2/3] Also check isEditable when setting canEdit for violation message Co-authored-by: dmkt9 --- src/components/ReportActionItem/MoneyRequestReceiptView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx index dcbb392b5841..a7e59575cbbb 100644 --- a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx +++ b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx @@ -274,7 +274,7 @@ function MoneyRequestReceiptView({ const violationMessage = ViolationsUtils.getViolationTranslation({ violation, translate, - canEdit: isActionTakenByCurrentUser, + canEdit: isActionTakenByCurrentUser && isEditable, companyCardPageURL, connectionLink, card, From ff14618570b89baa4588a99088cf17f2276af34c Mon Sep 17 00:00:00 2001 From: "dmkt9 (via MelvinBot)" Date: Thu, 30 Apr 2026 15:45:37 +0000 Subject: [PATCH 3/3] Fix: add missing isEditable dependency to useMemo Co-authored-by: dmkt9 --- src/components/ReportActionItem/MoneyRequestReceiptView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx index a7e59575cbbb..1053057c89d1 100644 --- a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx +++ b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx @@ -289,7 +289,7 @@ function MoneyRequestReceiptView({ } } return [imageViolations, allViolations]; - }, [transactionViolations, translate, isActionTakenByCurrentUser, companyCardPageURL, connectionLink, cardList, isMarkAsCash, routeDistanceMeters, distanceUnit]); + }, [transactionViolations, translate, isActionTakenByCurrentUser, isEditable, companyCardPageURL, connectionLink, cardList, isMarkAsCash, routeDistanceMeters, distanceUnit]); const receiptRequiredViolation = transactionViolations?.some((violation) => violation.name === CONST.VIOLATIONS.RECEIPT_REQUIRED); const itemizedReceiptRequiredViolation = transactionViolations?.some((violation) => violation.name === CONST.VIOLATIONS.ITEMIZED_RECEIPT_REQUIRED);