Doc fonctionnelle : décrit le quoi et le pourquoi (point de vue utilisateur / chef de projet).
Depuis un temps déjà saisi (/crm/times/recurrence/{time}), la récurrence duplique ce temps sur
plusieurs dates selon un motif (tous les jours, toutes les semaines, toutes les 2 semaines, tous
les mois) jusqu'à une date de fin. Cas d'usage typique : saisir un « Repos Forfait Jour » un
vendredi puis générer la récurrence sur toute l'année pour tous les vendredis suivants.
Si une date de la récurrence a déjà une saisie de temps (peu importe sa catégorie — mission ou absence), elle est ignorée par défaut : aucune occurrence n'y est ajoutée. C'est le cas typique où l'utilisateur a déjà rempli certains jours (ex. des jours de mission) avant de lancer une récurrence d'absence — plus besoin d'aller supprimer les doublons après coup.
La case à cocher « Forcer l'écriture même sur les dates déjà renseignées » (décochée par défaut) permet d'outrepasser ce comportement et d'écrire quand même une occurrence sur ces dates, en plus de la saisie existante.
À la fin de la création, un message indique le nombre d'occurrences créées et, le cas échéant, le nombre de dates ignorées car déjà renseignées. Il s'affiche en notification à l'arrivée sur le tableau des temps.
Inchangées : la récurrence nécessite le droit de modification (U) sur le temps source
(manageAccessRights('U', $time->idtime, 62100101)).
calendrier.api.gouv.fr) restent toujours exclus, y
compris quand l'option « forcer » est cochée — celle-ci ne concerne que les dates déjà
renseignées.../../.claude/technical-docs/crm/crm-times-recurrence.md