diff --git a/src/pages/iou/request/step/IOURequestEditReportCommon.tsx b/src/pages/iou/request/step/IOURequestEditReportCommon.tsx index 924ae7983b97..cc782518ddc0 100644 --- a/src/pages/iou/request/step/IOURequestEditReportCommon.tsx +++ b/src/pages/iou/request/step/IOURequestEditReportCommon.tsx @@ -16,7 +16,7 @@ import usePolicy from '@hooks/usePolicy'; import usePolicyForMovingExpenses from '@hooks/usePolicyForMovingExpenses'; import useReportTransactions from '@hooks/useReportTransactions'; import Navigation from '@libs/Navigation/Navigation'; -import {isPolicyAdmin} from '@libs/PolicyUtils'; +import {canSubmitPerDiemExpenseFromWorkspace, isPolicyAdmin} from '@libs/PolicyUtils'; import {canAddTransaction, getIconsForExpenseReport, isIOUReport, isOpenReport, isReportOwner, sortOutstandingReportsBySelected} from '@libs/ReportUtils'; import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import {isPerDiemRequest as isPerDiemRequestUtil} from '@libs/TransactionUtils'; @@ -129,6 +129,10 @@ function IOURequestEditReportCommon({ .filter((report) => { const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`]; + if (isPerDiemRequest && !canSubmitPerDiemExpenseFromWorkspace(policy)) { + return false; + } + if (canAddTransaction(report, undefined, true)) { return true; } @@ -151,7 +155,7 @@ function IOURequestEditReportCommon({ icons: getIconsForExpenseReport(report, personalDetails, policy), }; }); - }, [debouncedSearchValue, outstandingReports, selectedReportID, personalDetails, localeCompare, allPolicies, currentUserPersonalDetails.accountID]); + }, [debouncedSearchValue, outstandingReports, selectedReportID, personalDetails, localeCompare, allPolicies, currentUserPersonalDetails.accountID, isPerDiemRequest]); const navigateBack = () => { Navigation.goBack(backTo); diff --git a/src/pages/iou/request/step/IOURequestStepReport.tsx b/src/pages/iou/request/step/IOURequestStepReport.tsx index 516952ab9a32..1b6532bc9381 100644 --- a/src/pages/iou/request/step/IOURequestStepReport.tsx +++ b/src/pages/iou/request/step/IOURequestStepReport.tsx @@ -136,6 +136,11 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) { setCustomUnitID(transaction.transactionID, newCustomUnitID ?? CONST.CUSTOM_UNITS.FAKE_P2P_ID); setCustomUnitRateID(transaction.transactionID, undefined, transaction, newPolicy); clearSubrates(transaction.transactionID); + + const newChatReportID = reportOrDraftReportFromValue?.chatReportID ?? reportIDFromRoute; + const destinationRoute = ROUTES.MONEY_REQUEST_STEP_DESTINATION.getRoute(action, iouType, transactionID, newChatReportID); + Navigation.goBack(destinationRoute, {compareParams: false}); + return; } const iouConfirmationPageRoute = ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(action, iouType, transactionID, reportOrDraftReportFromValue?.chatReportID); @@ -270,7 +275,7 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) { let selectedPolicyID; if (isPerDiemTransaction) { - selectedPolicyID = perDiemOriginalPolicy?.id; + selectedPolicyID = isFromGlobalCreate ? undefined : perDiemOriginalPolicy?.id; } else { selectedPolicyID = !isEditing && !isFromGlobalCreate ? reportOrDraftReport?.policyID : undefined; }