IF OBJECT_ID('dbo.sp_fco_alta_proc_reportes_ala') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_alta_proc_reportes_ala
GO
CREATE PROCEDURE dbo.sp_fco_alta_proc_reportes_ala
(
    @pch_compania char(4),
    @pch_codigo char(10),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_eps_fpo char(10),
    @pch_sucursal char(10)
)
AS
BEGIN
    DECLARE
    	@vch_maneja_eps char(1),
    	@vch_maneja_fpo char(1),
    	@vch_maneja_suc char(1),
    	@vch_maneja_iss char(1),
    	@vch_maneja_arp char(1),
    	@vvc_EPS varchar(10),
    	@vvc_FPO varchar(10),
    	@vvc_SUC varchar(10),
    	@vsi_secuencia smallint

	/* Obtiene el parametro para agrupacion de la EPS */
    SELECT @vvc_EPS = ISNULL(dato, 'EPS') 
    FROM vw_fdt_parametros 
    WHERE pais = 'COL' 
      AND compania = @pch_compania 
      AND parametro = 'autoliq' 
      AND secuencia = 21

	/* Obtiene el parametro para agrupacion de la FPO */
    SELECT @vvc_FPO = ISNULL(dato, 'FPO') 
    FROM vw_fdt_parametros 
    WHERE pais = 'COL' 
      AND compania = @pch_compania 
      AND parametro = 'autoliq' 
      AND secuencia = 22

	/* Obtiene el parametro para agrupacion de la SUC */
    SELECT @vvc_SUC = ISNULL(dato, 'SUC') 
    FROM vw_fdt_parametros 
    WHERE pais = 'COL' 
      AND compania = @pch_compania 
      AND parametro = 'autoliq' 
      AND secuencia = 23

	/* Halla la secuencia siguiente -para mantener orden en el spread-*/
	SELECT @vsi_secuencia = ISNULL(Max(secuencia), 0) FROM fco_proc_reportes_ala
    SET @vsi_secuencia = ISNULL(Max(@vsi_secuencia),0) + 1


    /* Hallar que maneja el reporte */
    SELECT 
        @vch_maneja_eps = ISNULL(maneja_eps,'0'), 
        @vch_maneja_fpo = ISNULL(maneja_fpo,'0'), 
        @vch_maneja_suc = ISNULL(maneja_suc,'0'), 
        @vch_maneja_iss = ISNULL(maneja_iss,'0'), 
        @vch_maneja_arp = ISNULL(maneja_arp,'0')
    FROM fco_reportes_ala
    WHERE codigo = @pch_codigo

	/* AQUI COMIENZA LA ACCION */
	/* CASOS DE REPORTE */
    /* CASO 0 - ES UN REPORTE DE ARP */
    IF @vch_maneja_arp = '1'
    BEGIN
        IF @vch_maneja_suc = '1' /* CASO 0 CON SUCURSALES */
        BEGIN
            IF ISNULL(RTrim(@pch_sucursal) + '0', '0') <> '0'
            BEGIN /* LLEGA LA SUCURSAL */
                DELETE fco_proc_reportes_ala
                WHERE compania = @pch_compania AND codigo = @pch_codigo
                  AND anio = @psi_anio AND mes = @pti_mes
                  AND eps_fpo = 'ARP' AND sucursal = @pch_sucursal
                
                INSERT INTO fco_proc_reportes_ala
                (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
                VALUES 
                (@pch_compania, @pch_codigo, @psi_anio, @pti_mes, 'ARP', @pch_sucursal, '0', @vsi_secuencia)
            END
            ELSE /* SUCURSAL VACIA, GENERAR PARA TODAS */
            BEGIN
                DELETE fco_proc_reportes_ala
                WHERE compania = @pch_compania AND codigo = @pch_codigo
                  AND anio = @psi_anio AND mes = @pti_mes
                  AND eps_fpo = 'ARP'
                
                INSERT INTO fco_proc_reportes_ala 
                (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
                SELECT @pch_compania, @pch_codigo, @psi_anio, @pti_mes, 'ARP', sucursal, '0', @vsi_secuencia
                FROM vw_fco_sucursales
                WHERE compania = @pch_compania AND autoliquida = 1
            END
        END
        ELSE
        BEGIN /* CASO 0 SIN SUCURSALES */
            DELETE fco_proc_reportes_ala
            WHERE compania = @pch_compania AND codigo = @pch_codigo
              AND anio = @psi_anio AND mes = @pti_mes
              AND eps_fpo = 'ARP'
            
            INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, procesar, secuencia)
            VALUES (@pch_compania, @pch_codigo, @psi_anio, @pti_mes, 'ARP', '0', @vsi_secuencia)
        END
    END
    
    /* CASO 1 - ES UN REPORTE PARA EL ISS */
    IF @vch_maneja_iss = '1'
    BEGIN
        IF @vch_maneja_suc = '1' /* CASO 1 CON SUCURSALES */
        BEGIN
            IF ISNULL(RTrim(@pch_sucursal) + '0', '0') <> '0' /* LLEGA LA SUCURSAL */
            BEGIN
                DELETE fco_proc_reportes_ala
                WHERE compania = @pch_compania AND codigo = @pch_codigo
                  AND anio = @psi_anio AND mes = @pti_mes
                  AND eps_fpo = 'ISS' AND sucursal = @pch_sucursal
                
                INSERT INTO fco_proc_reportes_ala
                (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
                VALUES (@pch_compania, @pch_codigo, @psi_anio, @pti_mes, 'ISS', @pch_sucursal, '0', @vsi_secuencia)
            END
            ELSE /* SUCURSAL VACIA, GENERAR PARA TODAS */
            BEGIN
                DELETE fco_proc_reportes_ala
                WHERE compania = @pch_compania AND codigo = @pch_codigo
                  AND anio = @psi_anio AND mes = @pti_mes
                  AND eps_fpo = 'ISS'
                
                INSERT INTO fco_proc_reportes_ala
                (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
                SELECT @pch_compania, @pch_codigo, @psi_anio, @pti_mes, @pch_eps_fpo, sucursal, '0', @vsi_secuencia
                FROM vw_fco_sucursales
                WHERE compania = @pch_compania AND autoliquida = 1
            END
        END
        ELSE
        BEGIN /* CASO 1 SIN SUCURSALES */
            DELETE fco_proc_reportes_ala
            WHERE compania = @pch_compania AND codigo = @pch_codigo
              AND anio = @psi_anio AND mes = @pti_mes
              AND eps_fpo = 'ISS'
            
            INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, procesar, secuencia)
            VALUES (@pch_compania, @pch_codigo, @psi_anio, @pti_mes, @pch_eps_fpo, '0', @vsi_secuencia)
        END
    END
    
    /* CASO A - REPORTE DE EPS (o FPO) POR SUCURSAL, LLEGA LA EPS (o FPO) Y LA SUCURSAL */
    IF (@vch_maneja_eps = '1' AND @vch_maneja_suc = '1' AND ISNULL(LEN(RTrim(@pch_eps_fpo)), 0) > 0 AND ISNULL(LEN(RTrim(@pch_sucursal)), 0) > 0) 
     OR(@vch_maneja_fpo = '1' AND @vch_maneja_suc = '1' AND ISNULL(LEN(RTrim(@pch_eps_fpo)), 0) > 0 AND ISNULL(LEN(RTrim(@pch_sucursal)), 0) > 0)
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
          AND eps_fpo = @pch_eps_fpo AND sucursal = @pch_sucursal
    
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        VALUES (@pch_compania, @pch_codigo, @psi_anio, @pti_mes, @pch_eps_fpo, @pch_sucursal, '0', @vsi_secuencia)
    END
    /**********/
    
    /* CASO B - REPORTE DE EPS POR SUCURSAL, NO LLEGA LA EPS Y LA SUCURSAL SI */
    IF @vch_maneja_eps = '1' AND @vch_maneja_suc = '1' AND ISNULL(LEN(RTrim(@pch_eps_fpo)),0) = 0 AND ISNULL(LEN(RTrim(@pch_sucursal)),0) > 0
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
          AND sucursal = @pch_sucursal
    
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        SELECT @pch_compania, @pch_codigo, @psi_anio, @pti_mes, codigo, @pch_sucursal, '0', @vsi_secuencia
        FROM fco_administradoras
        WHERE tipo = 'EPS'
    END
    /**********/
    
    /* CASO C - REPORTE DE EPS (o FPO) POR SUCURSAL, LLEGA LA EPS (o FPO) Y LA SUCURSAL NO */
    IF (@vch_maneja_eps = '1' AND @vch_maneja_suc = '1' AND ISNULL(LEN(RTrim(@pch_eps_fpo)), 0) > 0 AND ISNULL(LEN(RTrim(@pch_sucursal)), 0) = 0) 
     OR(@vch_maneja_fpo = '1' AND @vch_maneja_suc = '1' AND ISNULL(LEN(RTrim(@pch_eps_fpo)), 0) > 0 AND ISNULL(LEN(RTrim(@pch_sucursal)), 0) = 0)
    BEGIN 
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
          AND eps_fpo = @pch_eps_fpo
    
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        SELECT @pch_compania, @pch_codigo, @psi_anio, @pti_mes, @pch_eps_fpo, sucursal, '0', @vsi_secuencia
        FROM vw_fco_sucursales WHERE compania = @pch_compania AND autoliquida = 1
    END
    /**********/
    
    /* CASO D - REPORTE DE EPS POR SUCURSAL, NO LLEGAN NI LA EPS NI LA SUCURSAL */
    IF @vch_maneja_eps = '1' AND @vch_maneja_suc = '1' AND  ISNULL(LEN(RTrim(@pch_eps_fpo)), 0) = 0 AND ISNULL(LEN(RTrim(@pch_sucursal)), 0) = 0
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
        
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        SELECT @pch_compania, @pch_codigo, @psi_anio, @pti_mes, b.codigo, a.sucursal, '0', @vsi_secuencia
        FROM vw_fco_sucursales a, fco_administradoras b
        WHERE a.compania = @pch_compania AND a.autoliquida = 1 AND b.tipo = 'EPS'
    END
    /**********/
    
    /* CASO E - REPORTE DE EPS (o FPO) CONSOLIDADO, LLEGA LA EPS (o FPO) */
    IF (@vch_maneja_eps = '1' AND @vch_maneja_suc = '0' AND ISNULL(LEN(RTrim(@pch_eps_fpo)),0) > 0) 
     OR(@vch_maneja_fpo = '1' AND @vch_maneja_suc = '0' AND ISNULL(LEN(RTrim(@pch_eps_fpo)),0) > 0)
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
          AND eps_fpo = @pch_eps_fpo
    
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        VALUES (@pch_compania, @pch_codigo, @psi_anio, @pti_mes, @pch_eps_fpo, '', '0', @vsi_secuencia)
    END
    /**********/
    
    /* CASO F - REPORTE DE EPS CONSOLIDADO Y NO LLEGA LA EPS */
    IF @vch_maneja_eps = '1' AND @vch_maneja_suc = '0' AND ISNULL(RTrim(@pch_eps_fpo) + '', '') = ''
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
        AND anio = @psi_anio AND mes = @pti_mes
        
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        SELECT @pch_compania, @pch_codigo, @psi_anio, @pti_mes, codigo, '', '0', @vsi_secuencia
        FROM fco_administradoras WHERE tipo = 'EPS'
    END
    /**********/
    
    /* CASO G - REPORTE DE FPO POR SUCURSAL, NO LLEGA EL FPO Y LA SUCURSAL SI */
    IF @vch_maneja_fpo = '1' AND @vch_maneja_suc = '1' AND ISNULL(RTrim(@pch_eps_fpo) + '', '') = '' AND ISNULL(RTrim(@pch_sucursal) + '', '') <> ''
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
          AND sucursal = @pch_sucursal
    
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        SELECT @pch_compania, @pch_codigo, @psi_anio, @pti_mes, codigo, @pch_sucursal, '0', @vsi_secuencia
        FROM fco_administradoras
        WHERE tipo = 'AFP'
    END
    /**********/
    
    /* CASO H - REPORTE DE FPO POR SUCURSAL, NO LLEGAN NI EL FPO NI LA SUCURSAL */
    IF @vch_maneja_fpo = '1' AND @vch_maneja_suc = '1' AND ISNULL(RTrim(@pch_eps_fpo) + '','') = '' AND ISNULL(RTrim(@pch_sucursal) + '', '') =''
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
    
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        SELECT @pch_compania,@pch_codigo,@psi_anio,@pti_mes,b.codigo, a.sucursal, '0', @vsi_secuencia
        FROM vw_fco_sucursales a, fco_administradoras b
        WHERE a.compania = @pch_compania AND a.autoliquida = 1 AND b.tipo = 'AFP'
    END
    /**********/
    
    /* CASO I - REPORTE DE FPO CONSOLIDADO Y NO LLEGA EL FPO */
    IF @vch_maneja_fpo = '1' AND @vch_maneja_suc = '0' AND ISNULL(RTrim(@pch_eps_fpo) + '', '') = ''
    BEGIN
        DELETE fco_proc_reportes_ala
        WHERE compania = @pch_compania AND codigo = @pch_codigo
          AND anio = @psi_anio AND mes = @pti_mes
    
        INSERT INTO fco_proc_reportes_ala (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
        SELECT @pch_compania,@pch_codigo,@psi_anio,@pti_mes,codigo,'','0', @vsi_secuencia
        FROM fco_administradoras WHERE tipo ='AFP'
    END
    /**********/
END
GO
GRANT EXECUTE ON sp_fco_alta_proc_reportes_ala TO PUBLIC
GO
