diff --git a/src/hooks/usePolicyForMovingExpenses.ts b/src/hooks/usePolicyForMovingExpenses.ts index f0625978fb35..e0e313e598f6 100644 --- a/src/hooks/usePolicyForMovingExpenses.ts +++ b/src/hooks/usePolicyForMovingExpenses.ts @@ -1,7 +1,7 @@ import {activePolicySelector} from '@selectors/Policy'; import type {OnyxEntry} from 'react-native-onyx'; import {useSession} from '@components/OnyxListItemProvider'; -import {canSubmitPerDiemExpenseFromWorkspace, isPaidGroupPolicy, isPolicyMemberWithoutPendingDelete} from '@libs/PolicyUtils'; +import {isPaidGroupPolicy, isPolicyMemberWithoutPendingDelete} from '@libs/PolicyUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {Policy} from '@src/types/onyx'; @@ -20,7 +20,7 @@ function isPolicyMemberByRole(policy: OnyxEntry) { return !!policy?.role && Object.values(CONST.POLICY.ROLE).includes(policy.role); } -function usePolicyForMovingExpenses(isPerDiemRequest?: boolean) { +function usePolicyForMovingExpenses() { const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {canBeMissing: true}); const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {canBeMissing: true}); const [activePolicy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${activePolicyID}`, { @@ -32,15 +32,11 @@ function usePolicyForMovingExpenses(isPerDiemRequest?: boolean) { const login = session?.email ?? ''; const userPolicies = Object.values(allPolicies ?? {}).filter( (policy) => - checkForUserPendingDelete(login, policy) && - isPolicyMemberByRole(policy) && - isPaidGroupPolicy(policy) && - policy?.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE && - (!isPerDiemRequest || canSubmitPerDiemExpenseFromWorkspace(policy)), + checkForUserPendingDelete(login, policy) && isPolicyMemberByRole(policy) && isPaidGroupPolicy(policy) && policy?.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE, ); const isMemberOfMoreThanOnePolicy = userPolicies.length > 1; - if (activePolicy && (!isPerDiemRequest || canSubmitPerDiemExpenseFromWorkspace(activePolicy))) { + if (activePolicy) { return {policyForMovingExpensesID: activePolicyID, policyForMovingExpenses: activePolicy, shouldSelectPolicy: false}; } diff --git a/src/pages/NewReportWorkspaceSelectionPage.tsx b/src/pages/NewReportWorkspaceSelectionPage.tsx index c809a0832c9a..d0da894e3359 100644 --- a/src/pages/NewReportWorkspaceSelectionPage.tsx +++ b/src/pages/NewReportWorkspaceSelectionPage.tsx @@ -20,11 +20,10 @@ import Navigation from '@libs/Navigation/Navigation'; import type {NewReportWorkspaceSelectionNavigatorParamList} from '@libs/Navigation/types'; import {getHeaderMessageForNonUserList} from '@libs/OptionsListUtils'; import Permissions from '@libs/Permissions'; -import {canSubmitPerDiemExpenseFromWorkspace, isPolicyAdmin, shouldShowPolicy} from '@libs/PolicyUtils'; +import {isPolicyAdmin, shouldShowPolicy} from '@libs/PolicyUtils'; import {getDefaultWorkspaceAvatar, hasViolations as hasViolationsReportUtils} from '@libs/ReportUtils'; import {buildCannedSearchQuery} from '@libs/SearchQueryUtils'; import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; -import {isPerDiemRequest} from '@libs/TransactionUtils'; import isRHPOnSearchMoneyRequestReportPage from '@navigation/helpers/isRHPOnSearchMoneyRequestReportPage'; import type {PlatformStackScreenProps} from '@navigation/PlatformStackNavigation/types'; import {changeTransactionsReport} from '@userActions/Transaction'; @@ -60,7 +59,6 @@ function NewReportWorkspaceSelectionPage({route}: NewReportWorkspaceSelectionPag const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {canBeMissing: true}); const [policies, fetchStatus] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {canBeMissing: true}); - const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {canBeMissing: true}); const currentUserPersonalDetails = useCurrentUserPersonalDetails(); const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP, {canBeMissing: true}); @@ -135,30 +133,13 @@ function NewReportWorkspaceSelectionPage({route}: NewReportWorkspaceSelectionPag ], ); - const hasPerDiemTransactions = useMemo(() => { - if (selectedTransactionIDs && selectedTransactionIDs.length > 0 && allTransactions) { - return selectedTransactionIDs.some((transactionID) => { - const transaction = allTransactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`]; - return transaction && isPerDiemRequest(transaction); - }); - } - - return false; - }, [selectedTransactionIDs, allTransactions]); - const usersWorkspaces = useMemo(() => { if (!policies || isEmptyObject(policies)) { return []; } return Object.values(policies) - .filter( - (policy) => - shouldShowPolicy(policy, !!isOffline, currentUserPersonalDetails?.login) && - !policy?.isJoinRequestPending && - policy?.isPolicyExpenseChatEnabled && - (!hasPerDiemTransactions || canSubmitPerDiemExpenseFromWorkspace(policy)), - ) + .filter((policy) => shouldShowPolicy(policy, !!isOffline, currentUserPersonalDetails?.login) && !policy?.isJoinRequestPending && policy?.isPolicyExpenseChatEnabled) .map((policy) => ({ text: policy?.name ?? '', policyID: policy?.id, @@ -176,7 +157,7 @@ function NewReportWorkspaceSelectionPage({route}: NewReportWorkspaceSelectionPag shouldSyncFocus: true, })) .sort((a, b) => localeCompare(a.text, b.text)); - }, [policies, isOffline, currentUserPersonalDetails?.login, localeCompare, hasPerDiemTransactions]); + }, [policies, isOffline, currentUserPersonalDetails?.login, localeCompare]); const filteredAndSortedUserWorkspaces = useMemo( () => usersWorkspaces.filter((policy) => policy.text?.toLowerCase().includes(debouncedSearchTerm?.toLowerCase() ?? '')), diff --git a/src/pages/iou/request/step/IOURequestEditReport.tsx b/src/pages/iou/request/step/IOURequestEditReport.tsx index dbedd4aff054..312f89d9ab9a 100644 --- a/src/pages/iou/request/step/IOURequestEditReport.tsx +++ b/src/pages/iou/request/step/IOURequestEditReport.tsx @@ -1,4 +1,4 @@ -import React, {useMemo} from 'react'; +import React from 'react'; import {useSession} from '@components/OnyxListItemProvider'; import {useSearchContext} from '@components/Search/SearchContext'; import type {ListItem} from '@components/SelectionListWithSections/types'; @@ -11,7 +11,6 @@ import Navigation from '@libs/Navigation/Navigation'; import Permissions from '@libs/Permissions'; import {hasViolations as hasViolationsReportUtils} from '@libs/ReportUtils'; import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; -import {isPerDiemRequest} from '@libs/TransactionUtils'; import {createNewReport} from '@userActions/Report'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -40,17 +39,8 @@ 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 [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION, {canBeMissing: true}); const currentUserPersonalDetails = useCurrentUserPersonalDetails(); - - const hasPerDiemTransactions = useMemo(() => { - return selectedTransactionIDs.some((transactionID) => { - const transaction = allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`]; - return transaction && isPerDiemRequest(transaction); - }); - }, [selectedTransactionIDs, allTransactions]); - - const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(hasPerDiemTransactions); + const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(); const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); const hasViolations = hasViolationsReportUtils(undefined, transactionViolations); @@ -112,7 +102,6 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) { removeFromReport={removeFromReport} isEditing={action === CONST.IOU.ACTION.EDIT} createReport={createReport} - isPerDiemRequest={hasPerDiemTransactions} /> ); } diff --git a/src/pages/iou/request/step/IOURequestEditReportCommon.tsx b/src/pages/iou/request/step/IOURequestEditReportCommon.tsx index 450e54c203f2..19eab0f76fd8 100644 --- a/src/pages/iou/request/step/IOURequestEditReportCommon.tsx +++ b/src/pages/iou/request/step/IOURequestEditReportCommon.tsx @@ -68,7 +68,7 @@ function IOURequestEditReportCommon({ const [selectedReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${selectedReportID}`, {canBeMissing: true}); const reportOwnerAccountID = useMemo(() => selectedReport?.ownerAccountID ?? currentUserPersonalDetails.accountID, [selectedReport, currentUserPersonalDetails.accountID]); const reportPolicy = usePolicy(selectedReport?.policyID); - const {policyForMovingExpenses} = usePolicyForMovingExpenses(isPerDiemRequest); + const {policyForMovingExpenses} = usePolicyForMovingExpenses(); const [reportNameValuePairs] = useOnyx(ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS, {canBeMissing: true}); diff --git a/src/pages/iou/request/step/IOURequestStepReport.tsx b/src/pages/iou/request/step/IOURequestStepReport.tsx index 8b50fb3f8c20..3a11275b4686 100644 --- a/src/pages/iou/request/step/IOURequestStepReport.tsx +++ b/src/pages/iou/request/step/IOURequestStepReport.tsx @@ -53,7 +53,7 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) { const isASAPSubmitBetaEnabled = Permissions.isBetaEnabled(CONST.BETAS.ASAP_SUBMIT, allBetas); const session = useSession(); const currentUserPersonalDetails = useCurrentUserPersonalDetails(); - const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(isPerDiemRequest(transaction)); + const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(); const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true}); const hasViolations = hasViolationsReportUtils(undefined, transactionViolations); useRestartOnReceiptFailure(transaction, reportIDFromRoute, iouType, action);