-- ============================================================
-- SISTEMA DE ANÁLISIS DE PROCUREMENT - FASE 4
-- Creación de Stored Procedure para Tabla Materializada
-- ============================================================

USE procurement_analytics;

DROP PROCEDURE IF EXISTS RefreshMaterializedView;

DELIMITER //

CREATE PROCEDURE RefreshMaterializedView()
BEGIN
    -- 1. Eliminar la tabla si existe
    DROP TABLE IF EXISTS mat_proceso_completo;
    
    -- 2. Crear la tabla clonando los datos de la vista
    CREATE TABLE mat_proceso_completo AS 
    SELECT * FROM v_proceso_completo;
    
    -- 3. Crear índices de alta velocidad para las consultas del dashboard
    ALTER TABLE mat_proceso_completo 
        ADD INDEX idx_fecha_creacion (fecha_creacion),
        ADD INDEX idx_fecha_recepcion (fecha_recepcion),
        ADD INDEX idx_estatus_oc (estatus_orden_compra),
        ADD INDEX idx_proveedor (proveedor),
        ADD INDEX idx_subsidiaria (subsidiaria),
        ADD INDEX idx_comprador (comprador);
        
END //

DELIMITER ;
