From f0e78d062e28780cf314e00d78d9e8a1ef3ebe49 Mon Sep 17 00:00:00 2001 From: Oli Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Thu, 6 Jun 2024 18:31:39 +0200 Subject: [PATCH] feat: Add tax region + rates to SDK and types (#7635) * feat: Add tax region + rates to SDK and types * replace client with sdk in loaders * Address PR feedback --- .../dashboard/src/hooks/api/tax-rates.tsx | 41 +++++----- .../dashboard/src/hooks/api/tax-regions.tsx | 35 ++++---- .../dashboard/src/lib/client/client.ts | 2 - .../dashboard/src/lib/client/taxes.ts | 59 -------------- .../src/routes/taxes/tax-rate-edit/loader.ts | 7 +- .../routes/taxes/tax-region-detail/loader.ts | 7 +- packages/core/js-sdk/src/admin/index.ts | 6 ++ packages/core/js-sdk/src/admin/tax-rate.ts | 81 +++++++++++++++++++ packages/core/js-sdk/src/admin/tax-region.ts | 68 ++++++++++++++++ packages/core/types/src/http/index.ts | 4 +- .../types/src/http/tax-rate/admin/entities.ts | 23 ++++++ .../types/src/http/tax-rate/admin/index.ts | 4 + .../types/src/http/tax-rate/admin/payloads.ts | 25 ++++++ .../types/src/http/tax-rate/admin/queries.ts | 16 ++++ .../src/http/tax-rate/admin/responses.ts | 13 +++ .../types/src/http/{tax => tax-rate}/index.ts | 0 .../src/http/tax-region/admin/entities.ts | 21 +++++ .../types/src/http/tax-region/admin/index.ts | 4 + .../src/http/tax-region/admin/payloads.ts | 13 +++ .../src/http/tax-region/admin/queries.ts | 14 ++++ .../src/http/tax-region/admin/responses.ts | 13 +++ .../core/types/src/http/tax-region/index.ts | 1 + .../core/types/src/http/tax/admin/index.ts | 2 - .../types/src/http/tax/admin/tax-rates.ts | 30 ------- .../types/src/http/tax/admin/tax-regions.ts | 32 -------- 25 files changed, 348 insertions(+), 173 deletions(-) delete mode 100644 packages/admin-next/dashboard/src/lib/client/taxes.ts create mode 100644 packages/core/js-sdk/src/admin/tax-rate.ts create mode 100644 packages/core/js-sdk/src/admin/tax-region.ts create mode 100644 packages/core/types/src/http/tax-rate/admin/entities.ts create mode 100644 packages/core/types/src/http/tax-rate/admin/index.ts create mode 100644 packages/core/types/src/http/tax-rate/admin/payloads.ts create mode 100644 packages/core/types/src/http/tax-rate/admin/queries.ts create mode 100644 packages/core/types/src/http/tax-rate/admin/responses.ts rename packages/core/types/src/http/{tax => tax-rate}/index.ts (100%) create mode 100644 packages/core/types/src/http/tax-region/admin/entities.ts create mode 100644 packages/core/types/src/http/tax-region/admin/index.ts create mode 100644 packages/core/types/src/http/tax-region/admin/payloads.ts create mode 100644 packages/core/types/src/http/tax-region/admin/queries.ts create mode 100644 packages/core/types/src/http/tax-region/admin/responses.ts create mode 100644 packages/core/types/src/http/tax-region/index.ts delete mode 100644 packages/core/types/src/http/tax/admin/index.ts delete mode 100644 packages/core/types/src/http/tax/admin/tax-rates.ts delete mode 100644 packages/core/types/src/http/tax/admin/tax-regions.ts diff --git a/packages/admin-next/dashboard/src/hooks/api/tax-rates.tsx b/packages/admin-next/dashboard/src/hooks/api/tax-rates.tsx index 21d6dc7a60..9866a98cb7 100644 --- a/packages/admin-next/dashboard/src/hooks/api/tax-rates.tsx +++ b/packages/admin-next/dashboard/src/hooks/api/tax-rates.tsx @@ -1,8 +1,4 @@ -import { - AdminPostTaxRatesReq, - AdminPostTaxRatesTaxRateReq, -} from "@medusajs/medusa" -import { AdminTaxRateListResponse, AdminTaxRateResponse } from "@medusajs/types" +import { HttpTypes } from "@medusajs/types" import { QueryKey, UseMutationOptions, @@ -10,10 +6,9 @@ import { useMutation, useQuery, } from "@tanstack/react-query" -import { client } from "../../lib/client" +import { sdk } from "../../lib/client" import { queryClient } from "../../lib/query-client" import { queryKeysFactory } from "../../lib/query-key-factory" -import { TaxRateDeleteRes } from "../../types/api-responses" const TAX_RATES_QUERY_KEY = "tax_rates" as const export const taxRatesQueryKeys = queryKeysFactory(TAX_RATES_QUERY_KEY) @@ -23,9 +18,9 @@ export const useTaxRate = ( query?: Record, options?: Omit< UseQueryOptions< - AdminTaxRateResponse, + HttpTypes.AdminTaxRateResponse, Error, - AdminTaxRateResponse, + HttpTypes.AdminTaxRateResponse, QueryKey >, "queryFn" | "queryKey" @@ -33,7 +28,7 @@ export const useTaxRate = ( ) => { const { data, ...rest } = useQuery({ queryKey: taxRatesQueryKeys.detail(id), - queryFn: async () => client.taxes.retrieveTaxRate(id, query), + queryFn: async () => sdk.admin.taxRate.retrieve(id, query), ...options, }) @@ -44,16 +39,16 @@ export const useTaxRates = ( query?: Record, options?: Omit< UseQueryOptions< - AdminTaxRateListResponse, + HttpTypes.AdminTaxRateListResponse, Error, - AdminTaxRateListResponse, + HttpTypes.AdminTaxRateListResponse, QueryKey >, "queryFn" | "queryKey" > ) => { const { data, ...rest } = useQuery({ - queryFn: () => client.taxes.listTaxRates(query), + queryFn: () => sdk.admin.taxRate.list(query), queryKey: taxRatesQueryKeys.list(query), ...options, }) @@ -64,13 +59,13 @@ export const useTaxRates = ( export const useUpdateTaxRate = ( id: string, options?: UseMutationOptions< - AdminTaxRateResponse, + HttpTypes.AdminTaxRateResponse, Error, - AdminPostTaxRatesTaxRateReq + HttpTypes.AdminUpdateTaxRate > ) => { return useMutation({ - mutationFn: (payload) => client.taxes.updateTaxRate(id, payload), + mutationFn: (payload) => sdk.admin.taxRate.update(id, payload), onSuccess: (data, variables, context) => { queryClient.invalidateQueries({ queryKey: taxRatesQueryKeys.lists() }) queryClient.invalidateQueries({ @@ -85,13 +80,13 @@ export const useUpdateTaxRate = ( export const useCreateTaxRate = ( options?: UseMutationOptions< - AdminTaxRateResponse, + HttpTypes.AdminTaxRateResponse, Error, - AdminPostTaxRatesReq + HttpTypes.AdminCreateTaxRate > ) => { return useMutation({ - mutationFn: (payload) => client.taxes.createTaxRate(payload), + mutationFn: (payload) => sdk.admin.taxRate.create(payload), onSuccess: (data, variables, context) => { queryClient.invalidateQueries({ queryKey: taxRatesQueryKeys.lists() }) options?.onSuccess?.(data, variables, context) @@ -102,10 +97,14 @@ export const useCreateTaxRate = ( export const useDeleteTaxRate = ( id: string, - options?: UseMutationOptions + options?: UseMutationOptions< + HttpTypes.AdminTaxRateDeleteResponse, + Error, + void + > ) => { return useMutation({ - mutationFn: () => client.taxes.deleteTaxRate(id), + mutationFn: () => sdk.admin.taxRate.delete(id), onSuccess: (data, variables, context) => { queryClient.invalidateQueries({ queryKey: taxRatesQueryKeys.lists() }) queryClient.invalidateQueries({ diff --git a/packages/admin-next/dashboard/src/hooks/api/tax-regions.tsx b/packages/admin-next/dashboard/src/hooks/api/tax-regions.tsx index 4dcb2e9056..2991e8ca57 100644 --- a/packages/admin-next/dashboard/src/hooks/api/tax-regions.tsx +++ b/packages/admin-next/dashboard/src/hooks/api/tax-regions.tsx @@ -1,8 +1,4 @@ -import { AdminCreateTaxRegion } from "@medusajs/medusa" -import { - AdminTaxRegionListResponse, - AdminTaxRegionResponse, -} from "@medusajs/types" +import { HttpTypes } from "@medusajs/types" import { QueryKey, UseMutationOptions, @@ -10,10 +6,9 @@ import { useMutation, useQuery, } from "@tanstack/react-query" -import { client } from "../../lib/client" +import { sdk } from "../../lib/client" import { queryClient } from "../../lib/query-client" import { queryKeysFactory } from "../../lib/query-key-factory" -import { TaxRegionDeleteRes } from "../../types/api-responses" const TAX_REGIONS_QUERY_KEY = "tax_regions" as const export const taxRegionsQueryKeys = queryKeysFactory(TAX_REGIONS_QUERY_KEY) @@ -23,9 +18,9 @@ export const useTaxRegion = ( query?: Record, options?: Omit< UseQueryOptions< - AdminTaxRegionResponse, + HttpTypes.AdminTaxRegionResponse, Error, - AdminTaxRegionResponse, + HttpTypes.AdminTaxRegionResponse, QueryKey >, "queryFn" | "queryKey" @@ -33,7 +28,7 @@ export const useTaxRegion = ( ) => { const { data, ...rest } = useQuery({ queryKey: taxRegionsQueryKeys.detail(id), - queryFn: async () => client.taxes.retrieveTaxRegion(id, query), + queryFn: async () => sdk.admin.taxRegion.retrieve(id, query), ...options, }) @@ -44,16 +39,16 @@ export const useTaxRegions = ( query?: Record, options?: Omit< UseQueryOptions< - AdminTaxRegionListResponse, + HttpTypes.AdminTaxRegionListResponse, Error, - AdminTaxRegionListResponse, + HttpTypes.AdminTaxRegionListResponse, QueryKey >, "queryFn" | "queryKey" > ) => { const { data, ...rest } = useQuery({ - queryFn: () => client.taxes.listTaxRegions(query), + queryFn: () => sdk.admin.taxRegion.list(query), queryKey: taxRegionsQueryKeys.list(query), ...options, }) @@ -63,13 +58,13 @@ export const useTaxRegions = ( export const useCreateTaxRegion = ( options?: UseMutationOptions< - AdminTaxRegionResponse, + HttpTypes.AdminTaxRegionResponse, Error, - AdminCreateTaxRegion + HttpTypes.AdminCreateTaxRegion > ) => { return useMutation({ - mutationFn: (payload) => client.taxes.createTaxRegion(payload), + mutationFn: (payload) => sdk.admin.taxRegion.create(payload), onSuccess: (data, variables, context) => { queryClient.invalidateQueries({ queryKey: taxRegionsQueryKeys.all }) options?.onSuccess?.(data, variables, context) @@ -80,10 +75,14 @@ export const useCreateTaxRegion = ( export const useDeleteTaxRegion = ( id: string, - options?: UseMutationOptions + options?: UseMutationOptions< + HttpTypes.AdminTaxRegionDeleteResponse, + Error, + void + > ) => { return useMutation({ - mutationFn: () => client.taxes.deleteTaxRegion(id), + mutationFn: () => sdk.admin.taxRegion.delete(id), onSuccess: (data, variables, context) => { queryClient.invalidateQueries({ queryKey: taxRegionsQueryKeys.lists() }) queryClient.invalidateQueries({ diff --git a/packages/admin-next/dashboard/src/lib/client/client.ts b/packages/admin-next/dashboard/src/lib/client/client.ts index 515bff2e46..2fb36f6a98 100644 --- a/packages/admin-next/dashboard/src/lib/client/client.ts +++ b/packages/admin-next/dashboard/src/lib/client/client.ts @@ -20,7 +20,6 @@ import { shippingProfiles } from "./shipping-profiles" import { stockLocations } from "./stock-locations" import { stores } from "./stores" import { tags } from "./tags" -import { taxes } from "./taxes" import { users } from "./users" import { workflowExecutions } from "./workflow-executions" @@ -40,7 +39,6 @@ export const client = { shippingProfiles: shippingProfiles, productTags: tags, users: users, - taxes: taxes, invites: invites, inventoryItems: inventoryItems, reservations: reservations, diff --git a/packages/admin-next/dashboard/src/lib/client/taxes.ts b/packages/admin-next/dashboard/src/lib/client/taxes.ts deleted file mode 100644 index 6eb9d4d7c5..0000000000 --- a/packages/admin-next/dashboard/src/lib/client/taxes.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - AdminCreateTaxRegion, - AdminPostTaxRatesTaxRateReq, -} from "@medusajs/medusa" -import { - AdminTaxRateResponse, - AdminTaxRegionListResponse, - AdminTaxRegionResponse, -} from "@medusajs/types" -import { TaxRateDeleteRes, TaxRegionDeleteRes } from "../../types/api-responses" -import { deleteRequest, getRequest, postRequest } from "./common" - -async function retrieveTaxRegion(id: string, query?: Record) { - return getRequest(`/admin/tax-regions/${id}`, query) -} - -async function listTaxRegions(query?: Record) { - return getRequest(`/admin/tax-regions`, query) -} - -async function createTaxRegion(payload: AdminCreateTaxRegion) { - return postRequest(`/admin/tax-regions`, payload) -} - -async function deleteTaxRegion(id: string) { - return deleteRequest(`/admin/tax-regions/${id}`) -} - -async function retrieveTaxRate(id: string, query?: Record) { - return getRequest(`/admin/tax-rates/${id}`, query) -} - -async function listTaxRates(query?: Record) { - return getRequest(`/admin/tax-rates`, query) -} - -async function updateTaxRate(id: string, payload: AdminPostTaxRatesTaxRateReq) { - return postRequest(`/admin/tax-rates/${id}`, payload) -} - -async function createTaxRate(payload: AdminCreateTaxRate) { - return postRequest(`/admin/tax-rates`, payload) -} - -async function deleteTaxRate(id: string) { - return deleteRequest(`/admin/tax-rates/${id}`) -} - -export const taxes = { - retrieveTaxRegion, - listTaxRegions, - retrieveTaxRate, - listTaxRates, - updateTaxRate, - createTaxRegion, - deleteTaxRegion, - createTaxRate, - deleteTaxRate, -} diff --git a/packages/admin-next/dashboard/src/routes/taxes/tax-rate-edit/loader.ts b/packages/admin-next/dashboard/src/routes/taxes/tax-rate-edit/loader.ts index b56a335c15..6cd39eb892 100644 --- a/packages/admin-next/dashboard/src/routes/taxes/tax-rate-edit/loader.ts +++ b/packages/admin-next/dashboard/src/routes/taxes/tax-rate-edit/loader.ts @@ -1,13 +1,12 @@ -import { LoaderFunctionArgs } from "react-router-dom" - import { AdminTaxRateResponse } from "@medusajs/types" +import { LoaderFunctionArgs } from "react-router-dom" import { taxRatesQueryKeys } from "../../../hooks/api/tax-rates" -import { client } from "../../../lib/client" +import { sdk } from "../../../lib/client" import { queryClient } from "../../../lib/query-client" const taxRateDetailQuery = (id: string) => ({ queryKey: taxRatesQueryKeys.detail(id), - queryFn: async () => client.taxes.retrieveTaxRate(id), + queryFn: async () => sdk.admin.taxRate.retrieve(id), }) export const taxRateLoader = async ({ params }: LoaderFunctionArgs) => { diff --git a/packages/admin-next/dashboard/src/routes/taxes/tax-region-detail/loader.ts b/packages/admin-next/dashboard/src/routes/taxes/tax-region-detail/loader.ts index a771b90c21..f9acdc3e6f 100644 --- a/packages/admin-next/dashboard/src/routes/taxes/tax-region-detail/loader.ts +++ b/packages/admin-next/dashboard/src/routes/taxes/tax-region-detail/loader.ts @@ -1,13 +1,12 @@ -import { LoaderFunctionArgs } from "react-router-dom" - import { AdminTaxRegionResponse } from "@medusajs/types" +import { LoaderFunctionArgs } from "react-router-dom" import { taxRegionsQueryKeys } from "../../../hooks/api/tax-regions" -import { client } from "../../../lib/client" +import { sdk } from "../../../lib/client" import { queryClient } from "../../../lib/query-client" const taxRegionDetailQuery = (id: string) => ({ queryKey: taxRegionsQueryKeys.detail(id), - queryFn: async () => client.taxes.retrieveTaxRegion(id), + queryFn: async () => sdk.admin.taxRegion.retrieve(id), }) export const taxRegionLoader = async ({ params }: LoaderFunctionArgs) => { diff --git a/packages/core/js-sdk/src/admin/index.ts b/packages/core/js-sdk/src/admin/index.ts index cee4d52677..1934f29297 100644 --- a/packages/core/js-sdk/src/admin/index.ts +++ b/packages/core/js-sdk/src/admin/index.ts @@ -11,6 +11,8 @@ import { SalesChannel } from "./sales-channel" import { ShippingOption } from "./shipping-option" import { ShippingProfile } from "./shipping-profile" import { StockLocation } from "./stock-location" +import { TaxRate } from "./tax-rate" +import { TaxRegion } from "./tax-region" import { Upload } from "./upload" export class Admin { @@ -27,6 +29,8 @@ export class Admin { public shippingOption: ShippingOption public shippingProfile: ShippingProfile public order: Order + public taxRate: TaxRate + public taxRegion: TaxRegion constructor(client: Client) { this.invite = new Invite(client) @@ -42,5 +46,7 @@ export class Admin { this.shippingOption = new ShippingOption(client) this.shippingProfile = new ShippingProfile(client) this.order = new Order(client) + this.taxRate = new TaxRate(client) + this.taxRegion = new TaxRegion(client) } } diff --git a/packages/core/js-sdk/src/admin/tax-rate.ts b/packages/core/js-sdk/src/admin/tax-rate.ts new file mode 100644 index 0000000000..75d26e78d1 --- /dev/null +++ b/packages/core/js-sdk/src/admin/tax-rate.ts @@ -0,0 +1,81 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +const taxRateUrl = "/admin/tax-rates" + +export class TaxRate { + private client: Client + constructor(client: Client) { + this.client = client + } + + async create( + body: HttpTypes.AdminCreateTaxRate, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch(taxRateUrl, { + method: "POST", + headers, + body, + query, + }) + } + + async update( + id: string, + body: HttpTypes.AdminUpdateTaxRate, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `${taxRateUrl}/${id}`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async delete(id: string, headers?: ClientHeaders) { + return await this.client.fetch( + `${taxRateUrl}/${id}`, + { + method: "DELETE", + headers, + } + ) + } + + async retrieve( + id: string, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `${taxRateUrl}/${id}`, + { + method: "GET", + headers, + query, + } + ) + } + + async list( + query?: HttpTypes.AdminTaxRateListParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + taxRateUrl, + { + method: "GET", + headers, + query, + } + ) + } +} diff --git a/packages/core/js-sdk/src/admin/tax-region.ts b/packages/core/js-sdk/src/admin/tax-region.ts new file mode 100644 index 0000000000..3e56d66a5b --- /dev/null +++ b/packages/core/js-sdk/src/admin/tax-region.ts @@ -0,0 +1,68 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +const taxRegionUrl = "/admin/tax-regions" + +// TODO: Add support for updating a tax region +export class TaxRegion { + private client: Client + constructor(client: Client) { + this.client = client + } + + async create( + body: HttpTypes.AdminCreateTaxRegion, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + taxRegionUrl, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async delete(id: string, headers?: ClientHeaders) { + return await this.client.fetch( + `${taxRegionUrl}/${id}`, + { + method: "DELETE", + headers, + } + ) + } + + async retrieve( + id: string, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `${taxRegionUrl}/${id}`, + { + method: "GET", + headers, + query, + } + ) + } + + async list( + query?: HttpTypes.AdminTaxRegionListParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + taxRegionUrl, + { + method: "GET", + headers, + query, + } + ) + } +} diff --git a/packages/core/types/src/http/index.ts b/packages/core/types/src/http/index.ts index 55b38cf9d3..2e35bbafea 100644 --- a/packages/core/types/src/http/index.ts +++ b/packages/core/types/src/http/index.ts @@ -22,5 +22,7 @@ export * from "./sales-channel" export * from "./shipping-option" export * from "./shipping-profile" export * from "./stock-locations" -export * from "./tax" +export * from "./tax-rate" +export * from "./tax-region" export * from "./user" + diff --git a/packages/core/types/src/http/tax-rate/admin/entities.ts b/packages/core/types/src/http/tax-rate/admin/entities.ts new file mode 100644 index 0000000000..367fa566ce --- /dev/null +++ b/packages/core/types/src/http/tax-rate/admin/entities.ts @@ -0,0 +1,23 @@ +import { AdminTaxRegion } from "../../tax-region" + +export interface AdminTaxRateRule { + reference: string + reference_id: string +} + +export interface AdminTaxRate { + id: string + rate: number | null + code: string | null + name: string + metadata: Record | null + tax_region_id: string + is_combinable: boolean + is_default: boolean + created_at: string + updated_at: string + deleted_at: null + created_by: string | null + tax_region: AdminTaxRegion + rules: AdminTaxRateRule[] +} diff --git a/packages/core/types/src/http/tax-rate/admin/index.ts b/packages/core/types/src/http/tax-rate/admin/index.ts new file mode 100644 index 0000000000..1f82a2ead5 --- /dev/null +++ b/packages/core/types/src/http/tax-rate/admin/index.ts @@ -0,0 +1,4 @@ +export * from "./entities" +export * from "./payloads" +export * from "./queries" +export * from "./responses" diff --git a/packages/core/types/src/http/tax-rate/admin/payloads.ts b/packages/core/types/src/http/tax-rate/admin/payloads.ts new file mode 100644 index 0000000000..7aa2ba61de --- /dev/null +++ b/packages/core/types/src/http/tax-rate/admin/payloads.ts @@ -0,0 +1,25 @@ +interface AdminCreateTaxRateRule { + reference: string + reference_id: string +} + +export interface AdminCreateTaxRate { + name: string + tax_region_id: string + rate?: number + code?: string + rules?: AdminCreateTaxRateRule[] + is_default?: boolean + is_combinable?: boolean + metadata?: Record +} + +export interface AdminUpdateTaxRate { + name?: string + rate?: number + code?: string + rules?: AdminCreateTaxRateRule[] + is_default?: boolean + is_combinable?: boolean + metadata?: Record +} diff --git a/packages/core/types/src/http/tax-rate/admin/queries.ts b/packages/core/types/src/http/tax-rate/admin/queries.ts new file mode 100644 index 0000000000..33999c31bc --- /dev/null +++ b/packages/core/types/src/http/tax-rate/admin/queries.ts @@ -0,0 +1,16 @@ +import { OperatorMap } from "../../../dal" +import { FindParams } from "../../common" + +export interface AdminTaxRateListParams extends FindParams { + id?: string | string[] + q?: string + tax_region_id?: string | string[] | OperatorMap + is_default?: string + service_zone_id?: string + shipping_profile_id?: string + provider_id?: string + shipping_option_type_id?: string + created_at?: string | OperatorMap + updated_at?: string | OperatorMap + deleted_at?: string | OperatorMap +} diff --git a/packages/core/types/src/http/tax-rate/admin/responses.ts b/packages/core/types/src/http/tax-rate/admin/responses.ts new file mode 100644 index 0000000000..0e0e7b917d --- /dev/null +++ b/packages/core/types/src/http/tax-rate/admin/responses.ts @@ -0,0 +1,13 @@ +import { DeleteResponse, PaginatedResponse } from "../../common" +import { AdminTaxRate } from "./entities" + +export interface AdminTaxRateResponse { + tax_rate: AdminTaxRate +} + +export type AdminTaxRateListResponse = PaginatedResponse<{ + tax_rates: AdminTaxRate[] +}> + +export interface AdminTaxRateDeleteResponse + extends DeleteResponse<"tax_rate"> {} diff --git a/packages/core/types/src/http/tax/index.ts b/packages/core/types/src/http/tax-rate/index.ts similarity index 100% rename from packages/core/types/src/http/tax/index.ts rename to packages/core/types/src/http/tax-rate/index.ts diff --git a/packages/core/types/src/http/tax-region/admin/entities.ts b/packages/core/types/src/http/tax-region/admin/entities.ts new file mode 100644 index 0000000000..84ba95fde5 --- /dev/null +++ b/packages/core/types/src/http/tax-region/admin/entities.ts @@ -0,0 +1,21 @@ +import { AdminTaxRate } from "../../tax-rate" + +export interface AdminTaxRegion { + id: string + rate: number | null + code: string | null + country_code: string | null + province_code: string | null + name: string + metadata: Record | null + tax_region_id: string + is_combinable: boolean + is_default: boolean + parent_id: string | null + created_at: string + updated_at: string + deleted_at: string | null + created_by: string | null + tax_rates: AdminTaxRate[] + parent: AdminTaxRegion +} diff --git a/packages/core/types/src/http/tax-region/admin/index.ts b/packages/core/types/src/http/tax-region/admin/index.ts new file mode 100644 index 0000000000..1f82a2ead5 --- /dev/null +++ b/packages/core/types/src/http/tax-region/admin/index.ts @@ -0,0 +1,4 @@ +export * from "./entities" +export * from "./payloads" +export * from "./queries" +export * from "./responses" diff --git a/packages/core/types/src/http/tax-region/admin/payloads.ts b/packages/core/types/src/http/tax-region/admin/payloads.ts new file mode 100644 index 0000000000..820ce1c77e --- /dev/null +++ b/packages/core/types/src/http/tax-region/admin/payloads.ts @@ -0,0 +1,13 @@ +export interface AdminCreateTaxRegion { + country_code: string + province_code?: string + parent_id?: string + default_tax_rate?: { + rate?: number + code?: string + name: string + is_combinable?: boolean + metadata?: Record + } + metadata?: Record +} diff --git a/packages/core/types/src/http/tax-region/admin/queries.ts b/packages/core/types/src/http/tax-region/admin/queries.ts new file mode 100644 index 0000000000..9cad0b807d --- /dev/null +++ b/packages/core/types/src/http/tax-region/admin/queries.ts @@ -0,0 +1,14 @@ +import { OperatorMap } from "../../../dal" +import { FindParams } from "../../common" + +export interface AdminTaxRegionListParams extends FindParams { + id?: string | string[] + q?: string + parent_id?: string | string[] | OperatorMap + country_code?: string | string[] | OperatorMap + province_code?: string | string[] | OperatorMap + created_at?: string | OperatorMap + updated_at?: string | OperatorMap + deleted_at?: string | OperatorMap + created_by?: string | OperatorMap +} diff --git a/packages/core/types/src/http/tax-region/admin/responses.ts b/packages/core/types/src/http/tax-region/admin/responses.ts new file mode 100644 index 0000000000..bc83add8da --- /dev/null +++ b/packages/core/types/src/http/tax-region/admin/responses.ts @@ -0,0 +1,13 @@ +import { DeleteResponse, PaginatedResponse } from "../../common" +import { AdminTaxRegion } from "./entities" + +export interface AdminTaxRegionResponse { + tax_region: AdminTaxRegion +} + +export type AdminTaxRegionListResponse = PaginatedResponse<{ + tax_regions: AdminTaxRegion[] +}> + +export interface AdminTaxRegionDeleteResponse + extends DeleteResponse<"tax_region"> {} diff --git a/packages/core/types/src/http/tax-region/index.ts b/packages/core/types/src/http/tax-region/index.ts new file mode 100644 index 0000000000..26b8eb9dad --- /dev/null +++ b/packages/core/types/src/http/tax-region/index.ts @@ -0,0 +1 @@ +export * from "./admin" diff --git a/packages/core/types/src/http/tax/admin/index.ts b/packages/core/types/src/http/tax/admin/index.ts deleted file mode 100644 index a0d80a2f66..0000000000 --- a/packages/core/types/src/http/tax/admin/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./tax-rates" -export * from "./tax-regions" diff --git a/packages/core/types/src/http/tax/admin/tax-rates.ts b/packages/core/types/src/http/tax/admin/tax-rates.ts deleted file mode 100644 index 57bcc25e56..0000000000 --- a/packages/core/types/src/http/tax/admin/tax-rates.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { PaginatedResponse } from "../../common" -import { TaxRegionResponse } from "./tax-regions" - -export interface TaxRateResponse { - id: string - rate: number | null - code: string | null - name: string - metadata: Record | null - tax_region_id: string - is_combinable: boolean - is_default: boolean - created_at: string | Date - updated_at: string | Date - deleted_at: Date | null - created_by: string | null - tax_region: TaxRegionResponse - rules: { - reference: string - reference_id: string - }[] -} - -export interface AdminTaxRateResponse { - tax_rate: TaxRateResponse -} - -export type AdminTaxRateListResponse = PaginatedResponse<{ - tax_rates: TaxRateResponse[] -}> diff --git a/packages/core/types/src/http/tax/admin/tax-regions.ts b/packages/core/types/src/http/tax/admin/tax-regions.ts deleted file mode 100644 index d93d4b8987..0000000000 --- a/packages/core/types/src/http/tax/admin/tax-regions.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PaginatedResponse } from "../../common" -import { TaxRateResponse } from "./tax-rates" - -export interface TaxRegionResponse { - id: string - rate: number | null - code: string | null - country_code: string | null - province_code: string | null - name: string - metadata: Record | null - tax_region_id: string - is_combinable: boolean - is_default: boolean - parent_id: string | null - created_at: string | Date - updated_at: string | Date - deleted_at: Date | null - created_by: string | null - - tax_rates: TaxRateResponse[] - - parent: TaxRegionResponse -} - -export interface AdminTaxRegionResponse { - tax_region: TaxRegionResponse -} - -export type AdminTaxRegionListResponse = PaginatedResponse<{ - tax_regions: TaxRegionResponse[] -}>