# POS-FIX-8: Implementer Evidence ## Problema Las ventas pendientes solo tenían un botón "Cobrar resto". No había forma de: 1. Recuperar la venta para seguir agregando artículos 2. Eliminar la venta pendiente sin cobrarla ## Cambios realizados ### Backend **`project/src/modules/pos/api/pos.routes.ts`** - Nuevo endpoint `DELETE /pos/sales/:id` para 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 `RecoveredOrderItem` para 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 `listOrderItems` para曝光 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 - Nueva función `deleteSale(sale)`: - Llama `deleteSale` API - Cierra diálogo de confirmación - Refresca panel de pendientes - 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 - [x] TypeScript backend compila sin errores - [x] TypeScript frontend compila sin errores - [x] Botón "Recuperar" visible en cada venta pendiente - [x] Botón "🗑" abre diálogo de confirmación - [x] Eliminación de venta pendiente restaura inventory