# Règles de validation

## Préambule

Cette page décrit l'ensemble des règles de validation appliquées dans l'application par chaque écran.

On retrouve aussi ici l'ensemble des règles induites par l'interface graphique (que l'on devra alors aussi appliquer lors de l'import générique)

### Niveaux de messages

On distingue 4 niveaux de messages de validation:

Type de message | Description
--- | ---
Erreur bloquante | Erreur bloquante qui interdit la sauvegarde
Erreur non bloquante | Erreur non bloquante qui autorise la sauvegarde, devient normalement une erreur bloquante en mode validation
Avertissement | Avertissement qui autorise la sauvegarde, devient normalement une erreur bloquante en mode validation
Information | Message d'information

### Mode de validation

On distingue deux modes distincts de validation :

- Mode édition (pour tous les écrans de saisie)
- Mode validation (pour les écrans de saisi des traits et captures)

Le mode validation contient en fait exactement les même règles que le mode édition, en remontant la priorité des types de message : les avertissements deviennent des erreurs.

### Format des nombres

On distingue différentes précisions de nombre

Type de nombre | Description
--- | ---
Entier | Nombre entier signé
Entier positif | Nombre entier positif
Décimal | Nombre décimal signé sans restriction sur la précision
Décimal (xxx) | Nombre décimal positif avec une précision de xxx décimale(s)
Position (format DD) | Nombre décimal signé avec une précision de deux décimales (utilisé pour les DD)
Poids Kg | Nombre décimal positif avec une précision de quatre décimales
Poids g | Nombre décimal positif avec une précision d'une décimale
Poids espèces | Poids Kg ou Poids g selon l'unité choisie pour espèces
Poids benthos | Poids Kg ou Poids g selon l'unité choisie pour benthos
Poids macro déchets | Poids Kg ou Poids g selon l'unité choisie pour macro-déchets
Poids observations individuelles | Poids Kg ou Poids g selon l'unité choisie pour observation individuelles
Poids captures accidentelles | Poids Kg ou Poids g selon l'unité choisie pour captures accidentelles

## Série de campagne

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Nom | Le nom de la série est obligatoire |
Zone | La zone de la série est obligatoire |
Nom - Zone | le couple nom - zone doit être unique |
Description | La description de la série est obligatoire |
Description | Taille de la description trop longue (limitée à 2000 caractères) |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Zone | Une localité de type zone |

### Mode validation

Pas de règle.

## Campagne

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Nom | Le nom de la campagne est obligatoire |
Série de campagne | La série est obligatoire |
Port de départ | Le port d'embarquement est obligatoire |
Port d'arrivée | Le port de débarquement est obligatoire |
Nombre de poches | Le nombre de poche est obligatoire |
Date de début | La date de début est obligatoire |
Date de fin | La date de fin est obligatoire |
Date de début - fin | La date de fin doit être après la date de début |
Navire | Au moins un bateau doit être sélectionné |
Engin | Au moins un engin doit être sélectionné |
Chef(s) de mission | Au moins un chef de mission doit être sélectionné |
Responsable(s) de salle de tri | Au moins un responsable de salle de tri doit être sélectionné |
Commentaire | Taille de la description trop longue (limitée à 2000 caractères) |
Nom | Le format n'est pas celui attendu ... |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Série | Une série de campagne |
Port de départ | Une localité de type port |
Port d'arrivée | Une localité de type port |
Date de début | Une date au format JJ/MM/AAAA |
Date de fin | Une date au format JJ/MM/AAAA |
Nombre de poches | Entier positif |
Navire | Un navire parmi ceux du référentiel |
Engin | Un engin parmi ceux du référentiel |
Chef(s) de mission | Doublon impossible |
Chef(s) de mission | Une personne parmi celles du référentiel |
Responsable(s) de salle de tri | Doublon impossible |
Responsable(s) de salle de tri | Une personne parmi celles du référentiel |

### Mode validation

Pas de règle.

## Protocole > Informations générales

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Nom | Le nom du protocole est obligatoire |
Nom | Le nom du protocole est déjà utilisé |
Commentaire | Taille de la description trop longue (limitée à 2000 caractères) |

### Mode validation

Pas de règle.

## Protocole > Caractéristiques

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Classes de taille | Une caractéristique parmi celles du référentiel |
Mise en œuvre de l'engin | Une caractéristique parmi celles du référentiel |
Observations individuelles | Une caractéristique parmi celles du référentiel |
Autres caractéristiques | Une caractéristique parmi celles du référentiel |

### Mode validation

Pas de règle.

## Protocole > Espèces

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Espèce | Une espèce parmi celles du référentiel |

### Mode validation

Pas de règle.

## Protocole > Benthos

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Benthos | Une espèce parmi celles du référentiel |

### Mode validation

Pas de règle.

## Trait > Trait

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Numéro de station | Le numéro de station est obligatoire |
Numéro de station | Valeur trop longue (limitée à 40 caractères) |
Numéro de trait | Le numéro de trait est obligatoire |
Numéro de poche | Le numéro de poche est obligatoire |
Numéro de poche | Le numéro de poche doit être inférieur ou égal au nombre de poches déclarées dans la campagne |
Date de début | La date du début du trait est obligatoire |
Numéro de station - numéro de trait - date début | La clé code station/numéro de trait/date de début existe déjà |
Date de début - fin de traine | La date de fin doit être après la date de début |
Date de fin de traine | Les dates ne peuvent pas être identiques si les positions sont différentes |
Date de fin de traine | Si les positions sont identiques, les dates ne peuvent être identiques |
Commentaire | Taille de la description trop longue (limitée à 2000 caractères) |
Strate | La strate, sous-strate ou localité doit être renseignée |
sous-strate | La strate, sous-strate ou localité doit être renseignée |
Localité | La strate, sous-strate ou localité doit être renseignée |
Date de début de traine | La date de début est en dehors des dates de la campagne |
Date de début de traine | La durée du trait dépasse 45 minutes ou est inférieure à 20 minutes, merci de vérifier les dates/heures du trait |
Date de fin de traine | La date de la fin du trait est obligatoire |
Date de fin de traine | La date de fin est en dehors des dates de la campagne |
Date de fin de traine | La durée du trait dépasse 45 minutes ou est inférieure à 20 minutes, merci de vérifier les dates/heures du trait |
Latitude de début de traine | La latitude de début de traîne est obligatoire |
Latitude de début de traine | La Latitude doit être comprise entre -90.0 et 90.0 |
Longitude de début de traine | La longitude de début de traîne est obligatoire |
Longitude de début de traine | La longitude doit être comprise entre -180.0 et 180.0 |
Latitude de fin de traine | La latitude de fin de traîne est obligatoire |
Latitude de fin de traine | La Latitude doit être comprise entre -90.0 et 90.0 |
Longitude de fin de traine | La longitude de fin de traîne est obligatoire |
Longitude de fin de traine | La longitude doit être comprise entre -180.0 et 180.0 |
Distance chalutée | La distance du trait dépasse 3 milles marin (5556 m), merci de vérifier les coordonnées |
Opération valide | La validité du trait est obligatoire |
Saisisseur | Au moins un saisisseur est obligatoire |
Navire | Le navire est obligatoire |
Engin | L'engin est obligatoire |
Commentaire | Le commentaire est obligatoire si le trait est invalide |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Numéro de trait | Entier |
Numéro de poche | Entier |
Latitude de début de traine | Position (format DD) |
Longitude de début de traine | Position (format DD) |
Latitude de fin de traine | Position (format DD) |
Longitude de fin de traine | Position (format DD) |
Strate | Une localité de type strate |
Sous-strate | Une localité de type sous-strate |
Sous-strate | Parmi les sous-strates de la strate choisie (si une strate est sélectionnée) |
Localité | Une localité de type localité |
Localité | Parmi les localités de la strate ou sous-strate choisie (si strate ou sous-strate choisie) |
Date de début de traine | Une date valide au format JJ/MM/AAAA |
Date de fin de traine | Une date valide au format JJ/MM/AAAA |
Heure de fin de traine | Une heure valide au format HH:MM |
Heure de fin de traine | Une heure valide au format HH:MM |
Engin | Un des engins définies sur la campagne |
Distance chalutée | Entier |
Distance chalutée | Calculée si le trait est rectiligne | Il faut donc lors d'un import vérifier la valeur par rapport à celle calculée
Navire(s) associé(s) | Doublon impossible |
Navire(s) associé(s) | Un navire parmi ceux du référentiel |
Saisisseur(s) | Doublon impossible |
Saisisseur(s) | Une personne parmi celles du référentiel |

### Mode validation

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Numéro de station | Le numéro de station est obligatoire |
Numéro de station | Valeur trop longue (limitée à 40 caractères) |
Numéro de trait | Le numéro de trait est obligatoire |
Numéro de poche | Le numéro de poche est obligatoire |
Numéro de poche | Le numéro de poche doit être inférieur ou égal au nombre de poches déclarées dans la campagne |
Date de début | La date du début du trait est obligatoire |
Numéro de station - numéro de trait - date début | La clé code station/numéro de trait/date de début existe déjà |
Date de début de traine | La date de début est en dehors des dates de la campagne |
Date de début - fin de traine | La date de fin doit être après la date de début |
Date de fin de traine | Les dates ne peuvent pas être identiques si les positions sont différentes |
Date de fin de traine | Si les positions sont identiques, les dates ne peuvent être identiques |
Date de fin de traine | La date de la fin du trait est obligatoire |
Date de fin de traine | La date de fin est en dehors des dates de la campagne |
Commentaire | Taille de la description trop longue (limitée à 2000 caractères) |
Commentaire | Le commentaire est obligatoire si le trait est invalide |
Strate | La strate, sous-strate ou localité doit être renseignée |
sous-strate | La strate, sous-strate ou localité doit être renseignée |
Localité | La strate, sous-strate ou localité doit être renseignée |
Latitude de début de traine | La latitude de début de traîne est obligatoire |
Latitude de début de traine | La Latitude doit être comprise entre -90.0 et 90.0 |
Longitude de début de traine | La longitude de début de traîne est obligatoire |
Longitude de début de traine | La longitude doit être comprise entre -180.0 et 180.0 |
Latitude de fin de traine | La latitude de fin de traîne est obligatoire |
Latitude de fin de traine | La Latitude doit être comprise entre -90.0 et 90.0 |
Longitude de fin de traine | La longitude de fin de traîne est obligatoire |
Longitude de fin de traine | La longitude doit être comprise entre -180.0 et 180.0 |
Distance chalutée | La distance est obligatoire |
Opération valide | La validité du trait est obligatoire |
Saisisseur | Au moins un saisisseur est obligatoire |
Navire | Le navire est obligatoire |
Engin | L'engin est obligatoire |
Date de début de traine | La durée du trait dépasse 45 minutes ou est inférieure à 20 minutes, merci de vérifier les dates/heures du trait |
Date de fin de traine | La durée du trait dépasse 45 minutes ou est inférieure à 20 minutes, merci de vérifier les dates/heures du trait |
Distance chalutée | La distance du trait dépasse 3 milles marin (5556 m), merci de vérifier les coordonnées |

## Trait > Mise en oeuvre de l'engin

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
caractéristique | Caractéristique obligatoire |
Valeur | Valeur obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Caractéristique | doublon impossible |
Valeur | Décimal (si caractéristique de type nombre) |
Valeur | Valeur parmi l'univers qualitatif (si caractéristique de type qualitatif) |

### Mode validation

Pas de règle.

## Trait > Autres paramètres

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
caractéristique | Caractéristique obligatoire |
Valeur | Valeur obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Caractéristique | doublon impossible |
Valeur | Décimal (si caractéristique de type nombre) |
Valeur | Valeur parmi l'univers qualitatif (si caractéristique de type qualitatif) |

### Mode validation

Pas de règle.

## Captures > Résumé

### Mode édition

Les règles sont induites par l'élévation des poids.

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Capture > Poids TOTAL | Poids Kg |
Capture > Poids total NON TRIÉ | Poids Kg |
Espèces > Poids total VRAC | Poids espèces |
Benthos > Poids total VRAC | Poids benthos |
Macro déchets > Poids total VRAC | Poids macro déchets |

### Mode validation

Les règles sont induites par l'élévation des poids.

## Captures > Espèces

### Mode édition

Les règles sont induites par l'élévation des poids.

Niveau - Champs | Règle | Commentaire
--- | --- | ---

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Poids total VRAC | Poids espèces |
Poids inerte trié | Poids espèces |
Poids vivant non détaillé trié | Poids espèces |
Lots jumeaux | Impossible d'avoir deux lots avec exactement la même catégorisation (i.e ayant le même père dans l'arbre d'échantillonnage et la même catégorie finale) |
Ordre de catégorisation | L'arbre d'échantillonnage doit obligatoirement respecter l'ordre des catégories définies dans la configuration |
Poids dans le tableau | Poids espèces |

### Mode validation

Les règles sont induites par l'élévation des poids.

## Captures > Espèces > Création d'un lot

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Espèce du lot | L'espèce est obligatoire |
V/HV | La catégorie Vrac / Hors Vrac est obligatoire |
Espèce du lot - V/HV | Le couple (espèce - Vrac/Hors Vrac) ne doit pas déjà être utilisé |
Poids du lot | Le poids du lot doit être strictement positif | Peut être non renseigné
Poids total catégorisé | La somme des poids ventilés doit être strictement positive |
Poids du lot - Poids total catégorisé | La somme des poids ventilés doit être inférieur ou égale à celle du poids du lot | Sauf si le poids total n'est pas renseigné

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Poids du lot | Poids espèces |
Nombre | Entier positif |
Catégorie | Catégorie obligatoire | Pas de catégorisation à ce niveau si non renseigné
Catégorie | Une catégorie parmi celles définies dans la configuration |
Tableau > Lot catégorisé | Seuls les lots sélectionnés et dont le poids est renseigné sont conservés |
Tableau > Poids | Poids espèces |

## Captures > Espèces > Catégorisation d'un lot

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Catégorie | La catégorie est obligatoire |
Poids total catégorisé | La somme des poids ventilés doit être strictement positive |
Poids total catégorisé | La somme des poids ventilés doit être inférieur ou égale à celle du poids du lot | Sauf si le lot père n'a pas de poids

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Catégorie | Une catégorie parmi celles définies dans la configuration |
Tableau > Lot catégorisé | Seuls les lots sélectionnés et dont le poids est renseigné sont conservés |
Tableau > Poids | Poids espèces |

## Captures > Espèces > Mensuration

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Type de mesure | La classe de taille est obligatoire | Pour la génération des classes et le mode rafale.
Pas de classe de taille | Le pas de la classe de taille doit être strictement positif | Pour la génération des classes et le mode rafale.
Tableau | Au moins une classe de taille doit être observée |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Classe min | Entier positif | Uniquement pour la génération des classes
Classe max | Entier positif | Uniquement pour la génération des classes
Pas de classe de taille | Décimal (1) | Pour la génération des classes et le mode rafale.
Tableau > Mensuration | Si une mensuration comporte un poids, toutes les mensurations doivent comporter un poids | Si l'utilisateur confirme, seules les mensurations avec poids sont conservées. Pour la génération des classes et le mode rafale
Tableau > Classe de taille | Décimal (1) | Pour la génération des classes et le mode rafale
Tableau > Nombre | Entier positif | Pour la génération des classes et le mode rafale
Tableau > Poids | Poids espèces | Pour la génération des classes et le mode rafale
Nombre | Entier | (Uniquement en mode simple dénombrement)

### Mode validation

Les règles sont induites par l'élévation des poids.

## Captures > Benthos

Identique à Captures > Espèces en utilisant Poids benthos au lieu de Poids espèces.

## Captures > Benthos > Création d'un lot

Identique à Captures > Espèces > Création d'un lot en utilisant Poids benthos au lieu de Poids espèces.

## Captures > Benthos > Catégorisation d'un lot

Identique à Captures > Espèces > Catégorisation d'un lot en utilisant Poids benthos au lieu de Poids espèces.

## Captures > Espèces > Mensuration

Identique à Captures > Espèces > Mensuration en utilisant Poids benthos au lieu de Poids espèces.

## Captures > Macro-déchets

### Mode édition

Les règles sont induites par l'élévation des poids.

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Tableau > Catégorie | Catégorie obligatoire |
Tableau > Catégorie de taille | La catégorie de taille est obligatoire |
Tableau > Nombre | Le nombre est obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Poids total | Poids macro déchets |
Tableau > Nombre | Entier positif |
Tableau > Poids | Poids macro déchets |

### Mode validation

Les règles sont induites par l'élévation des poids.

## Captures > Macro-déchets > Création d'un lot

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Catégorie de déchets | La catégorie de déchet est obligatoire |
Catégorie de taille | La catégorie de taille est obligatoire |
Catégorie de déchets - Catégorie de taille | Couple (catégorie de déchet - catégorie de taille) déjà utilisée |
Nombre | Le nombre est obligatoire |
Nombre | Le nombre doit être strictement positif |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Catégorie de déchets | Une catégorie de déchets parmi celles du référentiel |
Catégorie de taille | Une catégorie de taille parmi celles du référentiel |
Nombre | Entier positif |
Poids | Poids macro déchets |

## Captures > Observations individuelles

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Tableau > Espèce | L'espèce est obligatoire |
Tableau > Poids | Le poids est obligatoire |
Tableau > Taille | La taille est obligatoire |
Tableau > Classe de taille | La classe de taille est obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Tableau > Poids | Poids observations individuelles |
Tableau > Taille | Entier positif |
Tableau > Classe de taille | Valeur contrainte par le protocole ? |

### Mode validation

Pas de règle supplémentaire.

## Captures > Observations individuelles > Création d'une observation

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Espèce | L'espèce est obligatoire |
Poids | Le poids est obligatoire |
Taille | La taille est obligatoire |
Classe de taille | La classe de taille est obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Poids | Poids observations individuelles |
Taille | Décimal |
Classe de taille | Valeur contrainte par le protocole ? |

## Captures > Observations individuelles > Autres caractéristiques

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
caractéristique | Caractéristique obligatoire |
Valeur | Valeur obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Caractéristique | Doublon impossible |
Valeur | Décimal (si caractéristique de type nombre) |
Valeur | Valeur parmi l'univers qualitatif (si caractéristique de type qualitatif) |

## Captures > Captures accidentelles

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Tableau > Espèce | L'espèce est obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Tableau > Poids observé | Poids captures accidentelles |
Tableau > Sexe | Valeur qualitative de la caractéristique Sexe |
Tableau > Taille | Décimal (3) |
Tableau > Classe de taille | Valeur contrainte par le protocole ? |
Tableau > Mort ou vivant | Valeur qualitative de la caractéristique Mort ou vivant |

### Mode validation

Pas de règle supplémentaire.

## Captures > Captures accidentelles > Création d'un lot

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
Espèce | L'espèce est obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Poids observé | Poids captures accidentelles |
Sexe | Valeur qualitative de la caractéristique Sexe |
Taille | Décimal (3) |
Classe de taille | Valeur contrainte par le protocole ? |
Mort ou vivant | Valeur qualitative de la caractéristique Mort ou vivant |

## Captures > Captures accidentelles > Autres caractéristiques

### Mode édition

Niveau - Champs | Règle | Commentaire
--- | --- | ---
caractéristique | Caractéristique obligatoire |
Valeur | Valeur obligatoire |

### Mode édition (règles induites par l'interface graphique)

Champs | Règle | Commentaire
--- | --- | ---
Caractéristique | Doublon impossible |
Valeur | Décimal (si caractéristique de type nombre) |
Valeur | Valeur parmi l'univers qualitatif (si caractéristique de type qualitatif) |

## Captures > Supprimer les poids

Ensemble des règles utilisées lors de l'opération Supprimer les poids.

.

Règle | Commentaire
--- | ---
Le poids de la catégorie vaut celui de la catégorie supérieure |
Le poids du sous-échantillon vaut la somme des poids des échantillons mesurés |
Le poids de sous-échantillon vaut celui de la plus fine catégorie |

## Captures > Élever les poids

Ensemble des règles utilisées lors de l'opération Élever les poids.

.

Type | Règle | Commentaire
--- | --- | ---
Capture | Le poids total de la capture ne correspond pas à la somme des poids totaux Vrac, Hors Vrac et non triés |
Espèces | Le poids total Vrac des espèces est inférieur à la somme des poids Vrac triés, inerte trié et vivant non détaillé trié |
Espèces | Le poids d'un lot est inférieur à la somme des poids de ses sous-catégories |
Espèces | Le poids total des mensurations d'un lot est différent du poids du sous-échantillon |
Espèces | Le poids total des mensurations d'un lot est supérieur au poids de la catégorie |
Espèces | Le lot n'a pas de poids |
Benthos | Le poids total Vrac du benthos est inférieur à la somme des poids Vrac triés, inerte trié et vivant non détaillé trié |
Benthos | Le poids d'un lot est inférieur à la somme des poids de ses sous-catégories |
Benthos | Le poids total des mensurations d'un lot est différent du poids du sous-échantillon |
Benthos | Le poids total des mensurations d'un lot est supérieur au poids de la catégorie |
Benthos | Le lot n'a pas de poids |
Macro déchets | Le poids total des macro-déchets est inférieur à la somme des poids des macro-déchets saisis |
Macro déchets | Vous devez saisir la valeur du poids total des déchets ou le poids de chacune des catégories observées. |