Sistema Caja Ventas - Control diario de caja
Sistema full stack para operar ingresos y egresos, controlar caja diaria, generar reportes por periodo y auditar correcciones/anulaciones de movimientos.
- Vue 3
- TypeScript
- Vite
- Pinia
- Spring Boot
- Java 21
- Spring Data JPA
- SQL Server
- H2
- REST API
Resumen
Que hace
- Movimientos diarios: alta, correccion y anulacion de ingresos/egresos.
- Multipago por movimiento: efectivo, transferencia y Mercado Pago
- Caja diaria por fecha con resumen de ingresos, egresos y efectivo.
- Reporte por periodo con KPIs, ranking por tipo de producto y destacados.
- Auditoria de correcciones/anulaciones con motivo y snapshot antes/despues.
Para quien
- Equipos administrativos que necesitan cierre diario claro.
- Operaciones con distintas formas de cobro/pago y necesidad de trazabilidad.
- Negocios que requieren reportes de gestion por rango y auditoria interna.
- Empresas que quieren una base lista para evolucionar a cierre/reapertura y roles.
Arquitectura
El proyecto esta dividido en frontend SPA (Vue 3 + TypeScript) y backend
REST (Spring Boot + JPA).
El frontend consume endpoints bajo /api para movimientos, reportes, auditoria y
categorias.
Frontend (Vue + TS)
frontend/src
|- views/
| |- MovimientosView.vue
| |- CajaView.vue
| |- ReporteView.vue
| `- HistorialView.vue
|- stores/ (Pinia)
|- api/ (Axios services)
|- components/
`- router/index.ts
Backend (Spring Boot)
backend/src/main/java/.../sistemacajaventas
|- controller/
|- service/
|- repository/
|- model/
|- dto/request
|- dto/response
|- exception/
`- config/
Base de datos por perfil: H2 local/test y SQL Server para entorno productivo.
Frontend (Vue)
Movimientos
Pantalla principal operativa: carga por fecha, grillas de ingresos/egresos, alta, correccion y anulacion.
Caja diaria
Vista de resumen por dia con totales por medio y calculo de efectivo para control de caja.
Reporte por periodo
KPIs por rango desde/hasta, graficos diarios, ingreso mas caro/barato y ranking por
tipo de producto.
Historial de auditoria
Lista acciones CORREGIR/ANULAR con motivo y detalle expandible de
cambios.
Estado centralizado
Pinia para dominio y UI: stores de movimientos, caja, categorias, usuario y estado de pantalla.
Servicios API
Axios con timeout/interceptor de errores y servicios separados por modulo
(movimientos, caja, reportes, etc.).
Backend / API
API REST en Spring Boot con validaciones de negocio, excepciones controladas y persistencia JPA. Soporta perfiles para desarrollo local y despliegue con SQL Server.
Endpoints clave
GET/POST/PUT/DELETE /api/movimientosGET /api/reportesyGET /api/reportes/diaGET /api/auditoria/movimientosGET /api/meta/tipo-productosPOST/GET /api/usuarios
Reglas de negocio destacadas
- INGRESO requiere tipo de producto; EGRESO no lo permite.
- No se puede corregir ni anular movimientos ya anulados.
- Auditoria persistente con snapshots JSON, usuario, motivo y fecha/hora.
- Errores normalizados via
ApiExceptionHandler(400/404/500).
Retos & soluciones
- Consistencia en caja diaria -> reglas de validacion por tipo de movimiento y pagos.
- Auditoria real de cambios -> snapshots antes/despues y motivo por correccion/anulacion.
- Operacion rapida en mostrador -> altas y modales para correccion/categorias.
- Reporteria util para decision -> KPIs por periodo, ranking y destacados por producto.
- Portabilidad de base -> perfiles H2 para desarrollo/test y SQL Server para entorno productivo.
- Errores claros para el usuario -> contrato estandar de errores y mensajes de negocio.
- Preparado para escalar -> estructura por capas y roadmap para cierre/reapertura y seguridad.
Galeria
Nota: Algunas capturas fueron parcialmente censuradas por politica interna de la empresa donde el sistema esta en uso, para proteger datos sensibles.
Resultados
- Operacion diaria ordenada con trazabilidad de cada movimiento.
- Control de caja por fecha con totales por medio y efectivo consolidado.
- Reporte gerencial por rango con metricas accionables.
- Arquitectura mantenible (SPA + API + capas) lista para nuevas funcionalidades.
- Base de despliegue flexible para desarrollo local (H2) y entorno SQL Server.