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.

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/movimientos
  • GET /api/reportes y GET /api/reportes/dia
  • GET /api/auditoria/movimientos
  • GET /api/meta/tipo-productos
  • POST/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

Galeria

Resultados