@@ -49,9 +49,6 @@ import type {TransactionPendingFieldsKey} from '@src/types/onyx/Transaction';
49
49
import ReportActionItemImage from './ReportActionItemImage' ;
50
50
51
51
type MoneyRequestViewTransactionOnyxProps = {
52
- /** The transaction associated with the transactionThread */
53
- transaction : OnyxEntry < OnyxTypes . Transaction > ;
54
-
55
52
/** Violations detected in this transaction */
56
53
transactionViolations : OnyxEntry < OnyxTypes . TransactionViolations > ;
57
54
} ;
@@ -109,7 +106,6 @@ function MoneyRequestView({
109
106
parentReport,
110
107
parentReportActions,
111
108
policyCategories,
112
- transaction,
113
109
policyTagList,
114
110
policy,
115
111
transactionViolations,
@@ -132,6 +128,12 @@ function MoneyRequestView({
132
128
const isTrackExpense = ReportUtils . isTrackExpenseReport ( report ) ;
133
129
const { canUseViolations, canUseP2PDistanceRequests} = usePermissions ( isTrackExpense ? CONST . IOU . TYPE . TRACK : undefined ) ;
134
130
const moneyRequestReport = parentReport ;
131
+ const linkedTransactionID = useMemo ( ( ) => {
132
+ const originalMessage = parentReportAction && ReportActionsUtils . isMoneyRequestAction ( parentReportAction ) ? ReportActionsUtils . getOriginalMessage ( parentReportAction ) : undefined ;
133
+ return originalMessage ?. IOUTransactionID ?? '-1' ;
134
+ } , [ parentReportAction ] ) ;
135
+ const [ transaction ] = useOnyx ( `${ ONYXKEYS . COLLECTION . TRANSACTION } ${ linkedTransactionID } ` ) ;
136
+
135
137
const {
136
138
created : transactionDate ,
137
139
amount : transactionAmount ,
@@ -169,7 +171,7 @@ function MoneyRequestView({
169
171
const isCancelled = moneyRequestReport && moneyRequestReport ?. isCancelledIOU ;
170
172
171
173
// Used for non-restricted fields such as: description, category, tag, billable, etc.
172
- const canEdit = ReportActionsUtils . isMoneyRequestAction ( parentReportAction ) && ReportUtils . canEditMoneyRequest ( parentReportAction ) ;
174
+ const canEdit = ReportActionsUtils . isMoneyRequestAction ( parentReportAction ) && ReportUtils . canEditMoneyRequest ( parentReportAction , transaction ) ;
173
175
const canEditTaxFields = canEdit && ! isDistanceRequest ;
174
176
175
177
const canEditAmount = ReportUtils . canEditFieldOfMoneyRequest ( parentReportAction , CONST . EDIT_REQUEST_FIELD . AMOUNT ) ;
@@ -214,7 +216,7 @@ function MoneyRequestView({
214
216
let amountDescription = `${ translate ( 'iou.amount' ) } ` ;
215
217
216
218
const hasRoute = TransactionUtils . hasRoute ( transaction , isDistanceRequest ) ;
217
- const rateID = transaction ?. comment . customUnit ?. customUnitRateID ?? '-1' ;
219
+ const rateID = transaction ?. comment ? .customUnit ?. customUnitRateID ?? '-1' ;
218
220
219
221
const currency = policy ? policy . outputCurrency : PolicyUtils . getPersonalPolicy ( ) ?. outputCurrency ?? CONST . CURRENCY . USD ;
220
222
@@ -430,18 +432,18 @@ function MoneyRequestView({
430
432
errors = { errors }
431
433
errorRowStyles = { [ styles . mh4 ] }
432
434
onClose = { ( ) => {
433
- if ( ! transaction ?. transactionID ) {
435
+ if ( ! transaction ?. transactionID && linkedTransactionID === '-1' ) {
434
436
return ;
435
437
}
436
438
437
439
const isCreateChatErrored = ! ! report ?. errorFields ?. createChat ;
438
440
if ( ( isCreateChatErrored || ! ! report ?. isOptimisticReport ) && parentReportAction ) {
439
- const urlToNavigateBack = IOU . cleanUpMoneyRequest ( transaction . transactionID , parentReportAction , true ) ;
441
+ const urlToNavigateBack = IOU . cleanUpMoneyRequest ( transaction ? .transactionID ?? linkedTransactionID , parentReportAction , true ) ;
440
442
Navigation . goBack ( urlToNavigateBack ) ;
441
443
return ;
442
444
}
443
445
444
- if ( transaction . pendingAction === CONST . RED_BRICK_ROAD_PENDING_ACTION . ADD ) {
446
+ if ( transaction ? .pendingAction === CONST . RED_BRICK_ROAD_PENDING_ACTION . ADD ) {
445
447
if ( chatReport ?. reportID && ReportUtils . getAddWorkspaceRoomOrChatReportErrors ( chatReport ) ) {
446
448
Report . navigateToConciergeChatAndDeleteReport ( chatReport . reportID , true , true ) ;
447
449
return ;
@@ -450,7 +452,7 @@ function MoneyRequestView({
450
452
deleteTransaction ( parentReport , parentReportAction ) ;
451
453
}
452
454
}
453
- Transaction . clearError ( transaction . transactionID ) ;
455
+ Transaction . clearError ( transaction ? .transactionID ?? linkedTransactionID ) ;
454
456
ReportActions . clearAllRelatedReportActionErrors ( report ?. reportID ?? '-1' , parentReportAction ) ;
455
457
} }
456
458
>
@@ -675,15 +677,6 @@ export default withOnyx<MoneyRequestViewPropsWithoutTransaction, MoneyRequestVie
675
677
} ,
676
678
} ) (
677
679
withOnyx < MoneyRequestViewProps , MoneyRequestViewTransactionOnyxProps > ( {
678
- transaction : {
679
- key : ( { report, parentReportActions} ) => {
680
- const parentReportAction = parentReportActions ?. [ report ?. parentReportActionID ?? '-1' ] ;
681
- const originalMessage =
682
- parentReportAction && ReportActionsUtils . isMoneyRequestAction ( parentReportAction ) ? ReportActionsUtils . getOriginalMessage ( parentReportAction ) : undefined ;
683
- const transactionID = originalMessage ?. IOUTransactionID ?? - 1 ;
684
- return `${ ONYXKEYS . COLLECTION . TRANSACTION } ${ transactionID } ` ;
685
- } ,
686
- } ,
687
680
transactionViolations : {
688
681
key : ( { report, parentReportActions} ) => {
689
682
const parentReportAction = parentReportActions ?. [ report ?. parentReportActionID ?? '-1' ] ;
0 commit comments