-- ============================================================
-- VÖLIÁ SYSTEMS - Ampliación de esquema (Fase 5)
-- Ejecutar tras el schema.sql original
-- ============================================================
USE volia_systems;

-- ---------- Compras: proveedores y pedidos ----------
CREATE TABLE proveedores (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(200) NOT NULL,
    cif_nif VARCHAR(30),
    email VARCHAR(150),
    telefono VARCHAR(30),
    direccion VARCHAR(255),
    notas TEXT,
    creado_en DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE pedidos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    proveedor_id INT NOT NULL,
    referencia VARCHAR(50) NOT NULL,
    descripcion TEXT,
    importe DECIMAL(12,2) DEFAULT 0,
    estado ENUM('solicitado','confirmado','recibido','cancelado') DEFAULT 'solicitado',
    fecha_pedido DATE NOT NULL,
    fecha_estimada DATE,
    solicitado_por INT NOT NULL,
    creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (proveedor_id) REFERENCES proveedores(id),
    FOREIGN KEY (solicitado_por) REFERENCES usuarios(id)
);

-- ---------- Tickets: IT y Atención al Cliente (misma tabla, campo "area") ----------
CREATE TABLE tickets (
    id INT AUTO_INCREMENT PRIMARY KEY,
    area ENUM('it','atencion_cliente') NOT NULL,
    titulo VARCHAR(200) NOT NULL,
    descripcion TEXT,
    cliente_id INT DEFAULT NULL,            -- solo aplica a atención al cliente
    prioridad ENUM('baja','media','alta','urgente') DEFAULT 'media',
    estado ENUM('abierto','en_curso','resuelto','cerrado') DEFAULT 'abierto',
    creado_por INT NOT NULL,
    asignado_a INT DEFAULT NULL,
    creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
    resuelto_en DATETIME DEFAULT NULL,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id),
    FOREIGN KEY (creado_por) REFERENCES usuarios(id),
    FOREIGN KEY (asignado_a) REFERENCES usuarios(id)
);

CREATE TABLE ticket_comentarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ticket_id INT NOT NULL,
    autor_id INT NOT NULL,
    comentario TEXT NOT NULL,
    creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (ticket_id) REFERENCES tickets(id),
    FOREIGN KEY (autor_id) REFERENCES usuarios(id)
);

-- ---------- Marketing: campañas ----------
CREATE TABLE campanas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(200) NOT NULL,
    canal ENUM('email','redes_sociales','google_ads','offline','otro') DEFAULT 'otro',
    descripcion TEXT,
    presupuesto DECIMAL(12,2) DEFAULT 0,
    fecha_inicio DATE,
    fecha_fin DATE,
    estado ENUM('planificada','activa','finalizada','pausada') DEFAULT 'planificada',
    responsable_id INT DEFAULT NULL,
    creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (responsable_id) REFERENCES usuarios(id)
);

-- ---------- Logística: envíos e inventario ----------
CREATE TABLE envios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cliente_id INT DEFAULT NULL,
    referencia VARCHAR(50) NOT NULL,
    transportista VARCHAR(150),
    numero_seguimiento VARCHAR(100),
    estado ENUM('preparando','en_transito','entregado','incidencia') DEFAULT 'preparando',
    fecha_envio DATE,
    fecha_entrega_estimada DATE,
    creado_en DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);

CREATE TABLE inventario (
    id INT AUTO_INCREMENT PRIMARY KEY,
    sku VARCHAR(50) UNIQUE NOT NULL,
    nombre VARCHAR(200) NOT NULL,
    descripcion TEXT,
    cantidad INT DEFAULT 0,
    stock_minimo INT DEFAULT 0,
    ubicacion VARCHAR(100),
    actualizado_en DATETIME DEFAULT CURRENT_TIMESTAMP
);
