begin;

CREATE OR REPLACE FUNCTION script.snap_trabajos_geom(geom_fija geometry,nom_tabla varchar) RETURNS boolean AS $$
/*Autor: Gaspar Mora Navarro. Universidad Politécnica de Valecncia.
	Snapa las fincas del srcXXXXX.fincas, o ed_srcXXXXX.ed_fincas sobre la finca de geometria geom_fija. Luego snapa los demás elementos de cada trabajo snapado.
	Utiliza como distancia de snap el valor dist_snap_trabajos, de la tabla dom.cfg_tamanos

Parámetros:
	geom_fija geometry:geometría de la finca de referencia
	nom_tabla varchar:tabla con las fincas a snapar, incluido el esquema
Return:
	True si llega al final de la función
	Raise exception si hay algún problema
*/
DECLARE
	cur refcursor;
	registro record;
	id_trab integer;
	distancia_busc double precision;
	tipo_tr_snapar varchar;
	resp boolean;
BEGIN
	select dist_snap_trabajos into distancia_busc from dom.cfg_tamanos where id>0;
	if not found then
		raise exception 'Hay un problema con la tabla dom.cfg_tamanos y el valor del campo dist_snap_trabajos';
	end if;
	if substring(nom_tabla,1,3)='ed_' then
		tipo_tr_snapar:='edicion';
	else
		tipo_tr_snapar:='definitivo';
	end if;
	cur:=script.select_trab_cerca_geom(geom_fija, nom_tabla, distancia_busc);
	loop
		fetch cur into registro;
		exit when not found;
		raise notice 'id: %', registro.id_trabajo;
		resp:=script.snap_trabajo_a2b_geom(registro.id_trabajo,tipo_tr_snapar, geom_fija, distancia_busc);
	end loop;
	close cur;
	return true;
END;
$$ LANGUAGE 'plpgsql';

commit;

