Files
MarcosFlorSalcedo 8ec55e40fc 1ra Versión
2026-07-14 18:24:27 -03:00

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

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

  1. Ubica el proyecto en:
    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 si es necesario.
  5. 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

  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)

# 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:

  1. Instalar dependencias Python:

    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

# 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