← Volver al catálogo

📦 Tracking de pedido en tiempo real

Archivos: rifkings-control-center/src/app/shopify/[orderId]/{page.tsx,TrackingLive.tsx,AutoRefresh.tsx}, src/app/api/shopify/orders/[id]/tracking/route.ts, src/lib/shopify.ts (trackOneGLS) · Estado: ✅ funcionando

Qué hace

En la página de un pedido (Pedidos + Envíos → abrir pedido), el estado del envío se muestra EN VIVO consultando GLS real, y se actualiza solo sin recargar ni salir de la app.

Cómo funciona

1. trackOneGLS(number) en shopify.ts llama por SOAP al endpoint Tracking de ASMRed (GLS) y devuelve {status, label, lastEvent} con los eventos reales de la agencia.

2. La ruta /api/shopify/orders/[id]/tracking saca el tracking_number del pedido (Shopify) y consulta GLS en vivo.

3. TrackingLive.tsx (cliente) hace polling a esa ruta cada 20s y pinta el estado + último evento + indicador "EN VIVO".

4. AutoRefresh.tsx refresca los datos del pedido (pago, fulfillment) cada 30s vía router.refresh().

Datos/APIs

Shopify Admin API (pedido + fulfillments) + GLS ASMRed (GLS_GUID, GLS_WSDL).

Cómo probarlo

curl -s "http://localhost:3000/api/shopify/orders/<ORDER_ID>/tracking"

Debe devolver gls: {status,label,lastEvent} si el pedido tiene número de seguimiento.

Si se rompe / recuperar

  • Si no aparece estado: el pedido no tiene tracking_number (envío sin tracking) — el componente lo indica.
  • GLS lento/caído: el polling reintenta solo en el próximo ciclo.

Cómo replicarlo

Exponer trackOneGLS → ruta API que une Shopify+GLS → componente cliente con setInterval que hace fetch a la ruta. Misma idea sirve para cualquier transportista con API de tracking.