@@ -36,9 +36,11 @@ import {canUseTouchScreen} from '@libs/DeviceCapabilities';
3636import DomUtils from '@libs/DomUtils' ;
3737import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID' ;
3838import Performance from '@libs/Performance' ;
39- import { getLinkedTransactionID , isMoneyRequestAction } from '@libs/ReportActionsUtils' ;
39+ import { getLinkedTransactionID , getReportAction , isMoneyRequestAction } from '@libs/ReportActionsUtils' ;
4040import {
41+ canEditFieldOfMoneyRequest ,
4142 canShowReportRecipientLocalTime ,
43+ canUserPerformWriteAction as canUserPerformWriteActionReportUtils ,
4244 chatIncludesChronos ,
4345 chatIncludesConcierge ,
4446 getParentReport ,
@@ -51,7 +53,7 @@ import {
5153 isSettled ,
5254 temporary_getMoneyRequestOptions ,
5355} from '@libs/ReportUtils' ;
54- import { getTransactionID , hasReceipt as hasReceiptTransactionUtils , isDistanceRequest , isManualDistanceRequest } from '@libs/TransactionUtils' ;
56+ import { getTransactionID , hasReceipt as hasReceiptTransactionUtils } from '@libs/TransactionUtils' ;
5557import willBlurTextInputOnTapOutsideFunc from '@libs/willBlurTextInputOnTapOutside' ;
5658import AgentZeroProcessingRequestIndicator from '@pages/home/report/AgentZeroProcessingRequestIndicator' ;
5759import ParticipantLocalTime from '@pages/home/report/ParticipantLocalTime' ;
@@ -214,7 +216,10 @@ function ReportActionCompose({
214216 const [ transaction ] = useOnyx ( `${ ONYXKEYS . COLLECTION . TRANSACTION } ${ getNonEmptyStringOnyxID ( transactionID ) } ` , { canBeMissing : true } ) ;
215217
216218 const isSingleTransactionView = useMemo ( ( ) => ! ! transaction && ! ! reportTransactions && reportTransactions . length === 1 , [ transaction , reportTransactions ] ) ;
217- const shouldAddOrReplaceReceipt = ( isTransactionThreadView || isSingleTransactionView ) && ( isManualDistanceRequest ( transaction ) || ! isDistanceRequest ( transaction ) ) ;
219+ const parentReportAction = isSingleTransactionView ? iouAction : getReportAction ( report ?. parentReportID , report ?. parentReportActionID ) ;
220+ const canUserPerformWriteAction = ! ! canUserPerformWriteActionReportUtils ( report , isReportArchived ) ;
221+ const canEditReceipt = canUserPerformWriteAction && canEditFieldOfMoneyRequest ( parentReportAction , CONST . EDIT_REQUEST_FIELD . RECEIPT ) && ! transaction ?. receipt ?. isTestDriveReceipt ;
222+ const shouldAddOrReplaceReceipt = ( isTransactionThreadView || isSingleTransactionView ) && canEditReceipt ;
218223
219224 const hasReceipt = useMemo ( ( ) => hasReceiptTransactionUtils ( transaction ) , [ transaction ] ) ;
220225
0 commit comments