CREATE OR REPLACE PROCEDURE sp_fco_upd_reportes
(
    pch_compania char,
    pti_relacionado number,
    pti_cod_rep number,
    pvc_descripcion varchar2,
    pti_operacion number DEFAULT 1, --1:alta, 2:modificacion
    pch_operacion char,    
    pvc_nombre_proc varchar2 DEFAULT NULL,
    pvc_proc_borrado varchar2 DEFAULT NULL
)
AS
/********************************************************************/
/*** Reportes e Interfases de Data Tecnologia                     ***/
/*** Descripcion: crea registros en las tablas fco_reportes       ***/
/*** y ri_intefase_cias                                           ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 14 de 2005                                       ***/
/********************************************************************/
  vnm_existe      number(1);
BEGIN

    vnm_existe := 0;
    BEGIN
      SELECT 1
      INTO vnm_existe
      FROM fco_reportes WHERE cod_rep = pti_cod_rep;
      EXCEPTION
         WHEN OTHERS THEN vnm_existe := 0;        
    END;

    IF vnm_existe = 1 THEN --1. 
		  IF pti_operacion = 1 THEN
		      BEGIN
      	     RAISE_APPLICATION_ERROR(-20001,'El codigo del reporte que quiere insertar ya existe. verifique por favor.');
             RETURN;       
		      END;
      END IF;
  		
      IF pti_operacion = 2 THEN
  			      UPDATE fco_reportes 
              SET descripcion = pvc_descripcion,
              proc_generacion = pvc_nombre_proc, 
              proc_borrado = pvc_proc_borrado,
              operacion = pch_operacion
              WHERE cod_rep = pti_cod_rep;		
      END IF;
    
    ELSE
          INSERT INTO fco_reportes (cod_rep, descripcion, proc_generacion, proc_borrado, operacion) VALUES(pti_cod_rep, pvc_descripcion, pvc_nombre_proc, pvc_proc_borrado, pch_operacion);
    END IF;--1

    IF pti_relacionado = 1 THEN--2
      vnm_existe := 0;
      BEGIN
        SELECT 1
        INTO vnm_existe
        FROM fco_reportes_cias WHERE compania = pch_compania AND cod_rep = pti_cod_rep;
        EXCEPTION
                WHEN OTHERS THEN vnm_existe := 0;        
      END;

      IF vnm_existe = 0 THEN--3
         INSERT INTO fco_reportes_cias (compania, cod_rep) VALUES (pch_compania, pti_cod_rep);
      END IF;--3  
        
    ELSE
       DELETE FROM fco_reportes_cias WHERE compania = pch_compania AND cod_rep = pti_cod_rep;
    END IF;--2

    COMMIT WORK;        
    
END;
/
CREATE PUBLIC SYNONYM sp_fco_upd_reportes FOR ADAM.sp_fco_upd_reportes;
GRANT EXECUTE ON sp_fco_upd_reportes TO adama;