fix(product, types, workflows): Update product variant workflow (#5668)
**What** - Fix issues with update-variant workflow: - other variants than the updated variant are no longer removed - options are updated properly Co-authored-by: Riqwan Thamir <5105988+riqwan@users.noreply.github.com>
This commit is contained in:
co-authored by
Riqwan Thamir
parent
b25b29fe7b
commit
a39ce125cc
@@ -1,5 +1,5 @@
|
||||
import { Modules, ModulesDefinition } from "@medusajs/modules-sdk"
|
||||
import { ProductTypes } from "@medusajs/types"
|
||||
import { ProductTypes, UpdateProductVariantOnlyDTO } from "@medusajs/types"
|
||||
import { WorkflowArguments } from "../../helper"
|
||||
|
||||
type HandlerInput = {
|
||||
@@ -14,21 +14,22 @@ export async function updateProductVariants({
|
||||
> {
|
||||
const { productVariantsMap } = data
|
||||
const productsVariants: ProductTypes.UpdateProductVariantDTO[] = []
|
||||
const updateProductsData: ProductTypes.UpdateProductDTO[] = []
|
||||
const updateVariantsData: ProductTypes.UpdateProductVariantOnlyDTO[] = []
|
||||
const productModuleService: ProductTypes.IProductModuleService =
|
||||
container.resolve(ModulesDefinition[Modules.PRODUCT].registrationName)
|
||||
|
||||
for (const [productId, variantsData = []] of productVariantsMap) {
|
||||
updateProductsData.push({
|
||||
id: productId,
|
||||
variants: variantsData,
|
||||
})
|
||||
for (const [product_id, variantsUpdateData = []] of productVariantsMap) {
|
||||
updateVariantsData.push(
|
||||
...(variantsUpdateData as unknown as UpdateProductVariantOnlyDTO[]).map(
|
||||
(update) => ({ ...update, product_id })
|
||||
)
|
||||
)
|
||||
|
||||
productsVariants.push(...variantsData)
|
||||
productsVariants.push(...variantsUpdateData)
|
||||
}
|
||||
|
||||
if (updateProductsData.length) {
|
||||
await productModuleService.update(updateProductsData)
|
||||
if (updateVariantsData.length) {
|
||||
await productModuleService.updateVariants(updateVariantsData)
|
||||
}
|
||||
|
||||
return productsVariants
|
||||
|
||||
Reference in New Issue
Block a user