CREATE OR REPLACE PROCEDURE sp_fco_alta_administradora
(
    pch_codigo    char,
    pch_registro_fiscal    char,
    pch_digito_verificacion  char,
    pch_direccion  char,
    pch_telefono  char,
    pch_cod_super  char,
    pch_cod_alterno  char,
    pch_tipo   char,
    pch_agrupacion  char,
    pch_forma_presentacion char,
    pch_descripcion  char,
    pch_departamento char,
    pch_municipio char
)
AS
    v_bandera    number(1);
    vti_existe   number(1);
BEGIN

  vti_existe := 0;
  BEGIN
    SELECT 1 INTO vti_existe
    FROM fco_administradoras
    WHERE codigo = pch_codigo And tipo = pch_tipo;
  EXCEPTION
     WHEN OTHERS THEN vti_existe := 0;	
  END;
  
  IF vti_existe = 1 THEN
  BEGIN
  	UPDATE fco_administradoras
  	SET 	registro_fiscal = pch_registro_fiscal,
  		digito_verificacion = pch_digito_verificacion,
  		direccion = pch_direccion,
  		telefono = pch_telefono,
  		cod_super = pch_cod_super,
  		cod_alterno = pch_cod_alterno,
  		forma_presentacion = pch_forma_presentacion,
		departamento = pch_departamento,
 		municipio = pch_municipio
  	WHERE
  		rtrim(ltrim(codigo)) = rtrim(ltrim(pch_codigo)) And
  		tipo   = pch_tipo;
	EXCEPTION
		WHEN OTHERS THEN
		raise_application_error(-20001, 'Error al tratar de cambiar en la tabla [fco_administradoras]');
		return;
	END;    
      
        sp_cambio_datos_agr_trab(pch_agrupacion, pch_codigo, pch_descripcion);
  ELSE
  BEGIN
    INSERT INTO fco_administradoras 
    (codigo, registro_fiscal, digito_verificacion, direccion, telefono, cod_super, cod_alterno,
     tipo, agrupacion, forma_presentacion, departamento, municipio)
    VALUES (pch_codigo, pch_registro_fiscal, pch_digito_verificacion, pch_direccion, 
    pch_telefono, pch_cod_super, pch_cod_alterno, pch_tipo, pch_agrupacion, pch_forma_presentacion, pch_departamento, pch_municipio);
	EXCEPTION
		WHEN OTHERS THEN
		raise_application_error(-20001, 'Error al tratar de insertar en la tabla [fco_administradoras]. Revise que el código exista en la tabla [datos_agr_trab]');
		return;
	END;       

    v_bandera := 0;

    SELECT 1 INTO v_bandera
    FROM datos_agr_trab
    WHERE agrupacion = pch_agrupacion And
          dato = pch_codigo;

    IF v_bandera = 1  THEN
        sp_cambio_datos_agr_trab (pch_agrupacion, pch_codigo, pch_descripcion);
    ELSE
        sp_alta_datos_agr_trab (pch_agrupacion, pch_codigo, pch_descripcion);
    END IF;
  END IF;
  
  COMMIT WORK;
END;
/
CREATE PUBLIC SYNONYM sp_fco_alta_administradora FOR ADAM.sp_fco_alta_administradora;
GRANT EXECUTE ON sp_fco_alta_administradora TO adama;

