  LANGUAGE plpgsql
  IMMUTABLE
 AS $function$
---fonction permettant de vérifier la cohérence d'une donnée d'occurrence en s'assurant que son altitude se trouve entièrement comprise dans la fourchette altitudinale valide du taxon en question
+--fonction permettant de vérifier la cohérence d'une donnée d'occurrence en s'assurant que 
+-- son altitude se trouve entièrement comprise dans la fourchette altitudinale valide du taxon en question
   DECLARE 
-    mycdref integer := t.cd_ref FROM taxonomie.taxref t JOIN gn_synthese.synthese s ON s.cd_nom=t.cd_nom WHERE s.id_synthese=myidsynthese;
+    mycdref integer := t.cd_ref 
+	FROM taxonomie.taxref t 
+	JOIN gn_synthese.synthese s ON s.cd_nom=t.cd_nom 
+	WHERE s.id_synthese=myidsynthese;
   BEGIN
-     IF (SELECT altitude_min FROM gn_synthese.synthese WHERE id_synthese=myidsynthese)>=(SELECT altitude_min FROM gn_profiles.vm_valid_profiles WHERE cd_ref=mycdref)
-     AND  (SELECT altitude_max FROM gn_synthese.synthese WHERE id_synthese=myidsynthese)<=(SELECT altitude_max FROM gn_profiles.vm_valid_profiles WHERE cd_ref=mycdref)
+     IF (
+		 SELECT altitude_min 
+		 FROM gn_synthese.synthese 
+		 WHERE id_synthese=myidsynthese
+		) >= (
+			SELECT altitude_min 
+			FROM gn_profiles.vm_valid_profiles 
+			WHERE cd_ref=mycdref
+		)
+     AND  (
+		 SELECT altitude_max 
+		 FROM gn_synthese.synthese 
+		 WHERE id_synthese=myidsynthese
+		) <= (
+			SELECT altitude_max 
+			FROM gn_profiles.vm_valid_profiles 
+			WHERE cd_ref=mycdref
+		)
     THEN
    	  RETURN true;
     ELSE


-- Fonctions dédiées à la comparaison des données avec leur profil d'espèce dans gn_profiles
CREATE OR REPLACE FUNCTION gn_profiles.get_parameters(mycdnom integer)
 RETURNS TABLE (cd_ref integer, spatial_precision integer, temporal_precision_days integer, active_life_stage boolean, distance smallint)
 LANGUAGE plpgsql
 IMMUTABLE
AS $function$
-- fonction permettant de récupérer les paramètres les plus adaptés (définis au plus proche du taxon) pour calculer le profil d'un taxon donné
-- par exemple, s'il existe des paramètres pour les "Animalia" des paramètres pour le renard, les paramètres du renard surcoucheront les paramètres Animalia pour cette espèce
  DECLARE 
   my_cd_ref integer := t.cd_ref FROM taxonomie.taxref t WHERE t.cd_nom=mycdnom;
  BEGIN
  	RETURN QUERY
  		WITH all_parameters AS (
  			SELECT param.cd_ref, param.spatial_precision, param.temporal_precision_days, param.active_life_stage, parents.distance 
  			FROM gn_profiles.cor_taxons_profiles_parameters param
			JOIN taxonomie.find_all_taxons_parents(my_cd_ref) parents ON parents.cd_nom=param.cd_ref)
		SELECT * FROM all_parameters all_param WHERE all_param.distance=(SELECT min(all_param2.distance) FROM all_parameters all_param2)
			;
  END;
$function$

  		(WITH myphenology AS (
  			SELECT DISTINCT
				t.cd_ref AS cd_ref,
				unnest(
					ARRAY[ceiling(EXTRACT(DOY FROM s.date_min)/p.temporal_precision_days)::integer, 
					ceiling(EXTRACT(DOY FROM s.date_max)/p.temporal_precision_days)::integer]
				) AS period,
				CASE 
					WHEN p.active_life_stage=true THEN s.id_nomenclature_life_stage
					ELSE NULL
