Mercadona tiene un bug de presentación en sus tickets?

Ticket de Mercadona

El otro día, al salir del supermercado, me fijé en que el ticket tenía algo raro. Había dos líneas para el mismo producto y en una tenía 2 unidades y en la otra 1 unidad. Aparentemente parecía un bug de presentación ya que los datos eran correctos. Pero como soy curioso quería saber qué había pasado exactamente, así que le pregunté a Claude y esto es lo que me dijo. 👇

Análisis del bug con Claude Code

Lo primero: las cuentas cuadran (2,99 al 21% y 2,25 al 10%), así que es un bug de presentación/agrupación, no de importes.

Las causas más probables, ordenadas por probabilidad:

1. La agrupación solo mira la última línea, no todo el carrito. Es el clásico: al insertar un artículo se hace if (ultimaLinea.codigo == nuevo.codigo) ultimaLinea.cantidad++ en vez de buscar en toda la lista. Basta con que entre medias pasara algo que rompiera la adyacencia —un artículo escaneado y luego anulado, una línea cancelada que no se imprime— para que la tercera lata abriera línea nueva. Encaja con que las dos líneas salgan juntas en el ticket: el render respeta el orden de inserción y la línea intermedia desapareció.

2. Dos caminos distintos de creación de línea. Multiplicador manual (tecla «x2» + escaneo) vs. escaneo suelto. Si el modelo distingue LineaConCantidad de LineaSimple, o marca un flag tipo cantidadIntroducidaManualmente, la clave de agrupación deja de ser solo el código de artículo y ya no fusionan.

3. Mismo texto, distinto EAN. La descripción del ticket va truncada a ~20 caracteres. Podrían ser dos referencias distintas (lote, formato, proveedor) que comparten descripción y PVP pero tienen código diferente. Aquí la agrupación funcionaría correctamente: agrupa por código, no por nombre, y son códigos distintos.

Para distinguir entre 1/2 y 3, mira el ticket digital en la app: si ahí aparecen con EAN distinto, no hay bug, hay dos referencias. Si el EAN es el mismo, es agrupación defectuosa en el TPV.

Y esta es una de las cosas que me molan de mi trabajo. Analizar y pensar en problemas de negocio, entender por qué pasan y cuáles pueden ser las posibles soluciones. En Spalopia me enfrento a este tipo de problemas a diario por lo que suele ser bastante entretenido.