Feat: Add tax inclusivity to admin (#8003)
* feat: Add price preference to sdk * feat: Plug tax inclusivity settings for region in UI * feat: Add price inclusivity indicator to variant and shipping price table columns * fix: Rename price title to correct variable name * feat: Add support for tax inclusive crud on region * fix: Use the region endpoint for updating tax inclusivity * chore: Factor out price columns from hooks
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
import { WorkflowTypes } from "@medusajs/types"
|
||||
import { CreateRegionDTO, WorkflowTypes } from "@medusajs/types"
|
||||
import {
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
WorkflowData,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { createRegionsStep } from "../steps"
|
||||
import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers"
|
||||
import { createPricePreferencesWorkflow } from "../../pricing"
|
||||
|
||||
export const createRegionsWorkflowId = "create-regions"
|
||||
export const createRegionsWorkflow = createWorkflow(
|
||||
@@ -14,18 +16,22 @@ export const createRegionsWorkflow = createWorkflow(
|
||||
input: WorkflowData<WorkflowTypes.RegionWorkflow.CreateRegionsWorkflowInput>
|
||||
): WorkflowData<WorkflowTypes.RegionWorkflow.CreateRegionsWorkflowOutput> => {
|
||||
const data = transform(input, (data) => {
|
||||
const regionIndexToPaymentProviders = data.regions.map(
|
||||
(region, index) => {
|
||||
return {
|
||||
region_index: index,
|
||||
payment_providers: region.payment_providers,
|
||||
}
|
||||
const regionIndexToAdditionalData = data.regions.map((region, index) => {
|
||||
return {
|
||||
region_index: index,
|
||||
payment_providers: region.payment_providers,
|
||||
is_tax_inclusive: region.is_tax_inclusive,
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
return {
|
||||
regions: data.regions,
|
||||
regionIndexToPaymentProviders,
|
||||
regions: data.regions.map((r) => {
|
||||
const resp = { ...r }
|
||||
delete resp.is_tax_inclusive
|
||||
delete resp.payment_providers
|
||||
return resp
|
||||
}),
|
||||
regionIndexToAdditionalData,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -33,11 +39,11 @@ export const createRegionsWorkflow = createWorkflow(
|
||||
|
||||
const normalizedRegionProviderData = transform(
|
||||
{
|
||||
regionIndexToPaymentProviders: data.regionIndexToPaymentProviders,
|
||||
regionIndexToAdditionalData: data.regionIndexToAdditionalData,
|
||||
regions,
|
||||
},
|
||||
(data) => {
|
||||
return data.regionIndexToPaymentProviders.map(
|
||||
return data.regionIndexToAdditionalData.map(
|
||||
({ region_index, payment_providers }) => {
|
||||
return {
|
||||
id: data.regions[region_index].id,
|
||||
@@ -48,9 +54,32 @@ export const createRegionsWorkflow = createWorkflow(
|
||||
}
|
||||
)
|
||||
|
||||
setRegionsPaymentProvidersStep({
|
||||
input: normalizedRegionProviderData,
|
||||
})
|
||||
const normalizedRegionPricePreferencesData = transform(
|
||||
{
|
||||
regionIndexToAdditionalData: data.regionIndexToAdditionalData,
|
||||
regions,
|
||||
},
|
||||
(data) => {
|
||||
return data.regionIndexToAdditionalData.map(
|
||||
({ region_index, is_tax_inclusive }) => {
|
||||
return {
|
||||
attribute: "region_id",
|
||||
value: data.regions[region_index].id,
|
||||
is_tax_inclusive,
|
||||
} as WorkflowTypes.PricingWorkflow.CreatePricePreferencesWorkflowInput
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
parallelize(
|
||||
setRegionsPaymentProvidersStep({
|
||||
input: normalizedRegionProviderData,
|
||||
}),
|
||||
createPricePreferencesWorkflow.runAsStep({
|
||||
input: normalizedRegionPricePreferencesData,
|
||||
})
|
||||
)
|
||||
|
||||
return regions
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import { WorkflowTypes } from "@medusajs/types"
|
||||
import {
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
when,
|
||||
WorkflowData,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { updateRegionsStep } from "../steps"
|
||||
import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers"
|
||||
import { updatePricePreferencesWorkflow } from "../../pricing"
|
||||
|
||||
export const updateRegionsWorkflowId = "update-regions"
|
||||
export const updateRegionsWorkflow = createWorkflow(
|
||||
@@ -13,30 +16,58 @@ export const updateRegionsWorkflow = createWorkflow(
|
||||
(
|
||||
input: WorkflowData<WorkflowTypes.RegionWorkflow.UpdateRegionsWorkflowInput>
|
||||
): WorkflowData<WorkflowTypes.RegionWorkflow.UpdateRegionsWorkflowOutput> => {
|
||||
const data = transform(input, (data) => {
|
||||
const normalizedInput = transform(input, (data) => {
|
||||
const { selector, update } = data
|
||||
const { payment_providers = [], ...rest } = update
|
||||
const { payment_providers = [], is_tax_inclusive, ...rest } = update
|
||||
return {
|
||||
selector,
|
||||
update: rest,
|
||||
payment_providers,
|
||||
is_tax_inclusive,
|
||||
}
|
||||
})
|
||||
|
||||
const regions = updateRegionsStep(data)
|
||||
const regions = updateRegionsStep(normalizedInput)
|
||||
|
||||
const upsertProvidersNormalizedInput = transform(
|
||||
{ data, regions },
|
||||
{ normalizedInput, regions },
|
||||
(data) => {
|
||||
return data.regions.map((region) => {
|
||||
return {
|
||||
id: region.id,
|
||||
payment_providers: data.data.payment_providers,
|
||||
payment_providers: data.normalizedInput.payment_providers,
|
||||
}
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
when({ normalizedInput }, (data) => {
|
||||
return data.normalizedInput.is_tax_inclusive !== undefined
|
||||
}).then(() => {
|
||||
const updatePricePreferencesInput = transform(
|
||||
{ normalizedInput, regions },
|
||||
(data) => {
|
||||
return {
|
||||
selector: {
|
||||
$or: data.regions.map((region) => {
|
||||
return {
|
||||
attribute: "region_id",
|
||||
value: region.id,
|
||||
}
|
||||
}),
|
||||
},
|
||||
update: {
|
||||
is_tax_inclusive: data.normalizedInput.is_tax_inclusive,
|
||||
},
|
||||
} as WorkflowTypes.PricingWorkflow.UpdatePricePreferencesWorkflowInput
|
||||
}
|
||||
)
|
||||
|
||||
updatePricePreferencesWorkflow.runAsStep({
|
||||
input: updatePricePreferencesInput,
|
||||
})
|
||||
})
|
||||
|
||||
setRegionsPaymentProvidersStep({
|
||||
input: upsertProvidersNormalizedInput,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user