Files
mercadodevida/work/artifacts/POS-FIX-9/implementer.md

1.7 KiB
Raw Permalink Blame History

POS-FIX-9: Implementer Evidence

Problema

  1. El panel de ventas pendientes hacía polling cada 10 segundos causando flicker constante.
  2. Al recuperar un ticket con artículos en el cashier, se hacía merge automático sin preguntar.

Cambios realizados

Frontend

project/apps/pos/src/app/(terminal)/page.tsx

  • Eliminado polling de 10s — solo refresh manual via botón
  • Nueva función doRecoverSale(sale) — recuperación real (reutilizada por parkAndRecover y merge)
  • Nueva función parkAndRecover() — aparca ticket actual y recupera venta seleccionada
  • Nueva función mergeRecoveredItems() — añade items recuperados al ticket actual
  • Modificada recoverSale(sale) — si cart tiene items, abre merge dialog en vez de auto-merge
  • Nuevo estado mergePendingSale — almacena la venta a recuperar para el diálogo
  • Diálogo de merge con 3 opciones:
    • 💾 "Dejar actual pendiente y recuperar" — parkAndRecover()
    • "Añadir al ticket actual" — mergeRecoveredItems()
    • "Cancelar" — cierra diálogo sin acción

Bug corregido

Los botones del diálogo no funcionaban porque recoverSale() seteaba recoveringSaleId al abrir el diálogo, lo que habilitaba disabled={recoveringSaleId !== null} en los botones del diálogo.

  • Fix: ya no se setea recoveringSaleId al abrir el diálogo (solo se setea durante la carga real)
  • Fix: los handlers de los botones ahora usan .catch() para mostrar errores

Verificación

  • TypeScript compila sin errores
  • Polling 10s eliminado del panel de ventas pendientes
  • Diálogo de merge visible al recuperar con cart items
  • Tres opciones funcionando correctamente
  • Botones no deshabilitados al abrir diálogo