diff --git a/workloads/commerce-backend/medusa-config.ts b/workloads/commerce-backend/medusa-config.ts index ee68289..f6863e7 100644 --- a/workloads/commerce-backend/medusa-config.ts +++ b/workloads/commerce-backend/medusa-config.ts @@ -47,7 +47,10 @@ async function meilisearchProductTransformer( inventory_quantity?: number | null manage_inventory?: boolean | null allow_backorder?: boolean | null - calculated_price?: { calculated_amount?: number | null } | null + prices?: Array<{ + amount?: number | null + currency_code?: string | null + }> | null }> | null | undefined @@ -63,6 +66,18 @@ async function meilisearchProductTransformer( variant.manage_inventory === false || (variant.inventory_quantity ?? 0) > 0 + // variants.calculated_price requiere currency_code/region_id en el + // contexto de pricing, que el workflow de sync interno del plugin no + // provee -- hace fallar TODO el job de indexado (confirmado en vivo: + // "Method calculatePrices requires currency_code in the pricing + // context"). variants.prices es la lista cruda de precios (sin + // resolver promociones/reglas), no necesita contexto -- alcanza para + // el filtro/orden por precio en la busqueda, que no necesita el + // precio final promocional. + const copPrice = variant?.prices?.find( + (price) => price.currency_code?.toLowerCase() === "cop", + ) + return { id: document.id, name: document.title || "Producto ARI Shopping", @@ -73,10 +88,7 @@ async function meilisearchProductTransformer( brand: stringMetadata(metadata, "brand") || "ARI Shopping", ageRange: stringMetadata(metadata, "ageRange") || "Todas", tags: (tags || []).map((tag) => tag.value).filter(Boolean), - price: - typeof variant?.calculated_price?.calculated_amount === "number" - ? variant.calculated_price.calculated_amount - : null, + price: typeof copPrice?.amount === "number" ? copPrice.amount : null, available, isNew: booleanMetadata(metadata, "isNew"), featured: booleanMetadata(metadata, "featured"), @@ -184,7 +196,8 @@ module.exports = defineConfig({ "variants.inventory_quantity", "variants.manage_inventory", "variants.allow_backorder", - "variants.calculated_price.calculated_amount", + "variants.prices.amount", + "variants.prices.currency_code", ], indexSettings: { // Tabla de ADR 0006 ยง3: Buscable / Filtrable-faceta / Ordenable.