feat(tax): add support for updating tax rates (#6537)

This commit is contained in:
Sebastian Rindom
2024-02-29 11:03:18 +00:00
committed by GitHub
parent 2407b443f1
commit 6279fb3c67
11 changed files with 262 additions and 1 deletions
@@ -5,6 +5,37 @@ import {
import { defaultAdminTaxRateFields } from "../query-config"
import { remoteQueryObjectFromString } from "@medusajs/utils"
import { AdminPostTaxRatesTaxRateReq } from "../../../../api/routes/admin/tax-rates"
import { updateTaxRatesWorkflow } from "@medusajs/core-flows"
export const POST = async (
req: AuthenticatedMedusaRequest<AdminPostTaxRatesTaxRateReq>,
res: MedusaResponse
) => {
const { errors } = await updateTaxRatesWorkflow(req.scope).run({
input: {
selector: { id: req.params.id },
update: req.validatedBody,
},
throwOnError: false,
})
if (Array.isArray(errors) && errors[0]) {
throw errors[0].error
}
const remoteQuery = req.scope.resolve("remoteQuery")
const queryObject = remoteQueryObjectFromString({
entryPoint: "tax_rate",
variables: { id: req.params.id },
fields: defaultAdminTaxRateFields,
})
const [taxRate] = await remoteQuery(queryObject)
res.status(200).json({ tax_rate: taxRate })
}
export const GET = async (
req: AuthenticatedMedusaRequest,
@@ -3,6 +3,7 @@ import * as QueryConfig from "./query-config"
import {
AdminGetTaxRatesTaxRateParams,
AdminPostTaxRatesReq,
AdminPostTaxRatesTaxRateReq,
} from "./validators"
import { transformBody, transformQuery } from "../../../api/middlewares"
@@ -20,6 +21,11 @@ export const adminTaxRateRoutesMiddlewares: MiddlewareRoute[] = [
matcher: "/admin/tax-rates",
middlewares: [transformBody(AdminPostTaxRatesReq)],
},
{
method: "POST",
matcher: "/admin/tax-rates/:id",
middlewares: [transformBody(AdminPostTaxRatesTaxRateReq)],
},
{
method: "GET",
matcher: "/admin/tax-rates/:id",
@@ -1,4 +1,3 @@
// HEAD
import { Type } from "class-transformer"
import {
IsBoolean,
@@ -52,3 +51,29 @@ export class AdminPostTaxRatesReq {
@IsOptional()
metadata?: Record<string, unknown>
}
export class AdminPostTaxRatesTaxRateReq {
@IsOptional()
@IsNumber()
rate?: number | null
@IsOptional()
@IsString()
code?: string | null
@IsString()
@IsOptional()
name?: string
@IsBoolean()
@IsOptional()
is_default?: boolean
@IsBoolean()
@IsOptional()
is_combinable?: boolean
@IsObject()
@IsOptional()
metadata?: Record<string, unknown>
}