CREATE OR REPLACE PROCEDURE sp_fco_cambio_sucursales
(
    i_compania		char,
    i_sucursal	    	char,
    i_descripcion  	varchar2,
    i_direccion    	varchar2,
    i_cod_dpto     	char,
    i_cod_ciudad   	char,
    i_telefono     	varchar2,
    i_fax          	varchar2,
    i_nombre_retenedor 	varchar2,
    i_cedula_retenedor 	varchar2,
    i_agencias    	varchar2,
    i_codigo_iss  	char,
    i_autoliquida       number
)
AS
	vnm_existe	number(1);
  vch_agr char(10);  
BEGIN
	vnm_existe := 0;
	BEGIN
      SELECT 1 INTO vnm_existe 
      FROM fco_sucursales
      WHERE compania = i_compania And
      RTrim(sucursal) = RTrim(i_sucursal);
	EXCEPTION
		WHEN NO_DATA_FOUND THEN vnm_existe := 0;
	END;

	IF vnm_existe = 0 THEN --no existe
    sp_fco_alta_sucursales(i_compania, i_sucursal, i_descripcion, i_direccion, i_cod_dpto, 
        i_cod_ciudad, i_telefono, i_fax, i_nombre_retenedor, i_cedula_retenedor, 
        i_agencias, i_codigo_iss, i_autoliquida);
  ELSE
    BEGIN
      SELECT NVL(dato, 'SUC')
      INTO vch_agr
      FROM vw_fdt_parametros 
      WHERE pais = 'COL' 
        AND compania = i_compania 
        AND parametro = 'autoliq' 
        AND secuencia = 23;
  	EXCEPTION
  			WHEN OTHERS THEN vch_agr := 'SUC';	
    END;
      
    vnm_existe := 0;
    BEGIN
      SELECT 1 INTO vnm_existe
      FROM datos_agr_trab
      WHERE agrupacion = vch_agr
      AND dato = i_sucursal;
  	EXCEPTION
  			WHEN OTHERS THEN vnm_existe := 0;	
    END;
  
    IF vnm_existe = 1 THEN
          sp_cambio_datos_agr_trab(vch_agr, i_sucursal, i_descripcion);
    ELSE
          sp_alta_datos_agr_trab(vch_agr, i_sucursal, i_descripcion);
    END IF;
  	
  	BEGIN
	    	UPDATE fco_sucursales
    		SET descripcion = i_descripcion,
        	direccion = i_direccion, 
        	cod_dpto = i_cod_dpto,
        	cod_ciudad = i_cod_ciudad,
        	telefono = i_telefono,
        	fax = i_fax,
        	nombre_retenedor = i_nombre_retenedor,
        	cedula_retenedor = i_cedula_retenedor,
        	agencias = i_agencias,
        	codigo_iss = i_codigo_iss,
		autoliquida = i_autoliquida
    		WHERE
        	compania = i_compania And
        	sucursal = i_sucursal;
  	EXCEPTION
  		WHEN OTHERS THEN
  		raise_application_error(-20001, 'Error al actualizar la tabla [fco_sucursales]');
  		return;
  	END;
 	END IF; --no existe

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

