feat(core-flows,types,medusa): Add tax region update API (#9634)
* feat(core-flows,types,medusa): Add tax region update API * chore: added specs
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import {
|
||||
ITaxModuleService,
|
||||
UpdateTaxRegionDTO,
|
||||
} from "@medusajs/framework/types"
|
||||
import {
|
||||
Modules,
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
removeUndefined,
|
||||
} from "@medusajs/framework/utils"
|
||||
import { StepResponse, createStep } from "@medusajs/framework/workflows-sdk"
|
||||
|
||||
export const updateTaxRegionsStepId = "update-tax-regions"
|
||||
/**
|
||||
* This step updates tax regions
|
||||
*/
|
||||
export const updateTaxRegionsStep = createStep(
|
||||
updateTaxRegionsStepId,
|
||||
async (data: UpdateTaxRegionDTO[], { container }) => {
|
||||
const service = container.resolve<ITaxModuleService>(Modules.TAX)
|
||||
const { selects, relations } = getSelectsAndRelationsFromObjectArray(data)
|
||||
|
||||
const prevData = await service.listTaxRegions(
|
||||
{ id: data.map((d) => d.id) },
|
||||
{
|
||||
select: selects,
|
||||
relations,
|
||||
}
|
||||
)
|
||||
|
||||
const updateData = removeUndefined(
|
||||
data.map((d) => ({
|
||||
id: d.id,
|
||||
province_code: d.province_code,
|
||||
metadata: d.metadata,
|
||||
}))
|
||||
)
|
||||
|
||||
const taxRegions = await service.updateTaxRegions(updateData)
|
||||
|
||||
return new StepResponse(taxRegions, prevData)
|
||||
},
|
||||
async (prevData, { container }) => {
|
||||
if (!prevData?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const service = container.resolve<ITaxModuleService>(Modules.TAX)
|
||||
const updateData = removeUndefined(
|
||||
prevData.map((d) => ({
|
||||
id: d.id,
|
||||
province_code: d.province_code,
|
||||
metadata: d.metadata,
|
||||
}))
|
||||
)
|
||||
|
||||
await service.updateTaxRegions(updateData)
|
||||
}
|
||||
)
|
||||
@@ -1,8 +1,9 @@
|
||||
export * from "./create-tax-regions"
|
||||
export * from "./delete-tax-regions"
|
||||
export * from "./create-tax-rates"
|
||||
export * from "./update-tax-rates"
|
||||
export * from "./delete-tax-rates"
|
||||
export * from "./set-tax-rate-rules"
|
||||
export * from "./create-tax-rate-rules"
|
||||
export * from "./create-tax-rates"
|
||||
export * from "./create-tax-regions"
|
||||
export * from "./delete-tax-rate-rules"
|
||||
export * from "./delete-tax-rates"
|
||||
export * from "./delete-tax-regions"
|
||||
export * from "./set-tax-rate-rules"
|
||||
export * from "./update-tax-rates"
|
||||
export * from "./update-tax-regions"
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { TaxRegionDTO, UpdateTaxRegionDTO } from "@medusajs/framework/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createWorkflow,
|
||||
} from "@medusajs/framework/workflows-sdk"
|
||||
import { updateTaxRegionsStep } from "../steps/update-tax-regions"
|
||||
|
||||
export const updateTaxRegionsWorkflowId = "update-tax-regions"
|
||||
/**
|
||||
* This workflow updates one or more tax regions.
|
||||
*/
|
||||
export const updateTaxRegionsWorkflow = createWorkflow(
|
||||
updateTaxRegionsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<UpdateTaxRegionDTO[]>
|
||||
): WorkflowResponse<TaxRegionDTO[]> => {
|
||||
return new WorkflowResponse(updateTaxRegionsStep(input))
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user