-- ============================================================
--  SISTEMA MULTI-TIENDA
--  Una sola BD, muchas tiendas/editores
-- ============================================================
DROP DATABASE IF EXISTS multitienda;
CREATE DATABASE multitienda CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE multitienda;

-- Tiendas registradas (cada fila = una carpeta en /catalogo/)
CREATE TABLE tiendas (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    slug        VARCHAR(60)  NOT NULL UNIQUE,   -- nombre de carpeta ej: pepito
    nombre      VARCHAR(120) NOT NULL,
    slogan      VARCHAR(200) DEFAULT '',
    whatsapp    VARCHAR(20)  DEFAULT '',
    instagram   VARCHAR(80)  DEFAULT '',
    facebook    VARCHAR(80)  DEFAULT '',
    color1      VARCHAR(10)  DEFAULT '#e91e8c',
    color2      VARCHAR(10)  DEFAULT '#222222',
    banner_texto    VARCHAR(200) DEFAULT 'Bienvenido',
    banner_subtexto VARCHAR(200) DEFAULT '',
    logo        VARCHAR(255) DEFAULT '',
    banner      VARCHAR(255) DEFAULT '',
    activa      TINYINT(1)   DEFAULT 1,
    creado_en   DATETIME     DEFAULT CURRENT_TIMESTAMP
);

-- Suscripcion por tienda
CREATE TABLE suscripciones (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    tienda_id   INT          NOT NULL UNIQUE,
    mes_inicio  DATE         NOT NULL,
    estado      ENUM('activo','pendiente','vencido') DEFAULT 'activo',
    creado_en   DATETIME     DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (tienda_id) REFERENCES tiendas(id) ON DELETE CASCADE
);

-- Pagos / comprobantes por tienda
CREATE TABLE pagos (
    id             INT AUTO_INCREMENT PRIMARY KEY,
    tienda_id      INT          NOT NULL,
    comprobante    VARCHAR(255) NOT NULL,
    monto          DECIMAL(8,2) DEFAULT 0.00,
    nota           TEXT,
    estado         ENUM('pendiente','verificado','rechazado') DEFAULT 'pendiente',
    subido_en      DATETIME     DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (tienda_id) REFERENCES tiendas(id) ON DELETE CASCADE
);

-- Categorias por tienda
CREATE TABLE categorias (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    tienda_id   INT         NOT NULL,
    nombre      VARCHAR(80) NOT NULL,
    orden       INT         DEFAULT 0,
    activo      TINYINT(1)  DEFAULT 1,
    FOREIGN KEY (tienda_id) REFERENCES tiendas(id) ON DELETE CASCADE
);

-- Productos por tienda
CREATE TABLE productos (
    id           INT AUTO_INCREMENT PRIMARY KEY,
    tienda_id    INT          NOT NULL,
    categoria_id INT          NOT NULL,
    nombre       VARCHAR(120) NOT NULL,
    descripcion  TEXT,
    precio       DECIMAL(8,2) NOT NULL DEFAULT 0.00,
    precio_antes DECIMAL(8,2) DEFAULT NULL,
    tallas       VARCHAR(120) DEFAULT '',
    colores      VARCHAR(200) DEFAULT '',
    imagen       VARCHAR(255) DEFAULT '',
    destacado    TINYINT(1)   DEFAULT 0,
    activo       TINYINT(1)   DEFAULT 1,
    orden        INT          DEFAULT 0,
    creado_en    DATETIME     DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (tienda_id)    REFERENCES tiendas(id)    ON DELETE CASCADE,
    FOREIGN KEY (categoria_id) REFERENCES categorias(id) ON DELETE CASCADE
);

-- Pedidos por tienda
CREATE TABLE pedidos (
    id             INT AUTO_INCREMENT PRIMARY KEY,
    tienda_id      INT          NOT NULL,
    cliente_nombre VARCHAR(100) DEFAULT '',
    cliente_tel    VARCHAR(30)  DEFAULT '',
    items          TEXT         NOT NULL,
    total          DECIMAL(8,2) DEFAULT 0.00,
    estado         ENUM('nuevo','visto','completado','cancelado') DEFAULT 'nuevo',
    creado_en      DATETIME     DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (tienda_id) REFERENCES tiendas(id) ON DELETE CASCADE
);
