IF OBJECT_ID('dbo.sp_fco_gen_reportes_proc') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_gen_reportes_proc
GO
CREATE PROCEDURE dbo.sp_fco_gen_reportes_proc
( 
    @psi_id_rep smallint, 
    @pvc_usuario varchar(30), 
    @pti_cod_rep tinyint, 
    @pch_trab_dde char(10) = '', 
    @pch_trab_hta char(10) = '', 
    @pch_agr_1 char(10) = '', 
    @pch_agr_2 char(10) = '', 
    @pch_agr_3 char(10) = '', 
    @pch_dato_dde char(10) = '', 
    @pch_dato_hta char(10) = '' 
) 
/*************************************************************/ 
/*** Reportes e Interfases de Data Tecnologia              ***/ 
/*** Descripcion: invoca los procedimientos de reportes de ***/ 
/*** acuerdo a los parametros enviados de entrada          ***/ 
/*** Autor: Diana Cecilia Rios Peinado                     ***/ 
/*** Fecha: Mayo 14 de 2005                                ***/ 
/*************************************************************/ 
/*** Pasado a SQL, Diana C. Rios, Septiembre 25/2005 ***/ 
-- Resivado por JCL en DIC-29-06
-- Se mejora lógica al pasar parámetros de año y mes
AS 
DECLARE 
    @vvc_proc_genera varchar(30), 
    @vvc_inter varchar(10), 
    @cvc_valor varchar(20), 
    @cti_tipo tinyint,
    @vnu_len smallint, 
    @vvc_ssql varchar(2000)  
BEGIN--1     
    --trayendo el nombre del procedimiento 
    SET @vvc_proc_genera = '' 
    SET @vnu_len = 0 
    
    SELECT @vvc_proc_genera = proc_generacion 
    FROM fco_reportes 
    WHERE cod_rep = @pti_cod_rep 
    
    SET @vvc_proc_genera = LTrim(RTrim(ISNULL(@vvc_proc_genera,''))) 
    SET @vnu_len = ISNULL(LEN(@vvc_proc_genera),0) 
    
    IF @vnu_len = 0 
    BEGIN 
        SET @vvc_inter = LTrim(RTrim(@pti_cod_rep)) 
        RAISERROR ('Error de datos: No existe la funcion de generacion para el reporte: ', 16, 1, @vvc_inter) 
        RETURN 
    END 
    
    SET @vvc_ssql = 
    'EXECUTE ' + @vvc_proc_genera + ' ' + RTrim(@psi_id_rep) + ',' + 
        '''' + @pvc_usuario + ''',' + RTrim(@pti_cod_rep) + ',' + 
        '''' + RTrim(@pch_trab_dde) + ''',' + 
        '''' + RTrim(@pch_trab_hta) + ''',' + 
        '''' + RTrim(@pch_agr_1) + ''',' + 
        '''' + RTrim(@pch_agr_2) + ''',' + 
        '''' + RTrim(@pch_agr_3) + ''',' + 
        '''' + RTrim(@pch_dato_dde) + ''',' + 
        '''' + RTrim(@pch_dato_hta) + '''' 
    
    DECLARE cr_valores CURSOR FOR 
    SELECT a.valor, p.tipo_campo FROM fco_reportes_proc a
    INNER JOIN fco_reportes_par p ON a.cod_rep = p.cod_rep AND a.orden = p.orden
    WHERE a.id_rep = @psi_id_rep AND a.usuariow = @pvc_usuario AND a.cod_rep = @pti_cod_rep 
    ORDER BY a.orden 

    OPEN cr_valores 
    FETCH cr_valores INTO @cvc_valor, @cti_tipo
    
    WHILE (@@FETCH_STATUS = 0) 
    BEGIN--wh     
        IF @cti_tipo IN (9, 10, 20, 21)
        Begin
            IF ISNUMERIC(@cvc_valor) = 0 SET @cvc_valor = 0
                
            SET @vvc_ssql = @vvc_ssql + ',' + RTrim(@cvc_valor)
        End
        ELSE
            SET @vvc_ssql = @vvc_ssql + ',' + '''' + @cvc_valor + ''''
        
        FETCH cr_valores INTO @cvc_valor, @cti_tipo
    END--wh
    CLOSE cr_valores
    DEALLOCATE cr_valores
    
    EXEC (@vvc_ssql)  
END--1 
GO
GRANT EXECUTE ON dbo.sp_fco_gen_reportes_proc TO PUBLIC
GO
