diff --git a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.spec.tsx b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.spec.tsx index 47ac68dc7..3ec6d0015 100644 --- a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.spec.tsx +++ b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.spec.tsx @@ -1,6 +1,7 @@ /* eslint-disable import/no-extraneous-dependencies, ordered-imports/ordered-imports */ import { render, + screen, } from '@testing-library/react' import type { Assignment } from '../../models' @@ -52,7 +53,7 @@ jest.mock('../../utils', () => ({ })) jest.mock('../../constants', () => ({ - BILLING_ACCOUNT_MEMBER_PAYMENT_DETAILS_ENABLED: false, + BILLING_ACCOUNT_MEMBER_PAYMENT_DETAILS_ENABLED: true, })) describe('PaymentFormModal', () => { @@ -92,4 +93,24 @@ describe('PaymentFormModal', () => { preventOpenOnFocus: true, })) }) + + it('shows billing account id when enabled', () => { + render( + , + ) + + expect(screen.getByText('Billing Account')) + .toBeTruthy() + expect(screen.getByText('80001063')) + .toBeTruthy() + }) }) diff --git a/src/apps/work/src/lib/components/PaymentHistoryModal/PaymentHistoryModal.spec.tsx b/src/apps/work/src/lib/components/PaymentHistoryModal/PaymentHistoryModal.spec.tsx index e4688e855..0338e3a0b 100644 --- a/src/apps/work/src/lib/components/PaymentHistoryModal/PaymentHistoryModal.spec.tsx +++ b/src/apps/work/src/lib/components/PaymentHistoryModal/PaymentHistoryModal.spec.tsx @@ -13,7 +13,7 @@ jest.mock('../../hooks', () => ({ })) jest.mock('../../constants', () => ({ - BILLING_ACCOUNT_MEMBER_PAYMENT_DETAILS_ENABLED: false, + BILLING_ACCOUNT_MEMBER_PAYMENT_DETAILS_ENABLED: true, })) jest.mock('~/libs/ui', () => ({ @@ -48,7 +48,7 @@ describe('PaymentHistoryModal', () => { mockUseFetchAssignmentPayments.mockReset() }) - it('renders clickable remarks links and the payment creator handle', async () => { + it('renders clickable remarks links, the payment creator handle, and fee details', async () => { mockUseFetchAssignmentPayments.mockReturnValue({ error: undefined, isLoading: false, @@ -96,9 +96,9 @@ describe('PaymentHistoryModal', () => { .toBeTruthy() expect(screen.getByText('payment.manager')) .toBeTruthy() - expect(screen.queryByText('Fee:')) - .toBeNull() - expect(screen.queryByText('$18.60')) - .toBeNull() + expect(screen.getByText('Fee:')) + .toBeTruthy() + expect(screen.getByText('$18.60')) + .toBeTruthy() }) }) diff --git a/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.spec.tsx b/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.spec.tsx index 9d0d65f46..1f19af869 100644 --- a/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.spec.tsx +++ b/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.spec.tsx @@ -1,5 +1,6 @@ /* eslint-disable import/no-extraneous-dependencies, ordered-imports/ordered-imports */ import { + fireEvent, render, screen, } from '@testing-library/react' @@ -34,10 +35,16 @@ jest.mock('../BillingAccountLineItemsModal', () => ({ ), })) -jest.mock('../../constants', () => ({ - BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED: false, - BILLING_ACCOUNT_DETAILS_MODAL_ENABLED: false, -})) +jest.mock('../../constants', () => { + const constants = { + BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED: true, + BILLING_ACCOUNT_DETAILS_MODAL_ENABLED: true, + } + + Object.assign(globalThis, { mockWorkConstants: constants }) + + return constants +}) jest.mock('~/libs/ui', () => ({ IconOutline: { @@ -55,6 +62,22 @@ const mockedUseFetchProjectBillingAccount = useFetchProjectBillingAccount as jes typeof useFetchProjectBillingAccount > +interface MockWorkConstants { + BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED: boolean + BILLING_ACCOUNT_DETAILS_MODAL_ENABLED: boolean +} + +/** + * Returns the mutable constants mock installed for this spec. + * + * @returns Work app billing feature flag state used by mocked constants. + */ +function getMockWorkConstants(): MockWorkConstants { + return (globalThis as unknown as { + mockWorkConstants: MockWorkConstants + }).mockWorkConstants +} + const billingAccountDetails: BillingAccountDetails = { budget: 1000, consumedAmounts: [], @@ -99,6 +122,9 @@ describe('ProjectBillingAccountExpiredNotice', () => { beforeEach(() => { jest.clearAllMocks() + getMockWorkConstants().BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED = true + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = true + mockedUseFetchBillingAccounts.mockReturnValue({ billingAccounts: [], error: undefined, @@ -124,6 +150,9 @@ describe('ProjectBillingAccountExpiredNotice', () => { }) it('hides billing account budget and line-item details while billing details are disabled', () => { + getMockWorkConstants().BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED = false + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = false + renderNotice() expect(screen.getByText(/Billing account:/)) @@ -147,18 +176,19 @@ describe('ProjectBillingAccountExpiredNotice', () => { .toBeTruthy() expect(screen.getByText(/80001063/)) .toBeTruthy() - expect(screen.queryByText('$1,025 / $1,000 spent')) - .toBeNull() - expect(screen.queryByText(/The billing account for this project has insufficient remaining funds,/)) - .toBeNull() - expect(screen.queryByRole('link', { name: 'click here to update' })) - .toBeNull() - expect(screen.queryByRole('button', { + expect(screen.getByText('$1,025 / $1,000 spent')) + .toBeTruthy() + expect(screen.getByText(/The billing account for this project has insufficient remaining funds,/)) + .toBeTruthy() + expect(screen.getByRole('link', { name: 'click here to update' })) + .toBeTruthy() + fireEvent.click(screen.getByRole('button', { name: 'View billing account details', })) - .toBeNull() - expect(screen.queryByRole('dialog')) - .toBeNull() + + expect(screen.getByRole('dialog') + .textContent) + .toContain('Billing account details for 80001063') }) it('shows member payments remaining instead of spent and total budget for copilots', () => { @@ -185,6 +215,8 @@ describe('ProjectBillingAccountExpiredNotice', () => { isLoading: false, }) + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = true + renderNotice({ ...defaultContextValue, isCopilot: true, @@ -197,7 +229,8 @@ describe('ProjectBillingAccountExpiredNotice', () => { .toBeNull() }) - it('hides member payment details and billing account modal access from copilots when disabled', () => { + it('hides the inline member payment balance but keeps billing account modal access for copilots ' + + 'when disabled', () => { mockedUseFetchBillingAccountDetails.mockReturnValue({ billingAccountDetails: { ...billingAccountDetails, @@ -210,6 +243,8 @@ describe('ProjectBillingAccountExpiredNotice', () => { isLoading: false, }) + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = true + renderNotice({ ...defaultContextValue, isCopilot: true, @@ -220,11 +255,14 @@ describe('ProjectBillingAccountExpiredNotice', () => { .toBeNull() expect(screen.queryByText('$750 / $1,000 spent')) .toBeNull() - expect(screen.queryByRole('button', { + fireEvent.click(screen.getByRole('button', { name: 'View billing account details', })) - .toBeNull() + + expect(screen.getByRole('dialog') + .textContent) + .toContain('Billing account details for 80001063') expect(mockedUseFetchBillingAccountDetails) - .toHaveBeenCalledWith(undefined) + .toHaveBeenCalledWith('80001063') }) }) diff --git a/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.tsx b/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.tsx index eaa72dd62..96a3c130f 100644 --- a/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.tsx +++ b/src/apps/work/src/lib/components/ProjectBillingAccountExpiredNotice/ProjectBillingAccountExpiredNotice.tsx @@ -106,13 +106,13 @@ function isRestrictedCopilot(workAppContext: WorkAppContextModel): boolean { } /** - * Resolves whether the current user may see project payment details. + * Resolves whether the current user may see inline project payment amounts. * * @param workAppContext Current work app user context. * @param displayMemberPaymentDetailsToCopilots Project-level copilot display flag. - * @returns `true` when payment amounts and the line-item modal may be shown. + * @returns `true` when payment amounts may be shown in the notice summary. */ -function canShowProjectPaymentDetails( +function canShowProjectPaymentAmounts( workAppContext: WorkAppContextModel, displayMemberPaymentDetailsToCopilots: boolean | undefined, ): boolean { @@ -124,20 +124,20 @@ function canShowProjectPaymentDetails( * Resolves whether the copilot-safe member-payment balance should be shown. * * @param workAppContext Current work app user context. - * @param showPaymentDetails Whether payment details are enabled for this project. + * @param showPaymentAmounts Whether payment amounts are enabled for this project. * @returns `true` when the user should see member payments remaining. */ function canShowMemberPaymentsRemaining( workAppContext: WorkAppContextModel, - showPaymentDetails: boolean, + showPaymentAmounts: boolean, ): boolean { - return showPaymentDetails && isRestrictedCopilot(workAppContext) + return showPaymentAmounts && isRestrictedCopilot(workAppContext) } interface VisibleBudgetInfoParams { copilotBudgetInfo: CopilotMemberPaymentsBudgetInfo | undefined showMemberPaymentsRemaining: boolean - showPaymentDetails: boolean + showPaymentAmounts: boolean standardBudgetInfo: BillingAccountBudgetInfo | undefined } @@ -150,7 +150,7 @@ interface VisibleBudgetInfoParams { function getVisibleBudgetInfo( params: VisibleBudgetInfoParams, ): BillingAccountBudgetInfo | undefined { - if (!params.showPaymentDetails) { + if (!params.showPaymentAmounts) { return undefined } @@ -198,10 +198,10 @@ function renderBudgetDisplayContent( } /** - * Hides budget-derived billing account notices while budget display is disabled. + * Hides budget-derived billing account notices when budget display is disabled. * * @param billingAccountIssue The billing account issue resolved for the project. - * @returns The issue to display, or `undefined` when the temporary hide applies. + * @returns The issue to display, or `undefined` when budget display is disabled. */ function getVisibleBillingAccountIssue( billingAccountIssue: BillingAccountIssue, @@ -260,7 +260,7 @@ const BillingAccountDetailsContent: FC = ( } /** - * Renders the temporarily enabled/disabled line-item modal. + * Renders the gated billing-account line-item modal. * * @param billingAccountDetails Billing account detail payload, if loaded. * @param isModalOpen Whether the details modal has been requested. @@ -340,14 +340,15 @@ export const ProjectBillingAccountExpiredNotice: FC { const [isModalOpen, setIsModalOpen] = useState(false) const workAppContext: WorkAppContextModel = useContext(WorkAppContext) - const showPaymentDetails: boolean = canShowProjectPaymentDetails( + const showPaymentAmounts: boolean = canShowProjectPaymentAmounts( workAppContext, props.displayMemberPaymentDetailsToCopilots, ) const showMemberPaymentsRemaining: boolean = canShowMemberPaymentsRemaining( workAppContext, - showPaymentDetails, + showPaymentAmounts, ) + const showMemberPaymentsRemainingInModal: boolean = isRestrictedCopilot(workAppContext) const projectBillingAccountResult: UseFetchProjectBillingAccountResult = useFetchProjectBillingAccount( props.projectId, @@ -356,9 +357,9 @@ export const ProjectBillingAccountExpiredNotice: FC ) : undefined @@ -442,7 +443,7 @@ export const ProjectBillingAccountExpiredNotice: FC ({ ), })) -jest.mock('../../constants', () => ({ - BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED: false, - BILLING_ACCOUNT_DETAILS_MODAL_ENABLED: false, - PROJECT_STATUS: { - DRAFT: 'draft', - }, -})) +jest.mock('../../constants', () => { + const constants = { + BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED: true, + BILLING_ACCOUNT_DETAILS_MODAL_ENABLED: true, + PROJECT_STATUS: { + DRAFT: 'draft', + }, + } + + Object.assign(globalThis, { mockWorkConstants: constants }) + + return constants +}) jest.mock('../../utils', () => ({ buildProjectChallengesPath: (projectId: string | number) => ( @@ -88,6 +95,22 @@ const mockedUseFetchBillingAccountDetails = useFetchBillingAccountDetails as jes > const mockedUseFetchBillingAccounts = useFetchBillingAccounts as jest.MockedFunction +interface MockWorkConstants { + BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED: boolean + BILLING_ACCOUNT_DETAILS_MODAL_ENABLED: boolean +} + +/** + * Returns the mutable constants mock installed for this spec. + * + * @returns Work app billing feature flag state used by mocked constants. + */ +function getMockWorkConstants(): MockWorkConstants { + return (globalThis as unknown as { + mockWorkConstants: MockWorkConstants + }).mockWorkConstants +} + const billingAccountDetails: BillingAccountDetails = { budget: 1000, consumedAmounts: [], @@ -126,6 +149,9 @@ describe('ProjectsTable', () => { beforeEach(() => { jest.clearAllMocks() + getMockWorkConstants().BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED = true + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = true + mockedUseFetchBillingAccounts.mockReturnValue({ billingAccounts: [], error: undefined, @@ -170,6 +196,9 @@ describe('ProjectsTable', () => { }) it('hides billing account spent totals and line-item details while billing details are disabled', () => { + getMockWorkConstants().BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED = false + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = false + mockedUseFetchBillingAccounts.mockReturnValue({ billingAccounts: [ { @@ -209,6 +238,47 @@ describe('ProjectsTable', () => { .toBeNull() }) + it('shows billing account spent totals and line-item details when enabled', () => { + mockedUseFetchBillingAccounts.mockReturnValue({ + billingAccounts: [ + { + budget: 1000, + consumedBudget: 225, + id: 80001063, + lockedBudget: 125, + name: 'Access BA', + totalBudgetRemaining: 650, + }, + ], + error: undefined, + isError: false, + isLoading: false, + }) + mockedUseFetchBillingAccountDetails.mockReturnValue({ + billingAccountDetails, + error: undefined, + isError: false, + isLoading: false, + }) + + renderTable([{ + ...invitedProject, + billingAccountId: 80001063, + }]) + + expect(screen.getAllByText('$350 / $1,000 spent').length) + .toBeGreaterThan(0) + fireEvent.click(screen.getAllByRole('button', { + name: 'View billing account details', + })[0]) + + expect(screen.getByRole('dialog') + .textContent) + .toContain('Billing account details for 80001063') + expect(mockedUseFetchBillingAccountDetails) + .toHaveBeenCalledWith('80001063') + }) + it('shows member payments remaining for copilot project rows', () => { mockedUseFetchBillingAccounts.mockReturnValue({ billingAccounts: [ @@ -227,6 +297,8 @@ describe('ProjectsTable', () => { isLoading: false, }) + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = true + renderTable( [{ ...invitedProject, @@ -248,7 +320,8 @@ describe('ProjectsTable', () => { .toBeNull() }) - it('hides payment amounts and billing details access for copilot project rows when disabled', () => { + it('hides inline payment amounts but keeps billing details available for copilot project rows ' + + 'when disabled', () => { mockedUseFetchBillingAccounts.mockReturnValue({ billingAccounts: [ { @@ -265,6 +338,14 @@ describe('ProjectsTable', () => { isError: false, isLoading: false, }) + mockedUseFetchBillingAccountDetails.mockReturnValue({ + billingAccountDetails, + error: undefined, + isError: false, + isLoading: false, + }) + + getMockWorkConstants().BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = true renderTable( [{ @@ -285,9 +366,12 @@ describe('ProjectsTable', () => { .toBeNull() expect(screen.queryByText('$750 / $1,000 spent')) .toBeNull() - expect(screen.queryByRole('button', { + fireEvent.click(screen.getAllByRole('button', { name: 'View billing account details', - })) - .toBeNull() + })[0]) + + expect(screen.getByRole('dialog') + .textContent) + .toContain('Billing account details for 80001063') }) }) diff --git a/src/apps/work/src/lib/components/ProjectsTable/ProjectsTable.tsx b/src/apps/work/src/lib/components/ProjectsTable/ProjectsTable.tsx index f875c799b..5de3da688 100644 --- a/src/apps/work/src/lib/components/ProjectsTable/ProjectsTable.tsx +++ b/src/apps/work/src/lib/components/ProjectsTable/ProjectsTable.tsx @@ -162,13 +162,13 @@ function isRestrictedCopilot(workAppContext: WorkAppContextModel): boolean { } /** - * Resolves whether the current user may see payment details for one project row. + * Resolves whether the current user may see inline payment amounts for one project row. * * @param workAppContext Current work app user context. * @param project Project row being rendered. - * @returns `true` when payment amounts and the line-item modal may be shown. + * @returns `true` when payment amounts may be shown in the row summary. */ -function canShowProjectPaymentDetails( +function canShowProjectPaymentAmounts( workAppContext: WorkAppContextModel, project: Project, ): boolean { @@ -246,8 +246,9 @@ function getBillingAccountDisplay( interface ProjectBillingAccountCellProps { billingAccount: BillingAccount | undefined project: Project - showPaymentDetails: boolean + showPaymentAmounts: boolean showMemberPaymentsRemaining: boolean + showMemberPaymentsRemainingInModal: boolean } interface ProjectBillingBudgetDisplayState { @@ -267,27 +268,25 @@ interface RenderProjectBillingAccountModalParams { * Resolves whether the billing-account details hook should fetch modal data. * * @param isModalOpen Whether the row details modal has been opened. - * @param showPaymentDetails Whether the current user may see payment details. * @returns `true` when the modal feature is enabled and data should be fetched. */ function canFetchProjectBillingAccountDetails( isModalOpen: boolean, - showPaymentDetails: boolean, ): boolean { - return BILLING_ACCOUNT_DETAILS_MODAL_ENABLED && isModalOpen && showPaymentDetails + return BILLING_ACCOUNT_DETAILS_MODAL_ENABLED && isModalOpen } /** * Selects the visible budget state for one project billing-account row. * * @param billingAccount Billing-account summary attached to the project row. - * @param showPaymentDetails Whether the current user may see payment details. + * @param showPaymentAmounts Whether the current user may see inline payment amounts. * @param showMemberPaymentsRemaining Whether the current user needs the copilot-safe member payment view. * @returns Budget data to render, with copilot budget data included when needed. */ function getProjectBillingBudgetDisplayState( billingAccount: BillingAccount | undefined, - showPaymentDetails: boolean, + showPaymentAmounts: boolean, showMemberPaymentsRemaining: boolean, ): ProjectBillingBudgetDisplayState { if (showMemberPaymentsRemaining) { @@ -299,7 +298,7 @@ function getProjectBillingBudgetDisplayState( } } - if (!BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED || !showPaymentDetails) { + if (!BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED || !showPaymentAmounts) { return { budgetInfo: undefined, copilotBudgetInfo: undefined, @@ -350,16 +349,14 @@ function renderProjectBillingAccountBudget( * Renders the billing-account line-item details button when the feature is enabled. * * @param billingAccountId Normalized billing-account id for the current row. - * @param showPaymentDetails Whether the current user may open payment details. * @param onOpen Open handler for the row modal. * @returns The details button, or `undefined` when unavailable. */ function renderProjectBillingAccountDetailsButton( billingAccountId: string | undefined, - showPaymentDetails: boolean, onOpen: () => void, ): JSX.Element | undefined { - if (!BILLING_ACCOUNT_DETAILS_MODAL_ENABLED || !billingAccountId || !showPaymentDetails) { + if (!BILLING_ACCOUNT_DETAILS_MODAL_ENABLED || !billingAccountId) { return undefined } @@ -417,13 +414,13 @@ const ProjectBillingAccountCell: FC = ( const normalizedBillingAccountId = normalizeOptionalString(props.project.billingAccountId) || normalizeOptionalString(props.billingAccount?.id) const billingAccountDetailsResult: UseFetchBillingAccountDetailsResult = useFetchBillingAccountDetails( - canFetchProjectBillingAccountDetails(isModalOpen, props.showPaymentDetails) + canFetchProjectBillingAccountDetails(isModalOpen) ? normalizedBillingAccountId : undefined, ) const budgetDisplayState = getProjectBillingBudgetDisplayState( props.billingAccount, - props.showPaymentDetails, + props.showPaymentAmounts, props.showMemberPaymentsRemaining, ) const billingAccountBudget = renderProjectBillingAccountBudget( @@ -440,7 +437,6 @@ const ProjectBillingAccountCell: FC = ( }, []) const billingAccountDetailsButton = renderProjectBillingAccountDetailsButton( normalizedBillingAccountId, - props.showPaymentDetails, handleOpenModal, ) const billingAccountModal = renderProjectBillingAccountModal({ @@ -448,7 +444,7 @@ const ProjectBillingAccountCell: FC = ( isModalOpen, onClose: handleCloseModal, projectId: props.project.id, - showMemberPaymentsRemaining: props.showMemberPaymentsRemaining, + showMemberPaymentsRemaining: props.showMemberPaymentsRemainingInModal, }) return ( @@ -524,8 +520,9 @@ export const ProjectsTable: FC = (props: ProjectsTableProps) billingAccount={billingAccountsById.get(String(project.billingAccountId))} project={project} showMemberPaymentsRemaining={isRestrictedCopilot(workAppContext) - && canShowProjectPaymentDetails(workAppContext, project)} - showPaymentDetails={canShowProjectPaymentDetails(workAppContext, project)} + && canShowProjectPaymentAmounts(workAppContext, project)} + showMemberPaymentsRemainingInModal={isRestrictedCopilot(workAppContext)} + showPaymentAmounts={canShowProjectPaymentAmounts(workAppContext, project)} /> ), type: 'element', @@ -614,8 +611,9 @@ export const ProjectsTable: FC = (props: ProjectsTableProps) billingAccount={billingAccountsById.get(String(project.billingAccountId))} project={project} showMemberPaymentsRemaining={isRestrictedCopilot(workAppContext) - && canShowProjectPaymentDetails(workAppContext, project)} - showPaymentDetails={canShowProjectPaymentDetails(workAppContext, project)} + && canShowProjectPaymentAmounts(workAppContext, project)} + showMemberPaymentsRemainingInModal={isRestrictedCopilot(workAppContext)} + showPaymentAmounts={canShowProjectPaymentAmounts(workAppContext, project)} /> )} canEdit={canEditProject(project)} diff --git a/src/apps/work/src/lib/constants.ts b/src/apps/work/src/lib/constants.ts index c7fde3d60..b05392525 100644 --- a/src/apps/work/src/lib/constants.ts +++ b/src/apps/work/src/lib/constants.ts @@ -2,11 +2,11 @@ import { EnvironmentConfig } from '~/config' export const WORK_APP_BODY_CLASS = 'work-app' -export const BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED = false +export const BILLING_ACCOUNT_BUDGET_DISPLAY_ENABLED = true -export const BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = false +export const BILLING_ACCOUNT_DETAILS_MODAL_ENABLED = true -export const BILLING_ACCOUNT_MEMBER_PAYMENT_DETAILS_ENABLED = false +export const BILLING_ACCOUNT_MEMBER_PAYMENT_DETAILS_ENABLED = true const DEFAULT_CREATE_FORUM_TYPE_IDS = [ '927abff4-7af9-4145-8ba1-577c16e64e2e',