diff --git a/workloads/commerce-backend/src/api/store/search/route.ts b/workloads/commerce-backend/src/api/store/search/route.ts index 1c94975..67e9f55 100644 --- a/workloads/commerce-backend/src/api/store/search/route.ts +++ b/workloads/commerce-backend/src/api/store/search/route.ts @@ -149,13 +149,36 @@ export async function GET(req: MedusaRequest, res: MedusaResponse) { return; } + // calculatePrices exige currency_code en el contexto -- no alcanza con + // region_id solo (a diferencia de /store/products nativo, que lo + // resuelve el middleware setPricingContext; esta ruta no pasa por esa + // cadena). Resolvemos la moneda real de la region en vez de asumir COP + // fijo, por si el catalogo suma otra region/moneda mas adelante. + let currencyCode: string | undefined; + if (regionId) { + const { data: regions = [] } = await query.graph({ + entity: "region", + fields: ["id", "currency_code"], + filters: { id: regionId }, + }); + currencyCode = regions[0]?.currency_code; + } + const { data: products = [] } = await query.graph({ entity: "product", fields: PRODUCT_FIELDS, filters: { id: productIds }, - context: regionId - ? { variants: { calculated_price: QueryContext({ region_id: regionId }) } } - : {}, + context: + regionId && currencyCode + ? { + variants: { + calculated_price: QueryContext({ + region_id: regionId, + currency_code: currencyCode, + }), + }, + } + : {}, }); // Preserva el ranking de relevancia de Meilisearch -- query.graph no