From 6593c80a3f4ffa8b66103c9387ac03c0bb5f2902 Mon Sep 17 00:00:00 2001 From: ernstmul Date: Mon, 7 Oct 2024 15:08:49 +0200 Subject: [PATCH 1/5] support for cont-1, fetch plan info from detail endpoint instead of list --- src/lib/constants.ts | 3 ++- src/lib/stores/billing.ts | 2 +- .../organization-[organization]/billing/planSummary.svelte | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 02d7a2768..e73ba5854 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -467,7 +467,8 @@ export const eventServices: Array = [ export enum BillingPlan { FREE = 'tier-0', PRO = 'tier-1', - SCALE = 'tier-2' + SCALE = 'tier-2', + CUSTOM = 'cont-1' } export const feedbackDowngradeOptions = [ diff --git a/src/lib/stores/billing.ts b/src/lib/stores/billing.ts index 21611761f..1457c6186 100644 --- a/src/lib/stores/billing.ts +++ b/src/lib/stores/billing.ts @@ -34,7 +34,7 @@ import { user } from './user'; import { browser } from '$app/environment'; import { canSeeBilling } from './roles'; -export type Tier = 'tier-0' | 'tier-1' | 'tier-2'; +export type Tier = 'tier-0' | 'tier-1' | 'tier-2' | 'cont-1'; export const roles = [ { diff --git a/src/routes/(console)/organization-[organization]/billing/planSummary.svelte b/src/routes/(console)/organization-[organization]/billing/planSummary.svelte index fd2024f1b..252a1ef3c 100644 --- a/src/routes/(console)/organization-[organization]/billing/planSummary.svelte +++ b/src/routes/(console)/organization-[organization]/billing/planSummary.svelte @@ -17,6 +17,8 @@ let currentInvoice: Invoice; let extraMembers = 0; + let currentPlan; + const today = new Date(); onMount(async () => { const invoices = await sdk.forConsole.billing.listInvoices($organization.$id, [ @@ -26,9 +28,10 @@ currentInvoice = invoices.invoices[0]; const members = await sdk.forConsole.teams.listMemberships($organization.$id, []); extraMembers = members.total > 1 ? members.total - 1 : 0; + + currentPlan = await sdk.forConsole.billing.getPlan($organization?.$id); }); - $: currentPlan = $plansInfo?.get($organization?.billingPlan); $: extraUsage = (currentInvoice?.amount ?? 0) - (currentPlan?.price ?? 0); $: extraAddons = currentInvoice?.usage?.length ?? 0; $: isTrial = From 6470ede548f1c616d6b483d5d205c8fdfeb7040f Mon Sep 17 00:00:00 2001 From: ernstmul Date: Mon, 7 Oct 2024 15:44:31 +0200 Subject: [PATCH 2/5] Disable change plan --- src/lib/components/billing/planSelection.svelte | 16 ++++++++++++---- src/lib/sdk/billing.ts | 2 ++ .../change-plan/+page.svelte | 17 ++++++++++++++--- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/lib/components/billing/planSelection.svelte b/src/lib/components/billing/planSelection.svelte index 2fb005922..0d484a9b4 100644 --- a/src/lib/components/billing/planSelection.svelte +++ b/src/lib/components/billing/planSelection.svelte @@ -8,6 +8,7 @@ export let billingPlan: Tier; export let anyOrgFree = false; export let isNewOrg = false; + export let selfService = true; let classes: string = ''; export { classes as class }; @@ -22,7 +23,7 @@
  • - - -
    + + +

    {tierPro.name} {#if $organization?.billingPlan === BillingPlan.PRO && !isNewOrg} diff --git a/src/lib/sdk/billing.ts b/src/lib/sdk/billing.ts index a665d2e72..720b6c394 100644 --- a/src/lib/sdk/billing.ts +++ b/src/lib/sdk/billing.ts @@ -277,6 +277,8 @@ export type Plan = { users: AdditionalResource; }; trialDays: number; + isAvailable: boolean; + selfService: boolean; }; export type PlansInfo = { diff --git a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte index dbfb4fbc7..23dbf61de 100644 --- a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte +++ b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte @@ -18,6 +18,7 @@ Button, Form, FormList, + Helper, InputSelect, InputTags, InputTextarea, @@ -73,6 +74,7 @@ let feedbackDowngradeReason: string; let feedbackMessage: string; + let selfService: boolean; onMount(async () => { if ($page.url.searchParams.has('code')) { @@ -99,6 +101,9 @@ } else { billingPlan = BillingPlan.PRO; } + + const currentPlan = await sdk.forConsole.billing.getPlan($organization?.$id); + selfService = false; //currentPlan.selfService; }); async function loadPaymentMethods() { @@ -252,8 +257,14 @@ For more details on our plans, visit our .

    + {#if !selfService} + Your contract is not eligible for manual changes. Please reach out to schedule a call or setup a dialog. + {/if} - {#if billingPlan !== BillingPlan.FREE && $organization.billingPlan !== billingPlan} + {#if billingPlan !== BillingPlan.FREE && $organization.billingPlan !== billingPlan && $organization.billingPlan !== BillingPlan.CUSTOM} - {:else} + {:else if $organization.billingPlan !== BillingPlan.CUSTOM} {/if} @@ -341,7 +352,7 @@ From f6e177127206589c7acd0ffa94f98884abc3ef0d Mon Sep 17 00:00:00 2001 From: ernstmul Date: Mon, 7 Oct 2024 15:51:58 +0200 Subject: [PATCH 3/5] Add plan description --- src/lib/stores/billing.ts | 7 +++++++ .../organization-[organization]/change-plan/+page.svelte | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/stores/billing.ts b/src/lib/stores/billing.ts index 1457c6186..d5d66a4c3 100644 --- a/src/lib/stores/billing.ts +++ b/src/lib/stores/billing.ts @@ -77,6 +77,8 @@ export function tierToPlan(tier: Tier) { return tierPro; case BillingPlan.SCALE: return tierScale; + case BillingPlan.CUSTOM: + return tierCustom; default: return tierFree; } @@ -182,6 +184,11 @@ export const tierScale: TierData = { description: 'For scaling teams and agencies that need dedicated support.' }; +export const tierCustom: TierData = { + name: 'Custom', + description: 'Team on a custom contract' +}; + export const showUsageRatesModal = writable(false); export function checkForUsageFees(plan: Tier, id: PlanServices) { diff --git a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte index 23dbf61de..8a1795c7a 100644 --- a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte +++ b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte @@ -103,7 +103,7 @@ } const currentPlan = await sdk.forConsole.billing.getPlan($organization?.$id); - selfService = false; //currentPlan.selfService; + selfService = currentPlan.selfService; }); async function loadPaymentMethods() { From 14289100b1a66bf3a24157565325e8f1ea5828dd Mon Sep 17 00:00:00 2001 From: ernstmul Date: Tue, 8 Oct 2024 15:01:21 +0200 Subject: [PATCH 4/5] Helper component to Alert --- .../organization-[organization]/change-plan/+page.svelte | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte index 8a1795c7a..a61a60f10 100644 --- a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte +++ b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte @@ -18,7 +18,6 @@ Button, Form, FormList, - Helper, InputSelect, InputTags, InputTextarea, @@ -258,9 +257,9 @@ .

    {#if !selfService} - Your contract is not eligible for manual changes. Please reach out to schedule a call or setup a dialog. + Your contract is not eligible for manual changes. Pleasereach out to schedule a + call or setup a dialog. {/if} Date: Tue, 8 Oct 2024 16:11:47 +0200 Subject: [PATCH 5/5] Fix typo --- .../organization-[organization]/change-plan/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte index a61a60f10..6b7085516 100644 --- a/src/routes/(console)/organization-[organization]/change-plan/+page.svelte +++ b/src/routes/(console)/organization-[organization]/change-plan/+page.svelte @@ -258,8 +258,8 @@

    {#if !selfService} Your contract is not eligible for manual changes. Pleasereach out to schedule a - call or setup a dialog. + >Your contract is not eligible for manual changes. Please reach out to schedule + a call or setup a dialog. {/if}