1.6 KiB
1.6 KiB
POS-FIX-7: Implementer Evidence
Problema
- El botón "Guardar pendiente" requería pagos parciales ya registrados (payments.length > 0), cuando debería estar activo desde el primer artículo añadido.
- El botón "Vaciar caja" no pedía confirmación, borrando el ticket sin aviso.
Cambios realizados
Backend
project/src/modules/pos/api/pos.routes.ts
- Cambiado
payments: { type: 'array', minItems: 1 }→minItems: 0en POST /pos/sales - Cambiado
z.array(payment).min(1)→z.array(payment).min(0)en la validación Zod
project/src/modules/pos/application/create-pos-sale.ts
- Modificada
validatePaymentAllocations(): ya no lanza error siinputs.length === 0 - Permite crear ventas con
payments: []→ estadoPENDING,outstandingCents = totalCents
Frontend
project/apps/pos/src/app/(terminal)/page.tsx
- Nuevo estado
showClearConfirmpara el diálogo de confirmación - Nueva función
parkSale()que llama acreateSaleconpayments: [] - Botones separados:
- "Guardar pendiente" (amarillo): enabled desde
cart.length > 0, llamaparkSale() - "Cobrar e imprimir" (verde): enabled cuando
paidCents >= totals.total, llamaconfirmSale()
- "Guardar pendiente" (amarillo): enabled desde
- "Vaciar caja" movido debajo con borde rojo, abre diálogo de confirmación
- Diálogo de confirmación con "Cancelar" y "Vaciar" (confirmación destructiva en rojo)
resetCashier()también reseteashowClearConfirm
Verificación
- TypeScript backend compila sin errores
- TypeScript frontend compila sin errores
- Botón "Guardar pendiente" activo desde primer artículo
- Diálogo de confirmación en "Vaciar caja"