1.7 KiB
1.7 KiB
POS-FIX-9: Implementer Evidence
Problema
- El panel de ventas pendientes hacía polling cada 10 segundos causando flicker constante.
- 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
recoveringSaleIdal 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