-- ============================================================
-- Maega Dashboard de Ventas — Esquema de base de datos
-- Ejecutar completo en phpMyAdmin sobre la base de datos vacía
-- que crees en cPanel (Namecheap).
-- ============================================================

SET NAMES utf8mb4;

-- ----------------------------------------------------------
-- Usuarios del dashboard (reemplaza el localStorage actual)
-- ----------------------------------------------------------
CREATE TABLE IF NOT EXISTS usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  usuario VARCHAR(60) NOT NULL,
  nombre VARCHAR(120) NOT NULL,
  password_hash VARCHAR(255) NOT NULL,
  rol ENUM('admin','jefe','supervisor','gestor') NOT NULL DEFAULT 'gestor',
  supervisor_key VARCHAR(100) NULL,
  gestor_key VARCHAR(150) NULL,
  activo TINYINT(1) NOT NULL DEFAULT 1,
  must_change TINYINT(1) NOT NULL DEFAULT 0,
  creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uniq_usuario (usuario)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------------------------------------
-- Tabla de hechos: una fila por combinación agregada
-- (equivalente a D.rows del dashboard actual, pero persistente)
-- ----------------------------------------------------------
CREATE TABLE IF NOT EXISTS ventas (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  anio SMALLINT NOT NULL,
  mes TINYINT NOT NULL,
  supervisor VARCHAR(100) NOT NULL,
  gestor VARCHAR(150) NOT NULL,
  canal VARCHAR(60) NOT NULL,
  marca VARCHAR(80) NOT NULL,
  grupo_producto VARCHAR(120) NOT NULL,
  industria VARCHAR(80) NOT NULL,
  clase_producto VARCHAR(60) NULL,
  cliente VARCHAR(180) NOT NULL,
  factura_key VARCHAR(60) NOT NULL,
  venta DECIMAL(14,2) NOT NULL DEFAULT 0,
  unidades DECIMAL(12,2) NOT NULL DEFAULT 0,
  creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_periodo (anio, mes),
  INDEX idx_periodo_sup (anio, mes, supervisor),
  INDEX idx_periodo_ges (anio, mes, gestor),
  INDEX idx_factura (factura_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------------------------------------
-- Registro de cada carga mensual (para mostrar "última actualización")
-- ----------------------------------------------------------
CREATE TABLE IF NOT EXISTS cargas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  anio SMALLINT NOT NULL,
  mes TINYINT NOT NULL,
  filas_procesadas INT NOT NULL DEFAULT 0,
  usuario_id INT NULL,
  archivo_nombre VARCHAR(255) NULL,
  creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uniq_periodo (anio, mes),
  CONSTRAINT fk_cargas_usuario FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------------------------------------
-- Bitácora de auditoría (login, cargas, cambios de usuario, etc.)
-- ----------------------------------------------------------
CREATE TABLE IF NOT EXISTS audit_log (
  id INT AUTO_INCREMENT PRIMARY KEY,
  usuario_id INT NULL,
  accion VARCHAR(100) NOT NULL,
  detalle TEXT NULL,
  ip VARCHAR(45) NULL,
  creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT fk_audit_usuario FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
