diff --git a/src/components/MoneyReportHeader.tsx b/src/components/MoneyReportHeader.tsx index 40b695f5ddb0..bb2584851744 100644 --- a/src/components/MoneyReportHeader.tsx +++ b/src/components/MoneyReportHeader.tsx @@ -48,6 +48,7 @@ import { navigateToDetailsPage, reportTransactionsSelector, } from '@libs/ReportUtils'; +import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import { allHavePendingRTERViolation, hasDuplicateTransactions, @@ -484,6 +485,10 @@ function MoneyReportHeader({ if (!moneyRequestReport?.reportID) { return; } + if (policy && shouldRestrictUserBillableActions(policy.id)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id)); + return; + } startMoneyRequest(CONST.IOU.TYPE.SUBMIT, moneyRequestReport?.reportID); }, }, @@ -492,11 +497,15 @@ function MoneyReportHeader({ text: translate('iou.addUnreportedExpense'), icon: Expensicons.ReceiptPlus, onSelected: () => { + if (policy && shouldRestrictUserBillableActions(policy.id)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id)); + return; + } openUnreportedExpense(moneyRequestReport?.reportID); }, }, ], - [moneyRequestReport?.reportID, translate], + [moneyRequestReport?.reportID, policy, translate], ); const primaryActionsImplementation = { @@ -848,6 +857,10 @@ function MoneyReportHeader({ if (!moneyRequestReport?.reportID) { return; } + if (policy && shouldRestrictUserBillableActions(policy.id)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id)); + return; + } startMoneyRequest(CONST.IOU.TYPE.SUBMIT, moneyRequestReport?.reportID); }, }, diff --git a/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx b/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx index 94c8fac0baaf..725909ef0099 100644 --- a/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx +++ b/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx @@ -60,6 +60,7 @@ import { isWaitingForSubmissionFromCurrentUser as isWaitingForSubmissionFromCurrentUserReportUtils, } from '@libs/ReportUtils'; import shouldAdjustScroll from '@libs/shouldAdjustScroll'; +import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import {hasPendingUI, isCardTransaction, isPending} from '@libs/TransactionUtils'; import colors from '@styles/theme/colors'; import variables from '@styles/variables'; @@ -471,6 +472,10 @@ function MoneyRequestReportPreviewContent({ if (!iouReport?.reportID) { return; } + if (policy && shouldRestrictUserBillableActions(policy.id)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id)); + return; + } startMoneyRequest(CONST.IOU.TYPE.SUBMIT, iouReport?.reportID, undefined, false, chatReportID); }, }, @@ -479,11 +484,15 @@ function MoneyRequestReportPreviewContent({ text: translate('iou.addUnreportedExpense'), icon: Expensicons.ReceiptPlus, onSelected: () => { + if (policy && shouldRestrictUserBillableActions(policy.id)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id)); + return; + } openUnreportedExpense(iouReport?.reportID, iouReport?.parentReportID); }, }, ], - [chatReportID, iouReport?.parentReportID, iouReport?.reportID, translate], + [chatReportID, iouReport?.parentReportID, iouReport?.reportID, policy, translate], ); const isReportDeleted = action?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; diff --git a/src/components/ReportActionItem/ReportPreview.tsx b/src/components/ReportActionItem/ReportPreview.tsx index 730e4c19796f..dd18d151ae07 100644 --- a/src/components/ReportActionItem/ReportPreview.tsx +++ b/src/components/ReportActionItem/ReportPreview.tsx @@ -75,6 +75,7 @@ import { isWaitingForSubmissionFromCurrentUser as isWaitingForSubmissionFromCurrentUserReportUtils, } from '@libs/ReportUtils'; import StringUtils from '@libs/StringUtils'; +import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import { getDescription, getMerchant, @@ -513,6 +514,10 @@ function ReportPreview({ if (!iouReport?.reportID) { return; } + if (policy && shouldRestrictUserBillableActions(policy.id)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id)); + return; + } startMoneyRequest(CONST.IOU.TYPE.SUBMIT, iouReport?.reportID, undefined, false, chatReportID); }, }, @@ -521,11 +526,15 @@ function ReportPreview({ text: translate('iou.addUnreportedExpense'), icon: Expensicons.ReceiptPlus, onSelected: () => { + if (policy && shouldRestrictUserBillableActions(policy.id)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id)); + return; + } openUnreportedExpense(iouReport?.reportID, iouReport?.parentReportID); }, }, ], - [chatReportID, iouReport?.parentReportID, iouReport?.reportID, translate], + [chatReportID, iouReport?.parentReportID, iouReport?.reportID, policy, translate], ); const reportPreviewAction = useMemo(() => { diff --git a/src/pages/AddUnreportedExpense.tsx b/src/pages/AddUnreportedExpense.tsx index 78a6e0546b67..34314691e77d 100644 --- a/src/pages/AddUnreportedExpense.tsx +++ b/src/pages/AddUnreportedExpense.tsx @@ -14,12 +14,14 @@ import useThemeStyles from '@hooks/useThemeStyles'; import {fetchUnreportedExpenses} from '@libs/actions/UnreportedExpenses'; import interceptAnonymousUser from '@libs/interceptAnonymousUser'; import type {AddUnreportedExpensesParamList} from '@libs/Navigation/types'; +import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils'; import Navigation from '@navigation/Navigation'; import type {PlatformStackScreenProps} from '@navigation/PlatformStackNavigation/types'; import {startMoneyRequest} from '@userActions/IOU'; import {changeTransactionsReport} from '@userActions/Transaction'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; +import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; import type Transaction from '@src/types/onyx/Transaction'; import NewChatSelectorPage from './NewChatSelectorPage'; @@ -120,6 +122,10 @@ function AddUnreportedExpense({route}: AddUnreportedExpensePageType) { { buttonText: translate('iou.createExpense'), buttonAction: () => { + if (report && report.policyID && shouldRestrictUserBillableActions(report.policyID)) { + Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(report.policyID)); + return; + } interceptAnonymousUser(() => { startMoneyRequest(CONST.IOU.TYPE.SUBMIT, reportID, undefined, false, backToReport); });