diff --git a/packages/twenty-server/src/engine/core-modules/billing/billing.module.ts b/packages/twenty-server/src/engine/core-modules/billing/billing.module.ts index 9a071ab9d2..2f8a963044 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/billing.module.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/billing.module.ts @@ -5,6 +5,7 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { ClickHouseModule } from 'src/database/clickHouse/clickHouse.module'; import { WorkspaceIteratorModule } from 'src/database/commands/command-runners/workspace-iterator.module'; +import { CoreEntityCacheModule } from 'src/engine/core-entity-cache/core-entity-cache.module'; import { BillingGaugeService } from 'src/engine/core-modules/billing/billing-gauge.service'; import { BillingResolver } from 'src/engine/core-modules/billing/billing.resolver'; import { BillingSyncCustomerDataCommand } from 'src/engine/core-modules/billing/commands/billing-sync-customer-data.command'; @@ -49,6 +50,7 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache @Module({ imports: [ ClickHouseModule, + CoreEntityCacheModule, FeatureFlagModule, StripeModule, MessageQueueModule, diff --git a/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts b/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts index 42727b3530..6d7c5155b3 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts @@ -263,6 +263,7 @@ export class BillingSubscriptionService { billingSubscription.stripeSubscriptionId, { trial_end: 'now', + cancel_at_period_end: false, }, ); diff --git a/packages/twenty-server/src/engine/core-modules/billing/services/billing-usage.service.ts b/packages/twenty-server/src/engine/core-modules/billing/services/billing-usage.service.ts index 4c2e28e8e4..86bfa501fe 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/services/billing-usage.service.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/services/billing-usage.service.ts @@ -3,10 +3,12 @@ import { Injectable, Logger } from '@nestjs/common'; import { isDefined } from 'twenty-shared/utils'; +import { WorkspaceActivationStatus } from 'twenty-shared/workspace'; import { differenceInDays } from 'date-fns'; import { ClickHouseService } from 'src/database/clickHouse/clickHouse.service'; import { formatDateTimeForClickHouse } from 'src/database/clickHouse/clickHouse.util'; +import { CoreEntityCacheService } from 'src/engine/core-entity-cache/services/core-entity-cache.service'; import { BillingException, BillingExceptionCode, @@ -49,6 +51,7 @@ export class BillingUsageService { private readonly workspaceCacheService: WorkspaceCacheService, private readonly clickHouseService: ClickHouseService, private readonly billingUsageCapService: BillingUsageCapService, + private readonly coreEntityCacheService: CoreEntityCacheService, ) {} async canFeatureBeUsed(workspaceId: string): Promise { @@ -348,6 +351,18 @@ export class BillingUsageService { return true; } + const workspace = await this.coreEntityCacheService.get( + 'workspaceEntity', + workspaceId, + ); + + if ( + isDefined(workspace) && + workspace.activationStatus === WorkspaceActivationStatus.SUSPENDED + ) { + return false; + } + const { billingSubscription: subscription } = await this.workspaceCacheService.getOrRecompute(workspaceId, [ 'billingSubscription',