# 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](#descripción-general) - [Características Principales](#características-principales) - [Requisitos del Sistema](#requisitos-del-sistema) - [Levantar el Proyecto](#levantar-el-proyecto) - [Instalación](#instalación) - [Configuración](#configuración) - [Estructura del Proyecto](#estructura-del-proyecto) - [Módulos Principales](#módulos-principales) - [Base de Datos](#base-de-datos) - [Roles y Permisos](#roles-y-permisos) - [Uso del Sistema](#uso-del-sistema) - [API Endpoints](#api-endpoints) - [Tecnologías Utilizadas](#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 ```bash 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 1. Ubica el proyecto en: ```bash C:\xampp\htdocs\TP-Taller\ProyectoTaller ``` 2. Inicia **Apache** y **MySQL** desde XAMPP. 3. Crea la base de datos `complejo_cap1tan` y carga los scripts SQL indicados en la sección de instalación. 4. Ajusta las credenciales en [php/conexion.php](php/conexion.php) si es necesario. 5. Abre la aplicación en: ```text 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 ```bash # Ubicar el proyecto en la carpeta htdocs de XAMPP c:\xampp\htdocs\TP-Taller\ProyectoTaller ``` ### 3. Crear Base de Datos ```bash # Acceder a phpMyAdmin # http://localhost/phpmyadmin # Crear base de datos: complejo_cap1tan CREATE DATABASE complejo_cap1tan; USE complejo_cap1tan; ``` ### 4. Importar Tablas 1. En phpMyAdmin, selecciona la base de datos `complejo_cap1tan` 2. Ve a la pestaña **Importar** 3. Selecciona el archivo `sql/Tablas.sql` 4. Haz clic en **Ejecutar** ### 5. Importar Datos Iniciales (Opcional) ```bash # Para cargar datos de prueba sql/Insertar\ Datos.sql ``` ### 6. Importar Triggers ```bash # Para funcionalidades avanzadas sql/Triggers.sql ``` ## ⚙️ Configuración ### Conexión a Base de Datos Editar archivo `php/conexion.php`: ```php connect_error) { die('Error de conexión: ' . $conexion->connect_error); } $conexion->set_charset('utf8'); ?> ``` ### Configuración de WhatsApp Para habilitar notificaciones vía WhatsApp: 1. Instalar dependencias Python: ```bash pip install selenium webdriver-manager ``` 2. Descargar ChromeDriver compatible con tu versión de Chrome 3. Editar `python/Enviar_WSP.py` con 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 usuario - `php/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 sistema - `Cancha`: Gestión de reservas y canchas - `Cantina`: 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 1. Inicia sesión como Admin 2. Ve a Gestión de Usuarios 3. Haz clic en "Nuevo Usuario" 4. Completa el formulario con: - Usuario (nombre de login) - Contraseña - Nombre y Apellido - DNI - Email y Teléfono - Rol ### 3. Registrar una Reserva 1. Ve a Reservas > Nueva Reserva 2. Selecciona la cancha 3. Elige la fecha y hora disponible 4. Si el cliente tiene cupón, selecciona el descuento 5. El sistema solicita verificación por WhatsApp del cliente 6. Completa la verificación e ingresa el código recibido 7. Confirma la reserva ### 4. Registrar una Venta 1. Ve a Cantina > Nueva Venta 2. Busca y agrega productos (el sistema alertará si el stock es bajo) 3. El sistema calcula automáticamente el total 4. Registra la venta ### 5. Crear Orden de Compra 1. Ve a Proveedores > Nueva Orden 2. Selecciona proveedor 3. Agrega productos 4. Envía para aprobación 5. (Opcional) Envía la orden por WhatsApp desde el sistema 6. Admin aprueba o rechaza la orden ### 6. Generar Reportes 1. Ve a Reportes > Generar Reportes 2. 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 3. Visualiza el reporte en pantalla 4. 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 ```bash # Ejecutar backup manual php/backup.php ``` Los backups se guardan en la carpeta `backups/` con timestamp. ### Prueba de Conexión ```bash # 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