From 2056e6c766059e03287cfb808d93fa6305a05d65 Mon Sep 17 00:00:00 2001 From: Cristian Felipe Cruz Buitron Date: Wed, 26 Aug 2026 16:52:04 -0500 Subject: [PATCH] Fase 2 fix: /store/search resuelve currency_code, no solo region_id Confirmado en vivo: pasar solo region_id a QueryContext no alcanza -- "Method calculatePrices requires currency_code in the pricing context" persistia. A diferencia de /store/products nativo (resuelto por el middleware setPricingContext), esta ruta propia no pasa por esa cadena, asi que resuelve la moneda real de la region con un query.graph adicional antes de pedir calculated_price -- no asume COP fijo por si el catalogo suma otra region/moneda despues. --- .../src/api/store/search/route.ts | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) 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