CREATE OR REPLACE PROCEDURE sp_fco_alta_proc_reportes_ala
(
  i_compania	char,
  i_codigo        char,
  i_anio          smallint,
  i_mes           smallint,
  i_eps_fpo       char,
  i_sucursal      char
)
AS
	w_maneja_eps char(1);
	w_maneja_fpo char(1);
	w_maneja_suc char(1);
	w_maneja_iss char(1);
	w_maneja_arp char(1);
	w_EPS varchar2(10);
	w_FPO varchar2(10);
	w_SUC varchar2(10);
	w_secuencia number(5,0);
BEGIN
	/* Obtiene el parametro para agrupacion de la EPS */
	BEGIN
		SELECT  NVL(dato,'EPS') INTO w_EPS
		FROM vw_fdt_parametros 
		WHERE pais = 'COL' 
    AND compania = i_compania 
		AND parametro = 'autoliq' 
		AND secuencia = 21;
	EXCEPTION
		WHEN NO_DATA_FOUND THEN w_EPS := 'EPS';
	END;

	/* Obtiene el parametro para agrupacion de la FPO */
	BEGIN
		SELECT  NVL(dato,'FPO') INTO w_FPO
		FROM vw_fdt_parametros 
		WHERE pais = 'COL' 
    AND compania = i_compania 
		AND parametro = 'autoliq' 
		AND secuencia = 22;
	EXCEPTION
		WHEN NO_DATA_FOUND THEN w_FPO := 'FPO';
	END;

	/* Obtiene el parametro para agrupacion de la SUC */
	BEGIN
		SELECT  NVL(dato,'SUC') INTO w_SUC
		FROM vw_fdt_parametros 
		WHERE pais = 'COL' 
    AND compania = i_compania 
		AND parametro = 'autoliq' 
		AND secuencia = 23;
	EXCEPTION
		WHEN NO_DATA_FOUND THEN w_SUC := 'SUC';
	END;


	/* Halla la secuencia siguiente -para mantener orden en el spread-*/
	SELECT NVL(Max(secuencia),0)+1 INTO w_secuencia FROM fco_proc_reportes_ala;


	/* AQUI COMIENZA LA ACCION */
	 /* Hallar que maneja el reporte */
    SELECT  NVL(maneja_eps,'0'), NVL(maneja_fpo,'0'), 
    NVL(maneja_suc,'0'), NVL(maneja_iss,'0'), 
    NVL(maneja_arp,'0')
    INTO w_maneja_eps, w_maneja_fpo, W_maneja_suc, w_maneja_iss, w_maneja_arp
    FROM fco_reportes_ala
    WHERE codigo = i_codigo;

	/* CASOS DE REPORTE */

        /* CASO 0 */
        IF w_maneja_arp = '1' THEN
             /* CASO 0 CON SUCURSALES */
          IF w_maneja_suc = '1' THEN
               IF Nvl(i_sucursal || '0','0') <> '0' THEN
                    Delete fco_proc_reportes_ala
                    WHERE compania=i_compania AND codigo=i_codigo
                    AND anio = i_anio AND mes = i_mes
                    AND eps_fpo = 'ARP' AND sucursal = i_sucursal;
               
                    INSERT INTO fco_proc_reportes_ala
                    (compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
                    VALUES (i_compania, i_codigo, i_anio, i_mes, 'ARP', i_sucursal, '0', w_secuencia);
               ELSE
                    Delete fco_proc_reportes_ala
                    WHERE compania=i_compania AND codigo=i_codigo
                    AND anio = i_anio AND mes = i_mes
                    AND eps_fpo = 'ARP';

                    INSERT INTO fco_proc_reportes_ala
                    SELECT i_compania, i_codigo, i_anio, i_mes, 'ARP', sucursal,'0', w_secuencia
                    From vw_fco_sucursales_cia
                    WHERE compania = i_compania;
                 	END IF;
          ELSE
            /* CASO 0 SIN SUCURSALES */
              Delete fco_proc_reportes_ala
              WHERE compania=i_compania AND codigo=i_codigo
              AND anio = i_anio AND mes = i_mes
              AND eps_fpo = 'ARP';
            
            	INSERT INTO fco_proc_reportes_ala
             	(compania, codigo, anio, mes, EPS_FPO, procesar, secuencia)
              VALUES (i_compania, i_codigo, i_anio, i_mes, 'ARP', '0', w_secuencia);
          END IF;
		COMMIT WORK;
	END IF;        
        
        /* CASO 1 */
        IF w_maneja_iss = '1' THEN
		/*IF i_eps_fpo= '' THEN 
			i_eps_fpo :='ISS';
		END IF;*/
             
        	/* CASO 1 CON SUCURSALES */
                IF w_maneja_suc = '1' THEN
	                IF Nvl(i_sucursal || '0','0') <> '0' THEN
                        Delete fco_proc_reportes_ala
                        WHERE compania=i_compania AND codigo=i_codigo
                        AND anio = i_anio AND mes = i_mes
                        AND eps_fpo = 'ISS' AND sucursal = i_sucursal;
                  
                     		INSERT INTO fco_proc_reportes_ala
                     		(compania, codigo, anio, mes, EPS_FPO, sucursal, procesar, secuencia)
                        VALUES (i_compania, i_codigo, i_anio, i_mes, 'ISS', i_sucursal, '0', w_secuencia);
                  	ELSE
                        Delete fco_proc_reportes_ala
                        WHERE compania=i_compania AND codigo=i_codigo
                        AND anio = i_anio AND mes = i_mes
                        AND eps_fpo = 'ISS';

                        INSERT INTO fco_proc_reportes_ala
                     		SELECT i_compania, i_codigo, i_anio, i_mes, i_eps_fpo, sucursal,'0', w_secuencia
                     		From vw_fco_sucursales_cia
                     		WHERE compania = i_compania;
                   	END IF;
                ELSE
                  Delete fco_proc_reportes_ala
                  WHERE compania=i_compania AND codigo=i_codigo
                  AND anio = i_anio AND mes = i_mes
                  AND eps_fpo = 'ISS';

               		/* CASO 1 SIN SUCURSALES */
                  INSERT INTO fco_proc_reportes_ala
                  (compania, codigo, anio, mes, EPS_FPO, procesar, secuencia)
                  VALUES (i_compania, i_codigo, i_anio, i_mes, i_eps_fpo, '0', w_secuencia);
               	End IF;
		COMMIT WORK;
	END IF;
                
        /* CASO A */
        IF (w_maneja_eps = '1' and w_maneja_suc = '1' AND Nvl(Length(i_eps_fpo),0) > 0 AND Nvl(Length(i_sucursal),0) > 0) OR
           (w_maneja_fpo = '1' and w_maneja_suc = '1' AND Nvl(Length(i_eps_fpo),0) > 0 AND Nvl(Length(i_sucursal),0) > 0) THEN 
            Delete fco_proc_reportes_ala
            WHERE compania=i_compania AND codigo=i_codigo
            AND anio = i_anio AND mes = i_mes
            AND eps_fpo = i_eps_fpo AND sucursal = i_sucursal;
                       
            INSERT INTO fco_proc_reportes_ala
            VALUES (i_compania, i_codigo, i_anio, i_mes, i_eps_fpo, i_sucursal, '0', w_secuencia);
		COMMIT WORK;
        END IF;
        /**********/
        
        /* CASO B */
        IF w_maneja_eps = '1' and w_maneja_suc = '1' AND Nvl(Length(i_eps_fpo),0) = 0 and Nvl(Length(i_sucursal),0) > 0 THEN
            Delete fco_proc_reportes_ala
            WHERE compania=i_compania AND codigo=i_codigo
            AND anio = i_anio AND mes = i_mes
            AND sucursal = i_sucursal;
                       
            INSERT INTO fco_proc_reportes_ala
           	SELECT i_compania, i_codigo, i_anio, i_mes, codigo, i_sucursal, '0', w_secuencia
           	FROM fco_administradoras
           	WHERE tipo='EPS';
		COMMIT WORK;
        END IF;
        /**********/
        
        /* CASO C */
        IF (w_maneja_eps = '1' and w_maneja_suc = '1' and Nvl(Length(i_eps_fpo),0) > 0 and Nvl(Length(i_sucursal),0) = 0) OR
	   (w_maneja_fpo = '1' and w_maneja_suc = '1' and Nvl(Length(i_eps_fpo),0) > 0 and Nvl(Length(i_sucursal),0) = 0)  THEN
            Delete fco_proc_reportes_ala
            WHERE compania=i_compania AND codigo=i_codigo
            AND anio = i_anio AND mes = i_mes
            AND eps_fpo = i_eps_fpo;
                       
            INSERT INTO fco_proc_reportes_ala
            SELECT i_compania,i_codigo,i_anio,i_mes,i_eps_fpo,sucursal,'0', w_secuencia
            From vw_fco_sucursales_cia
            WHERE compania = i_compania;
		COMMIT WORK;
	END IF;
        /**********/
        
        /* CASO D */
        IF w_maneja_eps = '1' and w_maneja_suc = '1' AND  Nvl(Length(i_eps_fpo),0) = 0 and Nvl(Length(i_sucursal),0) = 0 THEN
            Delete fco_proc_reportes_ala
            WHERE compania=i_compania AND codigo=i_codigo
            AND anio = i_anio AND mes = i_mes;
                       
            INSERT INTO fco_proc_reportes_ala
            SELECT i_compania,i_codigo,i_anio,i_mes, b.codigo, a.sucursal, '0', w_secuencia
            FROM vw_fco_sucursales_cia a, fco_administradoras b
            WHERE a.compania = i_compania And
            b.tipo='EPS';
		COMMIT WORK;
	END IF;
        /**********/
        
        /* CASO E */
        IF (w_maneja_eps = '1' and w_maneja_suc = '0' and Nvl(Length(i_eps_fpo),0) > 0) OR
	   (w_maneja_fpo = '1' and w_maneja_suc = '0' and Nvl(Length(i_eps_fpo),0) > 0)  THEN
          Delete fco_proc_reportes_ala
          WHERE compania=i_compania AND codigo=i_codigo
          AND anio = i_anio AND mes = i_mes
          AND eps_fpo = i_eps_fpo;

          INSERT INTO fco_proc_reportes_ala
          VALUES (i_compania, i_codigo, i_anio, i_mes, i_eps_fpo,'', '0', w_secuencia);
		COMMIT WORK;
	END IF;
        /**********/
        
        /* CASO F */
        IF w_maneja_eps = '1' and w_maneja_suc = '0' AND NVL(i_eps_fpo,'VACIO') = 'VACIO' THEN
            Delete fco_proc_reportes_ala
            WHERE compania=i_compania AND codigo=i_codigo
            AND anio = i_anio AND mes = i_mes;
                       
            INSERT INTO fco_proc_reportes_ala
            SELECT i_compania,i_codigo,i_anio,i_mes,codigo,'','0', w_secuencia
            FROM fco_administradoras WHERE tipo='EPS';
		COMMIT WORK;
	END IF;
        /**********/
        
        /* CASO G */
        IF w_maneja_fpo = '1' and w_maneja_suc = '1' AND NVL(i_eps_fpo,'VACIO') = 'VACIO' and i_sucursal <> '' THEN
            Delete fco_proc_reportes_ala
            WHERE compania=i_compania AND codigo=i_codigo
            AND anio = i_anio AND mes = i_mes
            AND sucursal = i_sucursal;
                       
            INSERT INTO fco_proc_reportes_ala
            SELECT i_compania, i_codigo, i_anio, i_mes, codigo, i_sucursal, '0', w_secuencia
            FROM fco_administradoras
            WHERE tipo='AFP';
		COMMIT WORK;
	END IF;
        /**********/
        
        /* CASO H */
        IF w_maneja_fpo = '1' and w_maneja_suc = '1' AND NVL(i_eps_fpo,'VACIO') = 'VACIO' and i_sucursal ='' THEN
          Delete fco_proc_reportes_ala
          WHERE compania=i_compania AND codigo=i_codigo
          AND anio = i_anio AND mes = i_mes;
                       
          INSERT INTO fco_proc_reportes_ala
          SELECT i_compania,i_codigo,i_anio,i_mes,b.codigo,a.sucursal,'0', w_secuencia
          FROM vw_fco_sucursales_cia a, fco_administradoras b
          WHERE a.compania = i_compania And
          b.tipo = 'AFP';
		COMMIT WORK;
	END IF;
        /**********/
        
        /* CASO I */
        IF w_maneja_fpo = '1' and w_maneja_suc = '0' AND NVL(i_eps_fpo,'VACIO') = 'VACIO' THEN
          Delete fco_proc_reportes_ala
          WHERE compania=i_compania AND codigo=i_codigo
          AND anio = i_anio AND mes = i_mes;
                       
          INSERT INTO fco_proc_reportes_ala
         	SELECT i_compania,i_codigo,i_anio,i_mes,codigo,'','0', w_secuencia
         	FROM fco_administradoras WHERE tipo ='AFP';
        	COMMIT WORK;       
	END IF;
       	/**********/
END;
/
CREATE PUBLIC SYNONYM sp_fco_alta_proc_reportes_ala FOR ADAM.sp_fco_alta_proc_reportes_ala;
GRANT EXECUTE ON sp_fco_alta_proc_reportes_ala TO adama;


