Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TPV Bar - Sistema de Punto de Venta

📌 Descripción del Proyecto

TPV Bar es un sistema de Terminal de Punto de Venta (TPV) diseñado específicamente para negocios de hostelería (bares, cafeterías, restaurantes) que requieren una solución simple, rápida y funcional para la emisión de tickets de venta.

🎯 Propósito Principal

A diferencia de los sistemas ERP complejos que incluyen gestión de inventario, análisis de ventas, reportes financieros y múltiples módulos de negocio, TPV Bar se enfoca exclusivamente en la operación del punto de venta. Su objetivo es proporcionar:

  • Interfaz ágil y táctil para la venta rápida en mostrador
  • Emisión inmediata de tickets con impresora térmica integrada
  • Gestión de pago (efectivo con cambio automático y tarjeta)
  • Cierre de caja por turno (5:00 AM - 5:00 AM)
  • Historial de tickets para reimpresiones y consultas rápidas
  • SIN gestión de inventario (stock, movimientos de almacén)
  • SIN análisis financiero (reportes, estadísticas avanzadas)
  • SIN gestión de clientes (solo identificación opcional)
  • SIN funciones administrativas (roles, permisos, usuarios)

💼 Caso de Uso Ideal

Un bar pequeño o mediano que:

  • Necesita registrar ventas rápidamente
  • Tiene mostrador con punto de venta táctil
  • Desea imprimir tickets automáticamente
  • Requiere abrir cajón después de cada pago
  • Necesita cierre de caja simple por turno
  • NO requiere gestión detallada de ventas ni inventario

✨ Características Técnicas

  • ✅ Interfaz gráfica completamente documentada con Javadoc
  • ✅ Categorías de productos (Bebidas, Tapas, Comidas, Postres, Cafés, etc.)
  • ✅ Grilla de productos con imágenes (4 columnas, optimizada para táctil)
  • ✅ Ticket en tiempo real con cálculo automático de total
  • ✅ Pago en efectivo (cálculo de cambio) y tarjeta
  • ✅ Impresora térmica integrada (apertura de cajón automática)
  • ✅ Cierre de caja por turnos (5:00 AM - 5:00 AM)
  • ✅ Historial de últimos 10 tickets con reimpresión
  • ✅ Caché de imágenes para rendimiento
  • ✅ Base de datos SQLite con persistencia
  • ✅ 100% código documentado con Javadoc

🛠️ Requisitos

  • Java 8+ (JDK)
  • Maven 3.6+
  • Windows/Linux/Mac
  • Impresora térmica Premier ITP-58 III (opcional, para imprimir)
  • Monitor táctil (recomendado para la mejor experiencia)

📦 Instalación

1. Clonar el repositorio

git clone https://github.com/eloygnz/tpv-bar.git
cd tpv-bar

2. Compilar el proyecto

mvn clean package

Esto genera el JAR ejecutable: target/tpv-bar.jar

3. Crear directorio de imágenes (opcional)

Las imágenes de productos se ignoran en GitHub. Si las tienes (no incluidas por copyright):

mkdir -p imagenes/productos
# Copiar imágenes JPG (200x200px, quality 85) en este directorio

Si no tienes imágenes, el sistema funciona con placeholders (color blanco).

4. Ejecutar

Con Maven:

mvn exec:java -Dexec.mainClass="com.tubar.tpv.Main"

Con JAR:

java -jar target/tpv-bar.jar

Windows (batch script):

iniciar-windows.bat

🗄️ Base de Datos

La base de datos SQLite se genera automáticamente al ejecutar el programa por primera vez.

  • Ubicación: basededatos/tpv.db
  • Tablas: categorias, productos, clientes, tickets, lineas_ticket
  • Tamaño: ~50KB inicial

No necesitas hacer nada - DatabaseManager.java se encarga de todo.


📁 Estructura del Proyecto

tpv-bar/
├── src/main/
│   ├── java/com/tubar/tpv/
│   │   ├── Main.java                 # Punto de entrada
│   │   ├── modelo/                   # Clases de datos (6 clases)
│   │   ├── dao/                      # Data Access Objects (4 clases)
│   │   ├── database/                 # Gestión de BD
│   │   ├── util/                     # Utilidades (ImpresoraUtil)
│   │   └── vista/                    # GUI (8 componentes)
│   └── resources/
│       └── basededatos/              # BD SQLite (ignorada en git)
│
├── pom.xml                           # Configuración Maven
├── .gitignore                        # Archivos ignorados en git
├── README.md                         # Este archivo
├── LICENSE                           # MIT License
│
└── LOCAL-DATA/ (local, no en git)
    ├── basededatos/tpv.db            # BD generada automáticamente
    ├── imagenes/productos/           # Imágenes locales (ignoradas)
    └── precios.sql                   # Scripts locales (ignorados)

🎯 Primeros Pasos

  1. Clonar y compilar:

    git clone https://github.com/eloygnz/tpv-bar.git
    cd tpv-bar
    mvn clean package
  2. Ejecutar:

    java -jar target/tpv-bar.jar
  3. Interfaz:

    • Izquierda: Selecciona categoría de productos
    • Centro: Grilla de productos (click = +1, doble click = editar cantidad)
    • Derecha: Ticket actual con total
    • Arriba: Total general en grande
    • Abajo: Botones: Abrir Cajón, Últimos Tickets, Ver Ventas Hoy
  4. Comprar:

    • Click en productos → se añaden al ticket
    • Doble click en línea → edita cantidad (0 = eliminar)
    • Click COBRAR → elige método (efectivo/tarjeta)
    • Pago efectivo → abre cajón automáticamente

🖨️ Impresora Térmica (Opcional)

Si tienes impresora Premier ITP-58 III:

  1. Instala los drivers en Windows/Linux
  2. Configura como impresora predeterminada (o ajusta nombre en ImpresoraUtil.java)
  3. El programa enviará comandos automáticamente

Si no tienes impresora:

  • El programa sigue funcionando sin errores
  • Opción "Imprimir ticket" se desactiva gracefully

📊 Documentación del Código

Toda la base de código está 100% documentada con Javadoc:

  • modelo/ - 6 clases documentadas
  • dao/ - 4 clases DAO completamente documentadas
  • util/ - ImpresoraUtil documentado
  • vista/ - 8 componentes GUI documentados
  • database/ - DatabaseManager documentado

Genera JavaDoc:

mvn javadoc:javadoc

Abre: target/site/apidocs/index.html


🔧 Configuración de Desarrollo

Cambiar puerto/host de BD (si es necesario):

Edita database/DatabaseManager.java:

private static final String BD_URL = "jdbc:sqlite:basededatos/tpv.db";

Cambiar nombre de impresora:

Edita util/ImpresoraUtil.java:

private static final String NOMBRE_IMPRESORA = "Premier ITP-58";

Cambiar horario de turno (si no es 5 AM):

Edita dao/TicketDAO.java en método calcularInicioTurno().


📋 Roadmap y TODO

✅ v0.0.1 (Actual - Primera Release)

  • ✅ Funcionalidad TPV completa
  • ✅ Interfaz táctil optimizada
  • ✅ Impresora térmica integrada
  • ✅ Base de datos SQLite
  • ✅ Documentación Javadoc 100%

📝 TODO - Próximas Versiones

v0.1.0 - Configuración y Logging

  • Generalizar ImpresoraUtil - Leer configuración de impresora desde archivo de propiedades en lugar de hardcode

    • Crear config/printer.properties
    • Soportar múltiples impresoras (seleccionable)
    • Configuración de comandos ESC/POS personalizables
  • Sistema de Logging - Emitir mensajes en archivos en lugar de System.out/System.err

    • Implementar SLF4j + Logback
    • Archivo de log: logs/tpv.log
    • Niveles: DEBUG, INFO, WARN, ERROR
    • Rotación de logs diarios
    • Log de todas las ventas (audit trail)
  • Control exhaustivo de excepciones

    • Try-catch mejorados en todos los DAOs
    • Dialogs informativos para errores de usuario
    • Recovery automático cuando sea posible
    • Logging de stack traces

v0.2.0 - Pruebas y Calidad

  • Pruebas unitarias (JUnit 4+)

    • Tests para modelos de datos
    • Tests para DAOs (con BD en memoria H2)
    • Tests para lógica de tickets
    • Tests para cálculos (total, cambio, etc.)
    • Cobertura mínima: 70%
  • Pruebas de integración

    • Tests end-to-end de flujo de venta
    • Tests de impresora (mock)
    • Tests de cierre de caja

v0.3.0 - Funcionalidades Avanzadas

  • Gestión de productos desde interfaz

    • CRUD de categorías
    • CRUD de productos
    • Edición de precios
    • Cambio de estado (activo/inactivo)
  • Descuentos

    • Descuento por línea
    • Descuento global del ticket
    • Códigos promocionales
  • Reportes avanzados

    • Ventas por categoría
    • Productos más vendidos
    • Hora de mayor afluencia
    • Exportar a CSV/PDF

v1.0.0 - Producción

  • Seguridad

    • Autenticación de usuarios
    • Rol de administrador vs cajero
    • Auditoría de cambios
  • Backup automático

    • Backup diario de BD
    • Sincronización con servidor
  • Multi-idioma

    • Soporte para español, inglés, catalán
  • Modo oscuro

    • Tema oscuro para la noche

📝 Versión Actual

  • v0.0.1 - Primera release con documentación completa
    • Funcionalidad TPV completa
    • Interfaz táctil optimizada
    • Impresora térmica integrada
    • Base de datos SQLite
    • Documentación Javadoc en 100% del código

📄 Licencia

MIT License - Libre para usar, modificar y distribuir

👤 Autor

eloygnz - 2026

🤝 Contribuciones

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea rama de feature (git checkout -b feature/AmazingFeature)
  3. Commit cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre Pull Request

📞 Soporte

Si encuentras problemas:

  1. Revisa la consola de errores (System.out/System.err)
  2. Verifica que Java 8+ está instalado: java -version
  3. Verifica que Maven está instalado: mvn -version
  4. Limpia caché: mvn clean
  5. Abre issue en GitHub

📚 Recursos Relacionados


¡Gracias por usar TPV Bar! 🍺📱

About

TPV system for bars with thermal printer

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages