49 lines
1.9 KiB
Markdown
49 lines
1.9 KiB
Markdown
# 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
|