1.9 KiB
1.9 KiB
POS-FIX-8: Implementer Evidence
Problema
Las ventas pendientes solo tenían un botón "Cobrar resto". No había forma de:
- Recuperar la venta para seguir agregando artículos
- Eliminar la venta pendiente sin cobrarla
Cambios realizados
Backend
project/src/modules/pos/api/pos.routes.ts
- Nuevo endpoint
DELETE /pos/sales/:idpara eliminar ventas pendientes - Valida que la venta esté en estado PENDING
- Valida que no tenga pagos registrados
- Restaura el inventory para cada línea de producto (disponible + cantidad)
- Registra movimiento de inventory con operación 'cancel'
- Marca la orden como CANCELLED en la base de datos
Frontend
project/apps/pos/src/types/checkout.ts
- Añadido tipo
RecoveredOrderItempara los items devueltos por/pos/sales/:id/items
project/apps/pos/src/lib/api-client.ts
- Añadido
deleteSale(orderId)→ DELETE/pos/sales/:id - Re-ordenado
listOrderItemspara曝光 explícito
project/apps/pos/src/app/(terminal)/page.tsx
- Nuevo estado:
deleteConfirmFor(venta a eliminar),recoveringSaleId(venta siendo recuperada) - Nueva función
recoverSale(sale):- Carga items via
listOrderItems - Filtra items no-free y no-returned
- Añade al carrito actual (merge si hay items existentes)
- Refresca panel de pendientes
- Carga items via
- Nueva función
deleteSale(sale):- Llama
deleteSaleAPI - Cierra diálogo de confirmación
- Refresca panel de pendientes
- Llama
- UI de ventas pendientes actualizada:
- "Recuperar" (verde): carga venta en ticket
- "🗑" (rojo): abre diálogo de confirmación
- Diálogo de confirmación de eliminación con warn de que liberará stock
Verificación
- TypeScript backend compila sin errores
- TypeScript frontend compila sin errores
- Botón "Recuperar" visible en cada venta pendiente
- Botón "🗑" abre diálogo de confirmación
- Eliminación de venta pendiente restaura inventory