diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx index 0423f0fba432..458d59c5e833 100644 --- a/src/components/Search/index.tsx +++ b/src/components/Search/index.tsx @@ -104,6 +104,7 @@ function mapTransactionItemToSelectedEntry( return [ item.keyForList, { + transaction: item, isSelected: true, canReject: canRejectRequest, canHold: canHoldRequest, @@ -157,6 +158,7 @@ function prepareTransactionsList( return { ...selectedTransactions, [item.keyForList]: { + transaction: item, isSelected: true, canReject: canRejectRequest, canHold: canHoldRequest, @@ -539,6 +541,7 @@ function Search({ const originalItemTransaction = searchResults?.data?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${itemTransaction?.comment?.originalTransactionID}`]; newTransactionList[transactionItem.transactionID] = { + transaction: transactionItem, action: transactionItem.action, canHold: canHoldRequest, isHeld: isOnHold(transactionItem), @@ -593,6 +596,7 @@ function Search({ const originalItemTransaction = searchResults?.data?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${itemTransaction?.comment?.originalTransactionID}`]; newTransactionList[transactionItem.transactionID] = { + transaction: transactionItem, action: transactionItem.action, canHold: canHoldRequest, isHeld: isOnHold(transactionItem), diff --git a/src/components/Search/types.ts b/src/components/Search/types.ts index b4272937bfed..add360fa1c93 100644 --- a/src/components/Search/types.ts +++ b/src/components/Search/types.ts @@ -3,12 +3,15 @@ import type {PaymentMethod} from '@components/KYCWall/types'; import type {ReportActionListItemType, TaskListItemType, TransactionGroupListItemType, TransactionListItemType} from '@components/SelectionListWithSections/types'; import type {SearchKey} from '@libs/SearchUIUtils'; import type CONST from '@src/CONST'; -import type {ReportAction, SearchResults} from '@src/types/onyx'; +import type {ReportAction, SearchResults, Transaction} from '@src/types/onyx'; import type {SearchDataTypes} from '@src/types/onyx/SearchResults'; import type IconAsset from '@src/types/utils/IconAsset'; /** Model of the selected transaction */ type SelectedTransactionInfo = { + /** The transaction itself */ + transaction: Transaction; + /** Whether the transaction is selected */ isSelected: boolean; diff --git a/src/libs/API/parameters/CreateAppReportParams.ts b/src/libs/API/parameters/CreateAppReportParams.ts index 74e14f6b5d5d..de9e533b86d2 100644 --- a/src/libs/API/parameters/CreateAppReportParams.ts +++ b/src/libs/API/parameters/CreateAppReportParams.ts @@ -4,6 +4,7 @@ type CreateAppReportParams = { reportID: string; reportActionID: string; reportPreviewReportActionID: string; + ownerEmail?: string; shouldDismissEmptyReportsConfirmation?: boolean; }; export default CreateAppReportParams; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 05d490dfee85..9da0d2065af7 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -329,6 +329,7 @@ import { isDistanceRequest, isExpensifyCardTransaction, isFetchingWaypointsFromServer, + isManagedCardTransaction, isManualDistanceRequest as isManualDistanceRequestTransactionUtils, isMapDistanceRequest, isOnHold as isOnHoldTransactionUtils, @@ -4553,6 +4554,11 @@ function canEditMoneyRequest( return false; } + // Domain admins can report unreported managed card transactions + if (transaction.reportID === CONST.REPORT.UNREPORTED_REPORT_ID && isManagedCardTransaction(transaction)) { + return true; + } + const moneyRequestReportID = originalMessage?.IOUReportID; const isRequestor = currentUserAccountID === reportAction?.actorAccountID; diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index aa380cd34183..27cc69f6c83f 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -2878,12 +2878,12 @@ function buildNewReportOptimisticData( policy: OnyxEntry, reportID: string, reportActionID: string, - creatorPersonalDetails: CurrentUserPersonalDetails, + ownerPersonalDetails: CurrentUserPersonalDetails, reportPreviewReportActionID: string, hasViolationsParam: boolean, isASAPSubmitBetaEnabled: boolean, ) { - const {accountID, login, email} = creatorPersonalDetails; + const {accountID, login, email} = ownerPersonalDetails; const timeOfCreation = DateUtils.getDBTime(); const parentReport = getPolicyExpenseChat(accountID, policy?.id); const optimisticReportData = buildOptimisticEmptyReport(reportID, accountID, parentReport, reportPreviewReportActionID, policy, timeOfCreation); @@ -2935,7 +2935,7 @@ function buildNewReportOptimisticData( shouldShow: true, childOwnerAccountID: accountID, automatic: false, - avatar: creatorPersonalDetails.avatar, + avatar: ownerPersonalDetails.avatar, isAttachmentOnly: false, reportActionID: reportPreviewReportActionID, message: createReportActionMessage, @@ -3106,7 +3106,7 @@ function buildNewReportOptimisticData( } function createNewReport( - creatorPersonalDetails: CurrentUserPersonalDetails, + ownerPersonalDetails: CurrentUserPersonalDetails, hasViolationsParam: boolean, isASAPSubmitBetaEnabled: boolean, policy: OnyxEntry, @@ -3121,7 +3121,7 @@ function createNewReport( policy, optimisticReportID, reportActionID, - creatorPersonalDetails, + ownerPersonalDetails, reportPreviewReportActionID, hasViolationsParam, isASAPSubmitBetaEnabled, @@ -3139,12 +3139,13 @@ function createNewReport( reportID: optimisticReportID, reportActionID, reportPreviewReportActionID, + ownerEmail: ownerPersonalDetails.login, ...(shouldDismissEmptyReportsConfirmation ? {shouldDismissEmptyReportsConfirmation} : {}), }, {optimisticData, successData, failureData}, ); if (shouldNotifyNewAction) { - notifyNewAction(parentReportID, creatorPersonalDetails.accountID, reportPreviewAction); + notifyNewAction(parentReportID, ownerPersonalDetails.accountID, reportPreviewAction); } return optimisticReportData; diff --git a/src/pages/Search/SearchTransactionsChangeReport.tsx b/src/pages/Search/SearchTransactionsChangeReport.tsx index 8744ffcf203e..2b43ee2eb795 100644 --- a/src/pages/Search/SearchTransactionsChangeReport.tsx +++ b/src/pages/Search/SearchTransactionsChangeReport.tsx @@ -1,10 +1,10 @@ import React, {useMemo} from 'react'; import {InteractionManager} from 'react-native'; -import {useSession} from '@components/OnyxListItemProvider'; +import type {OnyxCollection} from 'react-native-onyx'; +import {usePersonalDetails, useSession} from '@components/OnyxListItemProvider'; import {useSearchContext} from '@components/Search/SearchContext'; import type {ListItem} from '@components/SelectionListWithSections/types'; import useConditionalCreateEmptyReportConfirmation from '@hooks/useConditionalCreateEmptyReportConfirmation'; -import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useHasPerDiemTransactions from '@hooks/useHasPerDiemTransactions'; import useOnyx from '@hooks/useOnyx'; import usePermissions from '@hooks/usePermissions'; @@ -13,12 +13,13 @@ import {createNewReport} from '@libs/actions/Report'; import {changeTransactionsReport} from '@libs/actions/Transaction'; import setNavigationActionToMicrotaskQueue from '@libs/Navigation/helpers/setNavigationActionToMicrotaskQueue'; import Navigation from '@libs/Navigation/Navigation'; -import {getReportOrDraftReport, hasViolations as hasViolationsReportUtils} from '@libs/ReportUtils'; +import {getPersonalDetailsForAccountID, getReportOrDraftReport, hasViolations as hasViolationsReportUtils} from '@libs/ReportUtils'; import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import IOURequestEditReportCommon from '@pages/iou/request/step/IOURequestEditReportCommon'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import type {PersonalDetails, Transaction} from '@src/types/onyx'; type TransactionGroupListItem = ListItem & { /** reportID of the report */ @@ -28,6 +29,18 @@ type TransactionGroupListItem = ListItem & { function SearchTransactionsChangeReport() { const {selectedTransactions, clearSelectedTransactions} = useSearchContext(); const selectedTransactionsKeys = useMemo(() => Object.keys(selectedTransactions), [selectedTransactions]); + const transactions = useMemo( + () => + Object.values(selectedTransactions).reduce( + (transactionsCollection, transactionItem) => { + // eslint-disable-next-line no-param-reassign + transactionsCollection[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionItem.transaction.transactionID}`] = transactionItem.transaction; + return transactionsCollection; + }, + {} as NonNullable>, + ), + [selectedTransactions], + ); const [allReportNextSteps] = useOnyx(ONYXKEYS.COLLECTION.NEXT_STEP, {canBeMissing: true}); const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {canBeMissing: false}); const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {canBeMissing: true}); @@ -35,12 +48,11 @@ function SearchTransactionsChangeReport() { const hasPerDiemTransactions = useHasPerDiemTransactions(selectedTransactionsKeys); const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(hasPerDiemTransactions); const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); - const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {canBeMissing: true}); const {isBetaEnabled} = usePermissions(); const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT); const session = useSession(); + const personalDetails = usePersonalDetails(); const hasViolations = hasViolationsReportUtils(undefined, transactionViolations, session?.accountID ?? CONST.DEFAULT_NUMBER_ID, session?.email ?? ''); - const currentUserPersonalDetails = useCurrentUserPersonalDetails(); const policyForMovingExpenses = policyForMovingExpensesID ? allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyForMovingExpensesID}`] : undefined; const firstTransactionKey = selectedTransactionsKeys.at(0); const firstTransactionReportID = firstTransactionKey ? selectedTransactions[firstTransactionKey]?.reportID : undefined; @@ -72,9 +84,9 @@ function SearchTransactionsChangeReport() { const report = getReportOrDraftReport(reportIDWithOwner); return report?.ownerAccountID; }, [selectedTransactions, selectedTransactionsKeys]); - + const targetOwnerPersonalDetails = useMemo(() => getPersonalDetailsForAccountID(targetOwnerAccountID, personalDetails) as PersonalDetails, [personalDetails, targetOwnerAccountID]); const createReportForPolicy = (shouldDismissEmptyReportsConfirmation?: boolean) => { - const optimisticReport = createNewReport(currentUserPersonalDetails, hasViolations, isASAPSubmitBetaEnabled, policyForMovingExpenses, false, shouldDismissEmptyReportsConfirmation); + const optimisticReport = createNewReport(targetOwnerPersonalDetails, hasViolations, isASAPSubmitBetaEnabled, policyForMovingExpenses, false, shouldDismissEmptyReportsConfirmation); const reportNextStep = allReportNextSteps?.[`${ONYXKEYS.COLLECTION.NEXT_STEP}${optimisticReport.reportID}`]; setNavigationActionToMicrotaskQueue(() => { changeTransactionsReport({ @@ -86,7 +98,7 @@ function SearchTransactionsChangeReport() { policy: policyForMovingExpenses, reportNextStep, policyCategories: allPolicyCategories?.[`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policyForMovingExpensesID}`], - allTransactions, + allTransactions: transactions, }); clearSelectedTransactions(); }); @@ -128,7 +140,7 @@ function SearchTransactionsChangeReport() { policy: allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${item.policyID}`], reportNextStep, policyCategories: allPolicyCategories?.[`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${item.policyID}`], - allTransactions, + allTransactions: transactions, }); // eslint-disable-next-line @typescript-eslint/no-deprecated InteractionManager.runAfterInteractions(() => { @@ -147,7 +159,7 @@ function SearchTransactionsChangeReport() { isASAPSubmitBetaEnabled, accountID: session?.accountID ?? CONST.DEFAULT_NUMBER_ID, email: session?.email ?? '', - allTransactions, + allTransactions: transactions, }); clearSelectedTransactions(); Navigation.goBack(); diff --git a/src/pages/iou/request/step/IOURequestEditReport.tsx b/src/pages/iou/request/step/IOURequestEditReport.tsx index ea6bd74d7e93..1b923a9e0f5b 100644 --- a/src/pages/iou/request/step/IOURequestEditReport.tsx +++ b/src/pages/iou/request/step/IOURequestEditReport.tsx @@ -1,10 +1,9 @@ -import React from 'react'; +import React, {useMemo} from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import {useSession} from '@components/OnyxListItemProvider'; +import {usePersonalDetails, useSession} from '@components/OnyxListItemProvider'; import {useSearchContext} from '@components/Search/SearchContext'; import type {ListItem} from '@components/SelectionListWithSections/types'; import useConditionalCreateEmptyReportConfirmation from '@hooks/useConditionalCreateEmptyReportConfirmation'; -import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useHasPerDiemTransactions from '@hooks/useHasPerDiemTransactions'; import useOnyx from '@hooks/useOnyx'; import usePermissions from '@hooks/usePermissions'; @@ -13,14 +12,14 @@ import {turnOffMobileSelectionMode} from '@libs/actions/MobileSelectionMode'; import {changeTransactionsReport} from '@libs/actions/Transaction'; import setNavigationActionToMicrotaskQueue from '@libs/Navigation/helpers/setNavigationActionToMicrotaskQueue'; import Navigation from '@libs/Navigation/Navigation'; -import {hasViolations as hasViolationsReportUtils} from '@libs/ReportUtils'; +import {getPersonalDetailsForAccountID, hasViolations as hasViolationsReportUtils} from '@libs/ReportUtils'; import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import {createNewReport} from '@userActions/Report'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; -import type {Report} from '@src/types/onyx'; +import type {PersonalDetails, Report} from '@src/types/onyx'; import IOURequestEditReportCommon from './IOURequestEditReportCommon'; import withWritableReportOrNotFound from './withWritableReportOrNotFound'; import type {WithWritableReportOrNotFoundProps} from './withWritableReportOrNotFound'; @@ -44,7 +43,11 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) { const session = useSession(); const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {canBeMissing: true}); const [allPolicyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}`, {canBeMissing: true}); - const currentUserPersonalDetails = useCurrentUserPersonalDetails(); + const personalDetails = usePersonalDetails(); + const ownerPersonalDetails = useMemo( + () => getPersonalDetailsForAccountID(selectedReport?.ownerAccountID, personalDetails) as PersonalDetails, + [personalDetails, selectedReport?.ownerAccountID], + ); const selectedReportPolicy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${selectedReport?.policyID}`]; const hasPerDiemTransactions = useHasPerDiemTransactions(selectedTransactionIDs); @@ -106,7 +109,7 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) { } const policyForNewReport = hasPerDiemTransactions ? selectedReportPolicy : policyForMovingExpenses; - const optimisticReport = createNewReport(currentUserPersonalDetails, hasViolations, isASAPSubmitBetaEnabled, policyForNewReport, false, shouldDismissEmptyReportsConfirmation); + const optimisticReport = createNewReport(ownerPersonalDetails, hasViolations, isASAPSubmitBetaEnabled, policyForNewReport, false, shouldDismissEmptyReportsConfirmation); selectReport({value: optimisticReport.reportID}, optimisticReport); }; diff --git a/src/pages/iou/request/step/IOURequestEditReportCommon.tsx b/src/pages/iou/request/step/IOURequestEditReportCommon.tsx index c0a138a0ec09..39c55ed9cc11 100644 --- a/src/pages/iou/request/step/IOURequestEditReportCommon.tsx +++ b/src/pages/iou/request/step/IOURequestEditReportCommon.tsx @@ -218,7 +218,7 @@ function IOURequestEditReportCommon({ const headerMessage = useMemo(() => (searchValue && !reportOptions.length ? translate('common.noResultsFound') : ''), [searchValue, reportOptions.length, translate]); const createReportOption = useMemo(() => { - if (!createReport || (isEditing && !isOwner)) { + if (!createReport) { return undefined; } @@ -230,7 +230,7 @@ function IOURequestEditReportCommon({ icon={icons.Document} /> ); - }, [icons.Document, createReport, isEditing, isOwner, translate, policyForMovingExpenses?.name, handleCreateReport]); + }, [icons.Document, createReport, translate, policyForMovingExpenses?.name, handleCreateReport]); // eslint-disable-next-line rulesdir/no-negated-variables const shouldShowNotFoundPage = useMemo(() => { diff --git a/src/pages/iou/request/step/IOURequestStepReport.tsx b/src/pages/iou/request/step/IOURequestStepReport.tsx index 440fdefbca04..74a0ec44640f 100644 --- a/src/pages/iou/request/step/IOURequestStepReport.tsx +++ b/src/pages/iou/request/step/IOURequestStepReport.tsx @@ -1,11 +1,10 @@ -import React from 'react'; +import React, {useMemo} from 'react'; import {InteractionManager} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import {useSession} from '@components/OnyxListItemProvider'; +import {usePersonalDetails, useSession} from '@components/OnyxListItemProvider'; import {useSearchContext} from '@components/Search/SearchContext'; import type {ListItem} from '@components/SelectionListWithSections/types'; import useConditionalCreateEmptyReportConfirmation from '@hooks/useConditionalCreateEmptyReportConfirmation'; -import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useOnyx from '@hooks/useOnyx'; import usePermissions from '@hooks/usePermissions'; import usePolicyForMovingExpenses from '@hooks/usePolicyForMovingExpenses'; @@ -15,14 +14,15 @@ import {createNewReport} from '@libs/actions/Report'; import {changeTransactionsReport, setTransactionReport} from '@libs/actions/Transaction'; import Navigation from '@libs/Navigation/Navigation'; import {getPolicyByCustomUnitID} from '@libs/PolicyUtils'; -import {getReportOrDraftReport, hasViolations as hasViolationsReportUtils, isPolicyExpenseChat, isReportOutstanding} from '@libs/ReportUtils'; +import {getOriginalMessage, isMoneyRequestAction} from '@libs/ReportActionsUtils'; +import {getPersonalDetailsForAccountID, getReportOrDraftReport, hasViolations as hasViolationsReportUtils, isPolicyExpenseChat, isReportOutstanding} from '@libs/ReportUtils'; import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import {isPerDiemRequest} from '@libs/TransactionUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; -import type {Report} from '@src/types/onyx'; +import type {PersonalDetails, Report, ReportAction, ReportActions} from '@src/types/onyx'; import IOURequestEditReportCommon from './IOURequestEditReportCommon'; import withFullTransactionOrNotFound from './withFullTransactionOrNotFound'; import type {WithFullTransactionOrNotFoundProps} from './withFullTransactionOrNotFound'; @@ -36,6 +36,10 @@ type TransactionGroupListItem = ListItem & { type IOURequestStepReportProps = WithWritableReportOrNotFoundProps & WithFullTransactionOrNotFoundProps; +const getIOUActionsSelector = (actions: OnyxEntry): ReportAction[] => { + return Object.values(actions ?? {}).filter(isMoneyRequestAction); +}; + function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) { const {backTo, action, iouType, transactionID, reportID: reportIDFromRoute, reportActionID} = route.params; const [allReports] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}`, {canBeMissing: false}); @@ -46,17 +50,27 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) { const shouldUseTransactionReport = (!!transactionReport && isReportOutstanding(transactionReport, transactionReport?.policyID)) || isUnreported; const outstandingReportID = isPolicyExpenseChat(participantReport) ? participantReport?.iouReportID : participantReportID; const selectedReportID = shouldUseTransactionReport ? transactionReport?.reportID : outstandingReportID; + const [selectedReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${selectedReportID}`, {canBeMissing: false}); const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {canBeMissing: true}); const [allPolicyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}`, {canBeMissing: true}); const {removeTransaction, setSelectedTransactions} = useSearchContext(); const reportOrDraftReport = getReportOrDraftReport(reportIDFromRoute); + const [iouActions] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportOrDraftReport?.parentReportID}`, {canBeMissing: true, selector: getIOUActionsSelector}); const isEditing = action === CONST.IOU.ACTION.EDIT; const isCreateReport = action === CONST.IOU.ACTION.CREATE; const isFromGlobalCreate = !!transaction?.isFromGlobalCreate; const {isBetaEnabled} = usePermissions(); const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT); const session = useSession(); - const currentUserPersonalDetails = useCurrentUserPersonalDetails(); + const personalDetails = usePersonalDetails(); + const ownerAccountID = useMemo(() => { + if (isUnreported) { + return iouActions?.find((iouAction) => getOriginalMessage(iouAction as ReportAction)?.IOUTransactionID === transaction.transactionID) + ?.actorAccountID; + } + return selectedReport?.ownerAccountID; + }, [isUnreported, selectedReport?.ownerAccountID, iouActions, transaction?.transactionID]); + const ownerPersonalDetails = useMemo(() => getPersonalDetailsForAccountID(ownerAccountID, personalDetails) as PersonalDetails, [personalDetails, ownerAccountID]); const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(isPerDiemRequest(transaction)); const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {canBeMissing: true}); @@ -190,7 +204,7 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) { } const policyForNewReport = isPerDiemTransaction && perDiemOriginalPolicy ? perDiemOriginalPolicy : policyForMovingExpenses; - const optimisticReport = createNewReport(currentUserPersonalDetails, hasViolations, isASAPSubmitBetaEnabled, policyForNewReport, false, shouldDismissEmptyReportsConfirmation); + const optimisticReport = createNewReport(ownerPersonalDetails, hasViolations, isASAPSubmitBetaEnabled, policyForNewReport, false, shouldDismissEmptyReportsConfirmation); handleRegularReportSelection({value: optimisticReport.reportID}, optimisticReport); }; @@ -243,6 +257,7 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) { shouldShowNotFoundPage={shouldShowNotFoundPage} isPerDiemRequest={transaction ? isPerDiemRequest(transaction) : false} createReport={action === CONST.IOU.ACTION.EDIT && (policyForMovingExpensesID || shouldSelectPolicy || isPerDiemTransaction) ? createReport : undefined} + targetOwnerAccountID={ownerAccountID} /> );