-- Ejecutar este script directamente en MySQL (sin migraciones Laravel)
-- Crea tablas para catalogo de tipos de venta y su relacion N:N con tiendas.

CREATE TABLE IF NOT EXISTS ventas_tipo (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    codigo VARCHAR(30) NOT NULL,
    nombre VARCHAR(150) NOT NULL,
    descripcion VARCHAR(255) NULL,
    created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uq_ventas_tipo_codigo (codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS ventas_tipo_tiendas (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    venta_tipo_id BIGINT UNSIGNED NOT NULL,
    tienda_id BIGINT UNSIGNED NOT NULL,
    created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uq_ventas_tipo_tienda (venta_tipo_id, tienda_id),
    KEY idx_ventas_tipo_tiendas_tienda_id (tienda_id),
    CONSTRAINT fk_ventas_tipo_tiendas_venta_tipo
        FOREIGN KEY (venta_tipo_id)
        REFERENCES ventas_tipo (id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS ventas_tipo_stock_tiendas (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    venta_tipo_id BIGINT UNSIGNED NOT NULL,
    tienda_id BIGINT UNSIGNED NOT NULL,
    created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uq_ventas_tipo_stock_tienda (venta_tipo_id, tienda_id),
    KEY idx_ventas_tipo_stock_tiendas_tienda_id (tienda_id),
    CONSTRAINT fk_ventas_tipo_stock_tiendas_venta_tipo
        FOREIGN KEY (venta_tipo_id)
        REFERENCES ventas_tipo (id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Nota:
-- No se agrega FK a tiendas por compatibilidad con esquemas legacy donde el tipo de id puede variar.
-- Si en tu BD tiendas.id es BIGINT UNSIGNED, puedes agregar:
-- ALTER TABLE ventas_tipo_tiendas
--   ADD CONSTRAINT fk_ventas_tipo_tiendas_tienda
--   FOREIGN KEY (tienda_id) REFERENCES tiendas(id)
--   ON DELETE CASCADE ON UPDATE CASCADE;
--
-- ALTER TABLE ventas_tipo_stock_tiendas
--   ADD CONSTRAINT fk_ventas_tipo_stock_tiendas_tienda
--   FOREIGN KEY (tienda_id) REFERENCES tiendas(id)
--   ON DELETE CASCADE ON UPDATE CASCADE;
