20 KiB
Sistema de Gestión - Complejo Cap1tan ⚽🎾
Sistema integral de gestión para un complejo deportivo que incluye reserva de canchas, gestión de cantina, inventario, proveedores y reportes.
📋 Índice
- Descripción General
- Características Principales
- Requisitos del Sistema
- Levantar el Proyecto
- Instalación
- Configuración
- Estructura del Proyecto
- Módulos Principales
- Base de Datos
- Roles y Permisos
- Uso del Sistema
- API Endpoints
- Tecnologías Utilizadas
📖 Descripción General
Sistema web desarrollado para la gestión integral del Complejo Cap1tan, permitiendo:
- Administración de usuarios con diferentes roles
- Reserva y gestión de canchas
- Control de inventario de la cantina
- Gestión de proveedores y órdenes de compra
- Reportes de ventas y ganancias
- Sistema de cupones de descuento
- Notificaciones vía WhatsApp
✨ Características Principales
Gestión de Usuarios
- ✅ Sistema de autenticación seguro
- ✅ Tres roles: Administrador General, Administrador Cancha y Administrador Cantina
- ✅ Perfiles de usuarios con datos personales
- ✅ Edición rápida desde el modal de perfil del usuario conectado
- ✅ Gestión completa desde la interfaz administrativa
Reservas de Canchas
- ✅ Reserva de turnos en canchas
- ✅ Visualización de disponibilidad
- ✅ Sistema de cupones para clientes frecuentes
- ✅ Registro de faltas y asistencias
- ✅ Descuentos automáticos por cupones
- ✅ Verificación del cliente por WhatsApp antes de confirmar la reserva
Gestión de Cantina
- ✅ Catálogo de productos
- ✅ Control de stock
- ✅ Registro de ventas en tiempo real
- ✅ Alertas visuales de stock bajo
- ✅ Cálculo automático de ganancias
- ✅ Actualización dinámica del stock sin recargar completamente la página
Gestión de Proveedores
- ✅ Registro de proveedores
- ✅ Órdenes de compra
- ✅ Aprobación de órdenes por el administrador
- ✅ Asociación de productos por proveedor
- ✅ Historial de compras
- ✅ Envío de órdenes por WhatsApp para comunicación rápida
Reportes y Análisis
- ✅ Reporte de ventas
- ✅ Cálculo de ganancia neta
- ✅ Seguimiento de gastos
- ✅ Resumen por período
- ✅ Generación de reportes por período: Diario, Semanal, Mensual y Anual
- ✅ Exportación de reportes a PDF y Excel con formato profesional
- ✅ Correcciones y mejoras en la generación visual de reportes
💻 Requisitos del Sistema
Software Necesario
- PHP >= 7.4
- MySQL/MariaDB >= 5.7
- Apache (incluido en XAMPP)
- Python 3.8+ (para envío de mensajes WhatsApp)
- Navegador moderno (Chrome, Firefox, Edge)
Dependencias de Python
selenium
webdriver-manager
Servidor Local
- XAMPP o equivalente (Apache + MySQL + PHP)
▶️ Levantar el Proyecto
Para usar el sistema localmente, basta con dejar el proyecto en la carpeta de XAMPP, iniciar Apache y MySQL, importar la base de datos y abrir la interfaz desde el navegador.
Pasos
- Ubica el proyecto en:
C:\xampp\htdocs\TP-Taller\ProyectoTaller - Inicia Apache y MySQL desde XAMPP.
- Crea la base de datos
complejo_cap1tany carga los scripts SQL indicados en la sección de instalación. - Ajusta las credenciales en php/conexion.php si es necesario.
- Abre la aplicación en:
http://localhost/TP-Taller/ProyectoTaller/html/Login.html
Uso inicial
Una vez abierta la aplicación, podés comenzar a gestionar reservas, ventas, productos, proveedores, órdenes y reportes desde el panel principal.
📦 Instalación
1. Requisitos Previos
Asegúrate de tener XAMPP instalado y ejecutando:
- Apache en puerto 80
- MySQL en puerto 3306
2. Clonar/Descargar Proyecto
# Ubicar el proyecto en la carpeta htdocs de XAMPP
c:\xampp\htdocs\TP-Taller\ProyectoTaller
3. Crear Base de Datos
# Acceder a phpMyAdmin
# http://localhost/phpmyadmin
# Crear base de datos: complejo_cap1tan
CREATE DATABASE complejo_cap1tan;
USE complejo_cap1tan;
4. Importar Tablas
- En phpMyAdmin, selecciona la base de datos
complejo_cap1tan - Ve a la pestaña Importar
- Selecciona el archivo
sql/Tablas.sql - Haz clic en Ejecutar
5. Importar Datos Iniciales (Opcional)
# Para cargar datos de prueba
sql/Insertar\ Datos.sql
6. Importar Triggers
# Para funcionalidades avanzadas
sql/Triggers.sql
⚙️ Configuración
Conexión a Base de Datos
Editar archivo php/conexion.php:
<?php
$host = 'localhost'; // Servidor MySQL
$user = 'root'; // Usuario MySQL
$password = 'admin'; // Contraseña MySQL
$db = 'complejo_cap1tan'; // Nombre de la base de datos
$conexion = new mysqli($host, $user, $password, $db);
if ($conexion->connect_error) {
die('Error de conexión: ' . $conexion->connect_error);
}
$conexion->set_charset('utf8');
?>
Configuración de WhatsApp
Para habilitar notificaciones vía WhatsApp:
-
Instalar dependencias Python:
pip install selenium webdriver-manager -
Descargar ChromeDriver compatible con tu versión de Chrome
-
Editar
python/Enviar_WSP.pycon rutas correctas
📁 Estructura del Proyecto
ProyectoTaller/
├── backups/ # Copias de seguridad
│ └── *.zip # Archivos de backup automático
├── css/ # Estilos CSS
│ ├── Cantina.css # Estilos del módulo de cantina
│ ├── Login.css # Estilos de login
│ └── Reserva_Clientes.css # Estilos de reservas
├── html/ # Archivos HTML
│ ├── Cantina.html # Página principal (cantina)
│ ├── Login.html # Página de inicio de sesión
│ └── Reserva_Clientes.html # Página de reservas
├── js/ # Archivos JavaScript
│ ├── Gestion_Canchas.js # Lógica de gestión de canchas
│ ├── Gestion_Usuarios.js # Lógica de gestión de usuarios
│ ├── Orden_Compra.js # Lógica de órdenes de compra
│ ├── Reservar_Turno.js # Lógica de reservas
│ ├── Resumen_Ventas.js # Lógica de resumen de ventas
│ ├── Tabla_Gastos.js # Lógica de tabla de gastos
│ ├── Tabla_Productos.js # Lógica de tabla de productos
│ ├── Tabla_Proveedor.js # Lógica de tabla de proveedores
│ ├── Tabla_Reservas.js # Lógica de tabla de reservas
│ └── Tabla_Ventas.js # Lógica de tabla de ventas
├── php/ # Archivos backend PHP
│ ├── conexion.php # Conexión a base de datos
│ ├── Login.php # Autenticación
│ ├── Logout.php # Cierre de sesión
│ ├── Session_Info.php # Información de sesión
│ │
│ ├── *Usuarios*
│ ├── Guardar_Usuario.php # Crear usuario
│ ├── Obtener_Usuarios.php # Listar usuarios
│ ├── Actualizar_Usuario.php # Editar usuario
│ ├── Eliminar_Usuario.php # Eliminar usuario
│ ├── Actualizar_Perfil.php # Actualizar perfil propio
│ │
│ ├── *Canchas*
│ ├── Obtener_Canchas.php # Listar todas las canchas
│ ├── Obtener_Canchas_Numeros.php # Obtener números de canchas
│ ├── Actualizar_Cancha.php # Actualizar datos de cancha
│ ├── Obtener_Disponibilidad_Cancha.php
│ ├── Obtener_Disponibilidad_Quincho.php
│ ├── Obtener_Horarios.php # Obtener horarios disponibles
│ ├── Actualizar_Horarios.php # Editar horarios
│ │
│ ├── *Reservas*
│ ├── Guardar_Reserva.php # Crear reserva
│ ├── Obtener_Reservas.php # Listar reservas
│ ├── Actualizar_Estado_Reserva.php # Cambiar estado de reserva
│ ├── Tabla_Reservas.js # Frontend de reservas
│ │
│ ├── *Productos (Cantina)*
│ ├── Agregar_Producto.php # Crear producto
│ ├── Obtener_Productos.php # Listar productos
│ ├── Editar_Producto.php # Actualizar producto
│ ├── Eliminar_Producto.php # Eliminar producto
│ ├── Buscar_Producto_Ventas.php
│ ├── Buscar_Producto_Orden.php
│ │
│ ├── *Ventas*
│ ├── Registrar_Venta.php # Registrar venta en cantina
│ ├── Obtener_Ventas.php # Obtener histórico de ventas
│ ├── Ganacia_Neta.php # Calcular ganancias
│ │
│ ├── *Proveedores*
│ ├── Guardar_Proveedor.php # Crear proveedor
│ ├── Obtener_Proveedores.php # Listar proveedores
│ ├── Editar_Proveedor.php # Actualizar proveedor
│ ├── Eliminar_Proveedor.php # Eliminar proveedor
│ ├── Buscar_Proveedor.php # Buscar proveedor
│ ├── Buscar_Proveedor_Editar.php
│ │
│ ├── *Órdenes de Compra*
│ ├── Registrar_Orden_Compra.php # Crear orden
│ ├── Obtener_Ordenes_Compra.php # Listar órdenes
│ ├── Actualizar_Orden_Compra.php # Cambiar estado de orden
│ ├── Obtener_Productos_Orden.php # Productos de una orden
│ ├── Agregar_Producto_Proveedor.php
│ ├── Eliminar_Producto_Proveedor.php
│ ├── Obtener_Productos_Proveedor.php
│ │
│ ├── *Gastos*
│ ├── Registrar_Gastos.php # Registrar gasto
│ ├── Obtener_Gastos.php # Listar gastos
│ ├── Editar_Gasto.php # Editar gasto
│ ├── Eliminar_Gasto.php # Eliminar gasto
│ │
│ ├── *Cupones*
│ ├── Obtener_Cupon.php # Obtener datos de cupón
│ │
│ ├── *Utilidades*
│ ├── Enviar_Codigo_WSP.php # Enviar código de verificación
│ ├── Obtener_Reporte.php # Generar reportes
│ ├── backup.php # Hacer backup de BD
│ ├── Test_Conexion.php # Prueba de conexión
│
├── python/ # Scripts Python
│ └── Enviar_WSP.py # Envío automático de mensajes WhatsApp
├── sql/ # Scripts SQL
│ ├── Tablas.sql # Estructura de base de datos
│ ├── Insertar\ Datos.sql # Datos iniciales de prueba
│ ├── Consultas.sql # Consultas útiles
│ └── Triggers.sql # Triggers de base de datos
└── README.md # Este archivo
🗄️ Módulos Principales
1. Autenticación
php/Login.php: Valida credenciales de usuariophp/Logout.php: Cierra sesión actual- Sistema de sesiones con roles
2. Gestión de Usuarios
- Crear, editar, listar y eliminar usuarios
- Asignación de roles (Admin, Cancha, Cantina)
- Perfiles con datos personales
- Edición rápida del perfil desde el panel principal
3. Gestión de Canchas
- Gestión de canchas (CRUD)
- Gestión de horarios disponibles
- Seguimiento de disponibilidad
4. Sistema de Reservas
- Reserva de turnos en canchas
- Sistema de cupones para descuentos
- Registro de asistencia/faltas
- Cálculo automático de descuentos
- Confirmación con verificación por WhatsApp
5. Cantina
- Gestión de productos (CRUD)
- Control de inventario
- Registro de ventas
- Alertas de stock bajo
6. Proveedores y Compras
- Registro de proveedores
- Órdenes de compra con aprobación
- Asociación de productos por proveedor
- Envío de órdenes y seguimiento desde la interfaz
7. Reportes
- Resumen de ventas por período
- Cálculo de ganancias netas
- Tracking de gastos
- Exportación a PDF y Excel
- Visualización optimizada para reportes diarios, semanales, mensuales y anuales
8. Seguridad y Operaciones Avanzadas
- Verificación de clientes por WhatsApp
- Gestión del perfil del usuario autenticado
- Copias de seguridad automáticas de la base de datos
- Alertas de productos con stock bajo
- Mejoras en el flujo de validación y control de operaciones
📊 Base de Datos
Tablas Principales
| Tabla | Descripción |
|---|---|
usuarios |
Usuarios del sistema con roles |
clientes |
Clientes que reservan canchas |
canchas |
Canchas disponibles para reserva |
reservas |
Histórico de reservas |
productos |
Productos de la cantina |
ventas |
Registro de ventas |
ventas_productos |
Detalle de productos en cada venta |
proveedores |
Proveedores de productos |
ordenes_compra |
Órdenes de compra a proveedores |
ordenes_productos |
Detalle de productos en órdenes |
gastos |
Gastos operativos |
cupones |
Cupones de descuento |
alertas_stock |
Alertas de stock bajo |
Roles de Base de Datos
Admin: Acceso total a todo el sistemaCancha: Gestión de reservas y canchasCantina: Gestión de productos y ventas
👥 Roles y Permisos
Administrador
- ✅ Gestión completa de usuarios
- ✅ Gestión de canchas y horarios
- ✅ Acceso a reportes
- ✅ Gestión de proveedores
- ✅ Backup de base de datos
Cancha
- ✅ Gestionar reservas
- ✅ Ver disponibilidad de canchas
- ✅ Consultar historial de reservas
- ❌ Gestión de usuarios
- ❌ Reportes financieros
Cantina
- ✅ Gestionar productos
- ✅ Registrar ventas
- ✅ Ver resumen de ventas
- ✅ Gestionar proveedores
- ✅ Crear órdenes de compra
- ❌ Gestión de usuarios
- ❌ Gestión de reservas
🚀 Uso del Sistema
1. Acceso al Sistema
URL: http://localhost/TP-Taller/ProyectoTaller/html/Login.html
Usuario: admin
Contraseña: admin
2. Crear un Usuario
- Inicia sesión como Admin
- Ve a Gestión de Usuarios
- Haz clic en "Nuevo Usuario"
- Completa el formulario con:
- Usuario (nombre de login)
- Contraseña
- Nombre y Apellido
- DNI
- Email y Teléfono
- Rol
3. Registrar una Reserva
- Ve a Reservas > Nueva Reserva
- Selecciona la cancha
- Elige la fecha y hora disponible
- Si el cliente tiene cupón, selecciona el descuento
- El sistema solicita verificación por WhatsApp del cliente
- Completa la verificación e ingresa el código recibido
- Confirma la reserva
4. Registrar una Venta
- Ve a Cantina > Nueva Venta
- Busca y agrega productos (el sistema alertará si el stock es bajo)
- El sistema calcula automáticamente el total
- Registra la venta
5. Crear Orden de Compra
- Ve a Proveedores > Nueva Orden
- Selecciona proveedor
- Agrega productos
- Envía para aprobación
- (Opcional) Envía la orden por WhatsApp desde el sistema
- Admin aprueba o rechaza la orden
6. Generar Reportes
- Ve a Reportes > Generar Reportes
- Selecciona el tipo de reporte:
- Diario: Control de operación y cierre de caja
- Semanal: Flujo de caja y rendimiento
- Mensual: Rentabilidad y estado de resultados
- Anual: Balance general y visión estratégica
- Visualiza el reporte en pantalla
- Exporta a PDF o Excel según necesites
🔌 API Endpoints
Todos los endpoints devuelven JSON y utilizan GET o POST.
Usuarios
POST /php/Guardar_Usuario.php - Crear usuario
GET /php/Obtener_Usuarios.php - Listar usuarios
POST /php/Actualizar_Usuario.php - Editar usuario
POST /php/Eliminar_Usuario.php - Eliminar usuario
POST /php/Actualizar_Perfil.php - Actualizar perfil propio
GET /php/Session_Info.php - Obtener datos de sesión actual
Autenticación
POST /php/Login.php - Iniciar sesión
GET /php/Logout.php - Cerrar sesión
Canchas
GET /php/Obtener_Canchas.php - Listar canchas
GET /php/Obtener_Canchas_Numeros.php - Obtener números
POST /php/Actualizar_Cancha.php - Editar cancha
GET /php/Obtener_Disponibilidad_Cancha.php
GET /php/Obtener_Horarios.php - Listar horarios
POST /php/Actualizar_Horarios.php - Editar horarios
Reservas
POST /php/Guardar_Reserva.php - Crear reserva
GET /php/Obtener_Reservas.php - Listar reservas
POST /php/Actualizar_Estado_Reserva.php - Cambiar estado
GET /php/Obtener_Cupon.php - Obtener estado del cupón
POST /php/Enviar_Codigo_WSP.php - Enviar código de verificación WhatsApp
Productos
POST /php/Agregar_Producto.php - Crear producto
GET /php/Obtener_Productos.php - Listar productos
POST /php/Editar_Producto.php - Editar producto
POST /php/Eliminar_Producto.php - Eliminar producto
Ventas
POST /php/Registrar_Venta.php - Registrar venta
GET /php/Obtener_Ventas.php - Listar ventas
GET /php/Ganacia_Neta.php - Calcular ganancias
Proveedores
POST /php/Guardar_Proveedor.php - Crear proveedor
GET /php/Obtener_Proveedores.php - Listar proveedores
POST /php/Editar_Proveedor.php - Editar proveedor
POST /php/Eliminar_Proveedor.php - Eliminar proveedor
Órdenes de Compra
POST /php/Registrar_Orden_Compra.php - Crear orden
GET /php/Obtener_Ordenes_Compra.php - Listar órdenes
POST /php/Actualizar_Orden_Compra.php - Cambiar estado (aprobar/rechazar)
GET /php/Obtener_Productos_Orden.php - Productos de orden
POST /php/Agregar_Producto_Proveedor.php - Asociar producto a proveedor
Gastos
POST /php/Registrar_Gastos.php - Registrar gasto
GET /php/Obtener_Gastos.php - Listar gastos
POST /php/Editar_Gasto.php - Editar gasto
POST /php/Eliminar_Gasto.php - Eliminar gasto
Reportes y Operaciones
GET /php/Obtener_Reporte.php - Generar reportes (diario, semanal, mensual, anual)
GET /php/Ganacia_Neta.php - Ganancias por período
POST /php/backup.php - Crear backup de base de datos
GET /php/Test_Conexion.php - Probar conexión a base de datos
🛠️ Tecnologías Utilizadas
Backend
- PHP 7.4+ - Lenguaje servidor
- MySQL/MariaDB - Base de datos relacional
- MySQLi - Conexión a base de datos
- Prepared Statements - Protección contra SQL injection
Frontend
- HTML5 - Estructura
- CSS3 - Estilos
- JavaScript (Vanilla) - Interactividad
- AJAX - Comunicación asíncrona
Utilidades
- Python 3.8+ - Scripts de automatización
- Selenium - Automatización de WhatsApp Web
- XAMPP - Stack local (Apache, MySQL, PHP)
🔒 Seguridad
- Autenticación con sesiones
- Prepared Statements para prevenir SQL injection
- Validación de entrada en servidor
- Control de roles y permisos
📝 Mantenimiento
Backup Automático
# Ejecutar backup manual
php/backup.php
Los backups se guardan en la carpeta backups/ con timestamp.
Prueba de Conexión
# Verificar conexión a base de datos
http://localhost/TP-Taller/ProyectoTaller/php/Test_Conexion.php
🐛 Troubleshooting
Error: "Error de conexión"
- Verificar que MySQL esté corriendo
- Revisar credenciales en
php/conexion.php - Verificar que la base de datos existe
Error: "Sesión expirada"
- El usuario fue desconectado por inactividad
- Volver a iniciar sesión
Productos no se visualizan
- Verificar que hay productos en la base de datos
- Revisar permisos de usuario
- Inspeccionar la consola de navegador para errores
WhatsApp no envía mensajes
- Verificar instalación de Python y Selenium
- Verificar ruta a ChromeDriver
- Revisar formato de número telefónico
📱 Integración WhatsApp
El sistema puede enviar notificaciones vía WhatsApp:
- Códigos de verificación
- Confirmaciones de reserva
- Recordatorios
Nota: Requiere ChromeDriver y sesión activa de WhatsApp Web.
📄 Licencia
Proyecto privado para uso interno del Complejo Cap1tan.
Última actualización: Julio 2026
Versión: 1.0