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
@@ -1,2 +1,3 @@
export * from "./create-tax-regions"
export * from "./create-tax-rates"
export * from "./update-tax-rates"
@@ -0,0 +1,47 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import {
FilterableTaxRateProps,
ITaxModuleService,
UpdateTaxRateDTO,
} from "@medusajs/types"
import { getSelectsAndRelationsFromObjectArray } from "@medusajs/utils"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
type UpdateTaxRatesStepInput = {
selector: FilterableTaxRateProps
update: UpdateTaxRateDTO
}
export const updateTaxRatesStepId = "update-tax-rates"
export const updateTaxRatesStep = createStep(
updateTaxRatesStepId,
async (data: UpdateTaxRatesStepInput, { container }) => {
const service = container.resolve<ITaxModuleService>(
ModuleRegistrationName.TAX
)
const { selects, relations } = getSelectsAndRelationsFromObjectArray([
data.update,
])
const prevData = await service.list(data.selector, {
select: selects,
relations,
})
const taxRates = await service.update(data.selector, data.update)
return new StepResponse(taxRates, prevData)
},
async (prevData, { container }) => {
if (!prevData?.length) {
return
}
const service = container.resolve<ITaxModuleService>(
ModuleRegistrationName.TAX
)
await service.upsert(prevData)
}
)
@@ -1,2 +1,3 @@
export * from "./create-tax-regions"
export * from "./create-tax-rates"
export * from "./update-tax-rates"
@@ -0,0 +1,22 @@
import {
FilterableTaxRateProps,
TaxRateDTO,
UpdateTaxRateDTO,
} from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { updateTaxRatesStep } from "../steps"
type UpdateTaxRatesStepInput = {
selector: FilterableTaxRateProps
update: UpdateTaxRateDTO
}
type WorkflowInput = UpdateTaxRatesStepInput
export const updateTaxRatesWorkflowId = "update-tax-rates"
export const updateTaxRatesWorkflow = createWorkflow(
updateTaxRatesWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<TaxRateDTO[]> => {
return updateTaxRatesStep(input)
}
)