add billing threshold + specific trial free credits (#11533)

In this PR : 
- set billing thresholds after subscription creation (not possible
during billing checkout)
- add specific free trial workflow credit quantities + set them in
subscription item + check them when receiving stripe alert event

closes : https://github.com/twentyhq/core-team-issues/issues/682
This commit is contained in:
Etienne
2025-04-14 18:25:07 +02:00
committed by GitHub
parent 704b18af30
commit 9a69cd0b61
17 changed files with 218 additions and 21 deletions

View File

@ -5,7 +5,8 @@ export const GET_METERED_PRODUCTS_USAGE = gql`
getMeteredProductsUsage {
productKey
usageQuantity
includedFreeQuantity
freeTierQuantity
freeTrialQuantity
unitPriceCents
totalCostCents
}

View File

@ -1,9 +1,13 @@
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
import {
BillingProductKey,
SubscriptionStatus,
useGetMeteredProductsUsageQuery,
} from '~/generated/graphql';
export const useGetWorkflowNodeExecutionUsage = () => {
const subscriptionStatus = useSubscriptionStatus();
const { data, loading } = useGetMeteredProductsUsageQuery();
const workflowUsage = data?.getMeteredProductsUsage.find(
@ -22,16 +26,21 @@ export const useGetWorkflowNodeExecutionUsage = () => {
};
}
const includedFreeQuantity =
subscriptionStatus === SubscriptionStatus.Trialing
? workflowUsage.freeTrialQuantity
: workflowUsage.freeTierQuantity;
return {
usageQuantity: workflowUsage.usageQuantity,
freeUsageQuantity:
workflowUsage.usageQuantity > workflowUsage.includedFreeQuantity
? workflowUsage.includedFreeQuantity
workflowUsage.usageQuantity > includedFreeQuantity
? includedFreeQuantity
: workflowUsage.usageQuantity,
includedFreeQuantity: workflowUsage.includedFreeQuantity,
includedFreeQuantity,
paidUsageQuantity:
workflowUsage.usageQuantity > workflowUsage.includedFreeQuantity
? workflowUsage.usageQuantity - workflowUsage.includedFreeQuantity
workflowUsage.usageQuantity > includedFreeQuantity
? workflowUsage.usageQuantity - includedFreeQuantity
: 0,
unitPriceCents: workflowUsage.unitPriceCents,
totalCostCents: workflowUsage.totalCostCents,