-- =============================================================================
-- 08 — PROVEEDORES: ficha + contactos + qué te vende cada uno + precios
-- =============================================================================

CREATE TABLE IF NOT EXISTS proveedores (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    razon_social    VARCHAR(255) NOT NULL,
    nombre_fantasia VARCHAR(255),
    cuit            VARCHAR(20),
    iibb            VARCHAR(20),
    direccion       VARCHAR(255),
    localidad       VARCHAR(120),
    provincia       VARCHAR(80),
    telefono        VARCHAR(40),
    email           VARCHAR(150),
    whatsapp        VARCHAR(25),                   -- para mandarle órdenes de compra por WA!
    web             VARCHAR(255),
    -- Datos comerciales
    condicion_pago  VARCHAR(80),                   -- "Cuenta corriente 30 días", "Contado", etc.
    dias_entrega    INT DEFAULT 1,                 -- cuánto tarda desde OC a entregar
    monto_minimo_pedido DECIMAL(10,2) DEFAULT 0,
    -- Performance / scoring
    score_calidad   TINYINT DEFAULT 50,            -- 0-100
    score_puntualidad TINYINT DEFAULT 50,
    score_precio    TINYINT DEFAULT 50,
    -- Estado
    activo          TINYINT DEFAULT 1,
    notas_internas  TEXT,
    fecha_alta      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX (razon_social),
    INDEX (cuit)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Contactos del proveedor (varios contactos por proveedor: vendedor, dueño, despacho, cobranzas)
CREATE TABLE IF NOT EXISTS proveedores_contactos (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_proveedor    INT NOT NULL,
    nombre          VARCHAR(120) NOT NULL,
    rol             VARCHAR(80),                    -- "Vendedor", "Despacho", "Cobranzas", "Dueño"
    telefono        VARCHAR(40),
    whatsapp        VARCHAR(25),
    email           VARCHAR(150),
    es_principal    TINYINT DEFAULT 0,
    FOREIGN KEY (id_proveedor) REFERENCES proveedores(id) ON DELETE CASCADE,
    INDEX (id_proveedor)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- QUÉ INSUMO TE VENDE CADA PROVEEDOR + precio actual
-- Un mismo insumo puede tener varios proveedores compitiendo
CREATE TABLE IF NOT EXISTS proveedores_insumos (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_proveedor    INT NOT NULL,
    id_insumo       INT NOT NULL,
    codigo_proveedor VARCHAR(60),                  -- código del producto en el proveedor
    nombre_proveedor VARCHAR(120),                 -- cómo lo nombra el proveedor
    -- Precio
    precio_unitario DECIMAL(12,4) NOT NULL,        -- precio por unidad de COMPRA
    -- (ej. si compras por kg, este es $/kg)
    fecha_precio    TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    -- Logística
    presentacion    VARCHAR(80),                    -- "Bolsa 10kg", "Caja x6 packs"
    cantidad_x_presentacion DECIMAL(10,3) DEFAULT 1,
    cantidad_minima_pedido  DECIMAL(10,3) DEFAULT 0,
    -- Preferencia
    es_proveedor_preferido TINYINT DEFAULT 0,
    activo          TINYINT DEFAULT 1,
    UNIQUE KEY uniq_prov_ins (id_proveedor, id_insumo),
    FOREIGN KEY (id_proveedor) REFERENCES proveedores(id) ON DELETE CASCADE,
    FOREIGN KEY (id_insumo)    REFERENCES insumos(id)     ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- HISTÓRICO DE PRECIOS — para ver evolución (kpi importante para negociar)
CREATE TABLE IF NOT EXISTS proveedores_insumos_precios_historico (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_proveedor    INT NOT NULL,
    id_insumo       INT NOT NULL,
    precio_unitario DECIMAL(12,4) NOT NULL,
    fecha           TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    motivo          VARCHAR(120),                   -- "Aumento marzo", "Promo", "Negociación"
    FOREIGN KEY (id_proveedor) REFERENCES proveedores(id) ON DELETE CASCADE,
    FOREIGN KEY (id_insumo)    REFERENCES insumos(id)     ON DELETE CASCADE,
    INDEX (id_proveedor, id_insumo, fecha)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
