# 6. Modules et règles métier

## Salariés et statut actif

La règle de référence se trouve dans `backend/backend_envie2e/src/services/employes.service.ts`.

Pour chaque salarié, le service sélectionne le dernier contrat dont la date de début `DAE` est nulle ou antérieure/égale à maintenant, trié par date de début décroissante puis ID décroissant. Le salarié est actif si :

```text
un contrat commencé existe
ET DSR est nulle
ET (DSP est nulle OU DSP est supérieure ou égale à aujourd’hui)
```

La date du jour est ramenée à minuit. L’ancienne restriction aux établissements `LESQUIN` et `ENVIE LESQUIN` a été supprimée pour la liste générale et le compteur actif.

Attention : certains états RH restent volontairement limités à Lesquin. Ce n’est pas la même règle que le statut global.

## Contrats et avenants

Un contrat appartient au salarié via son `COS`. L’avenant appartient au contrat via son `ID_Contrat` métier. Avant une suppression ou une fusion, vérifier les avenants. Les validations doivent empêcher les périodes incohérentes et les identifiants métier dupliqués.

## Absences

Les absences sont utilisées à la fois dans l’onglet salarié, les alertes et l’état des éléments de paie. Une absence intersecte une période si son début est avant la fin demandée et sa fin après le début demandé. Toujours tester les bornes de mois et les dates ouvertes.

## Visites médicales

Le module conserve l’historique et alimente les alertes/états. La migration connue comporte 11 visites historiques sans salarié correspondant. Ne pas les rattacher arbitrairement ; soit identifier le `COS` source, soit documenter puis purger après validation métier.

## Disciplinaire et procédures

Les sanctions historiques sont distinctes des nouvelles demandes de procédure. Une demande possède un type, les faits, le responsable, un statut, éventuellement une suite, un PDF, un historique et des communications.

Types de demande : demande de nouvelles, lettre de recadrage, avertissement direct, convocation sanction, convocation licenciement/rupture, autre. Seules les deux convocations autorisent la saisie d’une suite. Les décisions incluent notamment avertissement, mise à pied, mutation, rétrogradation et plusieurs motifs de licenciement/rupture.

## États RH disponibles

| Code | Contenu |
|---|---|
| `elements-paie` | Contrats et absences intersectant le mois, plus champs variables à compléter |
| `indicateurs-mensuels` | Effectifs, contrats, métiers, entrées, sorties et indicateurs |
| `avenant-equipe-nuit` | Données nécessaires aux avenants d’équipe de nuit |
| `salaries-sans-vm` | Salariés sans visite médicale conforme |
| `registre-entrees-sorties` | Registre des mouvements |
| `appels-offres-etrangers` | État des salariés étrangers pour appels d’offres |

Les états sont rendus dans le navigateur puis imprimés. L’endpoint est `/api/impressions/etats/[etat]`; le GET nécessite `impressions:read`. L’état équipe de nuit possède aussi un POST.

La date sélectionnée est normalisée prudemment. La fonction d’activité d’un état raisonne à la date choisie, ce qui peut différer du statut actif “aujourd’hui”.

## Référentiels

Les Paramètres exposent plusieurs tables historiques. Une valeur de référentiel peut être utilisée dans des scopes d’accès et des filtres. Renommer un établissement ou un type de contrat peut donc modifier les résultats visibles d’un utilisateur. Préférer une modification contrôlée et tester les habilitations après renommage.

