diff --git a/src/components/learner-credit-management/BudgetDetailActivityTabContents.jsx b/src/components/learner-credit-management/BudgetDetailActivityTabContents.jsx index a48758c40b..d8ada45302 100644 --- a/src/components/learner-credit-management/BudgetDetailActivityTabContents.jsx +++ b/src/components/learner-credit-management/BudgetDetailActivityTabContents.jsx @@ -1,4 +1,5 @@ import React, { useContext } from 'react'; +import isEmpty from 'lodash/isEmpty'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { Stack, Skeleton } from '@openedx/paragon'; @@ -12,10 +13,11 @@ import NoBnEBudgetActivity from './empty-state/NoBnEBudgetActivity'; const BudgetDetailActivityTabContents = ({ enterpriseUUID, enterpriseFeatures }) => { const isTopDownAssignmentEnabled = enterpriseFeatures.topDownAssignmentRealTimeLcm; - const isEnterpriseGroupsEnabled = enterpriseFeatures.enterpriseGroupsV1; - const { openInviteModal } = useContext(BudgetDetailPageContext); const { enterpriseOfferId, subsidyAccessPolicyId } = useBudgetId(); const { data: subsidyAccessPolicy } = useSubsidyAccessPolicy(subsidyAccessPolicyId); + const isEnterpriseGroupsEnabled = enterpriseFeatures.enterpriseGroupsV1 + && !isEmpty(subsidyAccessPolicy?.groupAssociations); + const { openInviteModal } = useContext(BudgetDetailPageContext); const { isLoading: isBudgetActivityOverviewLoading, isFetching: isBudgetActivityOverviewFetching, diff --git a/src/components/learner-credit-management/BudgetDetailPageOverviewAvailability.jsx b/src/components/learner-credit-management/BudgetDetailPageOverviewAvailability.jsx index c530e06d58..aaeda32b97 100644 --- a/src/components/learner-credit-management/BudgetDetailPageOverviewAvailability.jsx +++ b/src/components/learner-credit-management/BudgetDetailPageOverviewAvailability.jsx @@ -1,4 +1,5 @@ import React, { useContext } from 'react'; +import isEmpty from 'lodash/isEmpty'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { generatePath, useParams, Link } from 'react-router-dom'; @@ -95,7 +96,7 @@ const BudgetActions = ({ } if (!isAssignable) { - if (enterpriseGroupsV1) { + if (enterpriseGroupsV1 && !isEmpty(subsidyAccessPolicy?.groupAssociations)) { if (isLmsBudget(enterpriseCustomer?.activeIntegrations.length, enterpriseGroup?.appliesToAllContexts)) { return (
diff --git a/src/components/learner-credit-management/data/tests/constants.js b/src/components/learner-credit-management/data/tests/constants.js index 5f4e6f87df..e4ba8aa37e 100644 --- a/src/components/learner-credit-management/data/tests/constants.js +++ b/src/components/learner-credit-management/data/tests/constants.js @@ -86,6 +86,23 @@ export const mockAssignableSubsidyAccessPolicyWithSpendNoRedeemed = { }; export const mockPerLearnerSpendLimitSubsidyAccessPolicy = { + uuid: mockSubsidyAccessPolicyUUID, + subsidyActiveDatetime: new Date(today).toISOString(), + subsidyExpirationDatetime: new Date(today + 130 * 24 * 60 * 60 * 1000).toISOString(), + groupAssociations: ['test-group-uuid'], + policyType: 'PerLearnerSpendCreditAccessPolicy', + displayName: 'Per Learner Spend Limit', + spendLimit: 10000 * 100, + aggregates: { + spendAvailableUsd: 10000, + amountAllocatedUsd: 100, + amountRedeemedUsd: 350, + }, + isAssignable: false, + subsidyUuid: 'mock-subsidy-uuid', +}; + +export const mockSpendLimitNoGroupsSubsidyAccessPolicy = { uuid: mockSubsidyAccessPolicyUUID, subsidyActiveDatetime: new Date(today).toISOString(), subsidyExpirationDatetime: new Date(today + 130 * 24 * 60 * 60 * 1000).toISOString(), diff --git a/src/components/learner-credit-management/invite-modal/InviteMembersModalWrapper.jsx b/src/components/learner-credit-management/invite-modal/InviteMembersModalWrapper.jsx index 9ff18f8927..ea5d8607a6 100644 --- a/src/components/learner-credit-management/invite-modal/InviteMembersModalWrapper.jsx +++ b/src/components/learner-credit-management/invite-modal/InviteMembersModalWrapper.jsx @@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; import { ActionRow, Button, FullscreenModal, Hyperlink, StatefulButton, useToggle, } from '@openedx/paragon'; -import { getConfig } from '@edx/frontend-platform/config'; import { snakeCaseObject } from '@edx/frontend-platform/utils'; import { useBudgetId, useSubsidyAccessPolicy } from '../data'; @@ -12,6 +11,7 @@ import SystemErrorAlertModal from '../cards/assignment-allocation-status-modals/ import LmsApiService from '../../../data/services/LmsApiService'; import { BudgetDetailPageContext } from '../BudgetDetailPageWrapper'; import { BUDGET_DETAIL_MEMBERS_TAB } from '../data/constants'; +import { HELP_CENTER_GROUPS_INVITE_LINK } from '../../settings/data/constants'; const InviteMembersModalWrapper = ({ isOpen, @@ -90,7 +90,7 @@ const InviteMembersModalWrapper = ({