8. Cajas y gastos
Cubre registers (apertura/cierre de caja por usuario) y expenses.
Historial de ejecución
| Ciclo | Fecha | Ejecutado por | Casos ejecutados | Resultado |
|---|---|---|---|---|
| 1 | — | — | — | Pendiente |
Cajas (registers)
CP CAJ-01: Abrir caja con monto inicial
- Pasos:
POST /registers/openconstore_id,opening_amount.- Resultado esperado:
status="open",opened_atcon la hora actual.- Resultado obtenido: Pendiente.
CP CAJ-02: Intentar abrir una segunda caja estando ya una abierta (mismo usuario)
- Resultado esperado: debe rechazarse con el mensaje
"ya tienes una caja abierta — ciérrala antes de abrir una nueva"(409).- Resultado obtenido: Pendiente.
CP CAJ-03: Dos usuarios distintos abren caja al mismo tiempo en la misma tienda
- Objetivo:
GetCurrentfiltra poruser_id, no porstore_id— confirmar que efectivamente se permiten varias cajas abiertas simultáneas en la misma tienda (una por cajero), que es el comportamiento esperado para negocios con varios puntos de cobro.- Resultado obtenido: Pendiente.
CP CAJ-04: Cerrar caja con un monto de cierre distinto al esperado (descuadre)
- Pasos: abrir con $100.000, vender $50.000 en efectivo, cerrar declarando $130.000 (sobrante) o $120.000 (faltante).
- Resultado esperado a verificar: ¿el sistema calcula y muestra la diferencia esperada vs. declarada, o solo guarda el monto que el usuario escribe sin comparar contra las ventas del turno? Si no hay comparación automática, es una oportunidad de mejora de usabilidad importante para el caso de uso real de arqueo de caja.
- Resultado obtenido: Pendiente.
CP CAJ-05: Intentar cerrar una caja sin tener ninguna abierta
- Resultado esperado: error
"no tienes una caja abierta"(409), no un crash.- Resultado obtenido: Pendiente.
CP CAJ-06: Ver el listado histórico de cajas filtrado por usuario y por rango de fechas
- Resultado esperado: filtros combinables, resultados correctos.
- Resultado obtenido: Pendiente.
Gastos
CP GAS-01: Registrar gasto con categoría existente
- Resultado esperado: se crea y aparece en el reporte de gastos y en el dashboard del mes correspondiente.
- Resultado obtenido: Pendiente.
CP GAS-02: Registrar gasto con categoría de texto libre no predefinida
- Objetivo:
categoryes unstringlibre, no una referencia a una tabla de categorías de gasto — confirmar que no hay autocompletado/normalización, lo que puede generar categorías duplicadas por errores de tipeo (ej. “Servicios” vs “servicios” vs “Servicio”).- Resultado esperado a verificar: si el reporte de gastos agrupa por categoría, confirmar si estos tres valores quedan como grupos separados — sugerir normalización o un selector con opciones existentes si se confirma el problema.
- Resultado obtenido: Pendiente.
CP GAS-03: Registrar gasto con
amountnegativo
- Resultado esperado a verificar: no hay validación de mínimo en el DTO — confirmar si acepta un gasto negativo y qué efecto tiene en los totales del dashboard (podría “restar” en vez de sumar gastos, inflando artificialmente el margen mostrado).
- Resultado obtenido: Pendiente.
CP GAS-04: Registrar gasto sin tienda seleccionada
- Resultado esperado: error 400 (
store_idesbinding:"required").- Resultado obtenido: Pendiente.
Notas de usabilidad y sugerencias
Se completa durante la ejecución.