From 36f11f397c2e562bf959519f16573b4c233b2a35 Mon Sep 17 00:00:00 2001
From: Darshan
Date: Thu, 18 Dec 2025 13:36:10 +0530
Subject: [PATCH] remove: `invoice`, `invoiceList` and
`estimationDeleteOrganization` manual types.
---
src/lib/sdk/billing.ts | 63 +++----------------
src/lib/stores/billing.ts | 16 ++---
.../billing/paymentHistory.svelte | 7 +--
.../billing/planSummaryOld.svelte | 4 +-
.../billing/retryPaymentModal.svelte | 3 +-
.../billing/store.ts | 5 +-
.../deleteOrganizationEstimation.svelte | 5 +-
.../settings/deleteOrganizationModal.svelte | 11 ++--
.../settings/invoicesTable.svelte | 10 +--
.../usage/[[invoice]]/+page.ts | 6 +-
.../settings/usage/[[invoice]]/+page.ts | 8 +--
11 files changed, 45 insertions(+), 93 deletions(-)
diff --git a/src/lib/sdk/billing.ts b/src/lib/sdk/billing.ts
index c52e2ed18..be459762b 100644
--- a/src/lib/sdk/billing.ts
+++ b/src/lib/sdk/billing.ts
@@ -1,45 +1,8 @@
-import type { Tier } from '$lib/stores/billing';
import type { Campaign } from '$lib/stores/campaigns';
import type { Client, Models } from '@appwrite.io/console';
-import type { PaymentMethod } from '@stripe/stripe-js';
+import type { PaymentMethod as StripePaymentMethod } from '@stripe/stripe-js';
import type { Organization, OrganizationError, OrganizationList } from '../stores/organization';
-export type Invoice = {
- $id: string;
- $createdAt: Date;
- $updatedAt: Date;
- permissions: string[];
- teamId: string;
- aggregationId: string;
- plan: Tier;
- amount: number;
- tax: number;
- taxAmount: number;
- vat: number;
- vatAmount: number;
- grossAmount: number;
- creditsUsed: number;
- currency: string;
- from: string;
- to: string;
- status: string;
- dueAt: string;
- clientSecret: string;
- usage: {
- name: string;
- value: number /* service over the limit*/;
- amount: number /* price of service over the limit*/;
- rate: number;
- desc: string;
- }[];
- lastError?: string;
-};
-
-export type InvoiceList = {
- invoices: Invoice[];
- total: number;
-};
-
export type Estimation = {
amount: number;
grossAmount: number;
@@ -57,15 +20,6 @@ export type EstimationItem = {
value: number;
};
-export type EstimationDeleteOrganization = {
- amount: number;
- grossAmount: number;
- credits: number;
- discount: number;
- items: EstimationItem[];
- unpaidInvoices: Invoice[];
-};
-
export type Coupon = {
$id: string;
code: string;
@@ -401,7 +355,7 @@ export class Billing {
async estimationDeleteOrganization(
organizationId: string
- ): Promise {
+ ): Promise {
const path = `/organizations/${organizationId}/estimations/delete-organization`;
const uri = new URL(this.client.config.endpoint + path);
return await this.client.call('patch', uri, {
@@ -624,7 +578,10 @@ export class Billing {
);
}
- async listInvoices(organizationId: string, queries: string[] = []): Promise {
+ async listInvoices(
+ organizationId: string,
+ queries: string[] = []
+ ): Promise {
const path = `/organizations/${organizationId}/invoices`;
const params = {
organizationId,
@@ -642,7 +599,7 @@ export class Billing {
);
}
- async getInvoice(organizationId: string, invoiceId: string): Promise {
+ async getInvoice(organizationId: string, invoiceId: string): Promise {
const path = `/organizations/${organizationId}/invoices/${invoiceId}`;
const params = {
organizationId,
@@ -699,7 +656,7 @@ export class Billing {
);
}
- async updateInvoiceStatus(organizationId: string, invoiceId: string): Promise {
+ async updateInvoiceStatus(organizationId: string, invoiceId: string): Promise {
const path = `/organizations/${organizationId}/invoices/${invoiceId}/status`;
const uri = new URL(this.client.config.endpoint + path);
return await this.client.call('PATCH', uri, {
@@ -711,7 +668,7 @@ export class Billing {
organizationId: string,
invoiceId: string,
paymentMethodId: string
- ): Promise {
+ ): Promise {
const path = `/organizations/${organizationId}/invoices/${invoiceId}/payments`;
const params = {
organizationId,
@@ -1064,7 +1021,7 @@ export class Billing {
async setPaymentMethod(
paymentMethodId: string,
- providerMethodId: string | PaymentMethod,
+ providerMethodId: string | StripePaymentMethod,
name: string,
state: string | undefined = undefined
): Promise {
diff --git a/src/lib/stores/billing.ts b/src/lib/stores/billing.ts
index 60746241d..d55e3cbd5 100644
--- a/src/lib/stores/billing.ts
+++ b/src/lib/stores/billing.ts
@@ -12,13 +12,7 @@ import PaymentMandate from '$lib/components/billing/alerts/paymentMandate.svelte
import { BillingPlan, NEW_DEV_PRO_UPGRADE_COUPON } from '$lib/constants';
import { cachedStore } from '$lib/helpers/cache';
import { type Size, sizeToBytes } from '$lib/helpers/sizeConvertion';
-import type {
- AddressesList,
- AggregationTeam,
- Invoice,
- InvoiceList,
- BillingPlansMap
-} from '$lib/sdk/billing';
+import type { AddressesList, AggregationTeam, BillingPlansMap } from '$lib/sdk/billing';
import { isCloud } from '$lib/system';
import { activeHeaderAlert, orgMissingPaymentMethod } from '$routes/(console)/store';
import { AppwriteException, Query, Platform, type Models } from '@appwrite.io/console';
@@ -85,7 +79,7 @@ export function getRoleLabel(role: string) {
return roles.find((r) => r.value === role)?.label ?? role;
}
-export function tierToPlan(tier: Tier) {
+export function tierToPlan(tier: Tier | string) {
switch (tier) {
case BillingPlan.FREE:
return tierFree;
@@ -154,7 +148,7 @@ export type PlanServices =
export function getServiceLimit(
serviceId: PlanServices,
- tier: Tier = null,
+ tier: Tier | string = null,
plan?: Models.BillingPlan
): number {
if (!isCloud) return 0;
@@ -182,7 +176,7 @@ export function getServiceLimit(
}
export const failedInvoice = cachedStore<
- Invoice,
+ Models.Invoice,
{
load: (orgId: string) => Promise;
}
@@ -208,7 +202,7 @@ export const failedInvoice = cachedStore<
};
});
-export const actionRequiredInvoices = writable(null);
+export const actionRequiredInvoices = writable(null);
export type TierData = {
name: string;
diff --git a/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte b/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte
index 552288765..77a4d1952 100644
--- a/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte
+++ b/src/routes/(console)/organization-[organization]/billing/paymentHistory.svelte
@@ -5,9 +5,8 @@
import { Button } from '$lib/elements/forms';
import DualTimeView from '$lib/components/dualTimeView.svelte';
import { formatCurrency } from '$lib/helpers/numbers';
- import type { Invoice, InvoiceList } from '$lib/sdk/billing';
import { getApiEndpoint, sdk } from '$lib/stores/sdk';
- import { Query } from '@appwrite.io/console';
+ import { type Models, Query } from '@appwrite.io/console';
import { trackEvent } from '$lib/actions/analytics';
import { selectedInvoice, showRetryModal } from './store';
import {
@@ -32,7 +31,7 @@
let limit = $state(5);
let offset = $state(0);
let isLoadingInvoices = $state(false);
- let invoiceList: InvoiceList = $state({
+ let invoiceList: Models.InvoiceList = $state({
invoices: [],
total: 0
});
@@ -65,7 +64,7 @@
isLoadingInvoices = false;
}
- function retryPayment(invoice: Invoice) {
+ function retryPayment(invoice: Models.Invoice) {
$selectedInvoice = invoice;
$showRetryModal = true;
}
diff --git a/src/routes/(console)/organization-[organization]/billing/planSummaryOld.svelte b/src/routes/(console)/organization-[organization]/billing/planSummaryOld.svelte
index 301792d33..d9b45130b 100644
--- a/src/routes/(console)/organization-[organization]/billing/planSummaryOld.svelte
+++ b/src/routes/(console)/organization-[organization]/billing/planSummaryOld.svelte
@@ -5,7 +5,7 @@
import { toLocaleDate } from '$lib/helpers/date';
import { upgradeURL } from '$lib/stores/billing';
import { organization } from '$lib/stores/organization';
- import type { Aggregation, Invoice } from '$lib/sdk/billing';
+ import type { Aggregation } from '$lib/sdk/billing';
import { abbreviateNumber, formatCurrency, formatNumberWithCommas } from '$lib/helpers/numbers';
import { BillingPlan } from '$lib/constants';
import { Click, trackEvent } from '$lib/actions/analytics';
@@ -23,8 +23,8 @@
import type { Models } from '@appwrite.io/console';
export let currentPlan: Models.BillingPlan;
- export let currentInvoice: Invoice | undefined = undefined;
export let availableCredit: number | undefined = undefined;
+ export let currentInvoice: Models.Invoice | undefined = undefined;
export let currentAggregation: Aggregation | undefined = undefined;
let showCancel: boolean = false;
diff --git a/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte b/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte
index ab7384d56..5bdbdbc02 100644
--- a/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte
+++ b/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte
@@ -3,7 +3,6 @@
import { FakeModal } from '$lib/components';
import { Button } from '$lib/elements/forms';
import { Dependencies } from '$lib/constants';
- import type { Invoice } from '$lib/sdk/billing';
import { addNotification } from '$lib/stores/notifications';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { page } from '$app/state';
@@ -25,7 +24,7 @@
import type { Models } from '@appwrite.io/console';
export let show = false;
- export let invoice: Invoice;
+ export let invoice: Models.Invoice;
let name: string;
let state: string = '';
diff --git a/src/routes/(console)/organization-[organization]/billing/store.ts b/src/routes/(console)/organization-[organization]/billing/store.ts
index a8f05930a..957d65551 100644
--- a/src/routes/(console)/organization-[organization]/billing/store.ts
+++ b/src/routes/(console)/organization-[organization]/billing/store.ts
@@ -1,7 +1,8 @@
import { page } from '$app/stores';
import { derived, writable } from 'svelte/store';
+import type { Models } from '@appwrite.io/console';
+import type { AggregationList, InvoiceUsage } from '$lib/sdk/billing';
import type { WizardStepsType } from '$lib/layout/wizardWithSteps.svelte';
-import type { AggregationList, Invoice, InvoiceUsage } from '$lib/sdk/billing';
export const aggregationList = derived(
page,
@@ -14,7 +15,7 @@ export const addCreditWizardStore = writable<{ coupon: string; paymentMethodId:
paymentMethodId: null
});
-export const selectedInvoice = writable(null);
+export const selectedInvoice = writable(null);
export const showRetryModal = writable(false);
export type RowFactoryOptions = {
diff --git a/src/routes/(console)/organization-[organization]/settings/deleteOrganizationEstimation.svelte b/src/routes/(console)/organization-[organization]/settings/deleteOrganizationEstimation.svelte
index e521985a5..14ae7d8bc 100644
--- a/src/routes/(console)/organization-[organization]/settings/deleteOrganizationEstimation.svelte
+++ b/src/routes/(console)/organization-[organization]/settings/deleteOrganizationEstimation.svelte
@@ -1,8 +1,9 @@
{#if estimation}
diff --git a/src/routes/(console)/organization-[organization]/settings/deleteOrganizationModal.svelte b/src/routes/(console)/organization-[organization]/settings/deleteOrganizationModal.svelte
index dab95d83a..25a97956d 100644
--- a/src/routes/(console)/organization-[organization]/settings/deleteOrganizationModal.svelte
+++ b/src/routes/(console)/organization-[organization]/settings/deleteOrganizationModal.svelte
@@ -15,15 +15,15 @@
import { tierToPlan } from '$lib/stores/billing';
import { Table, Tabs, Alert } from '@appwrite.io/pink-svelte';
import DeleteOrganizationEstimation from './deleteOrganizationEstimation.svelte';
- import type { EstimationDeleteOrganization, InvoiceList } from '$lib/sdk/billing';
+ import type { Models } from '@appwrite.io/console';
export let showDelete = false;
- export let invoices: InvoiceList;
- let error: string = null;
+ export let invoices: Models.InvoiceList;
+ let error: string = null;
let selectedTab = 'projects';
let organizationName: string = null;
- let estimation: EstimationDeleteOrganization;
+ let estimation: Models.EstimationDeleteOrganization;
async function deleteOrg() {
try {
@@ -112,7 +112,8 @@
This action is irreversible.
{/if}
- {#if estimation && (estimation.unpaidInvoices.length > 0 || estimation.grossAmount > 0)}
+
+ {#if estimation && (estimation.unpaidInvoices.length > 0 || estimation.unpaidInvoices.some((invoice) => invoice.grossAmount > 0))}
{:else}
{#if $projects.total > 0}
diff --git a/src/routes/(console)/organization-[organization]/settings/invoicesTable.svelte b/src/routes/(console)/organization-[organization]/settings/invoicesTable.svelte
index 84b7ca609..514e8a575 100644
--- a/src/routes/(console)/organization-[organization]/settings/invoicesTable.svelte
+++ b/src/routes/(console)/organization-[organization]/settings/invoicesTable.svelte
@@ -1,5 +1,4 @@