fix : ancrer la clôture dynamique des congés sur le solde bootstrap
computeDynamicClosingForYear (qui produit le report d'ouverture de l'exercice suivant) ignorait la table employee_leave_balances et recalculait depuis l'embauche, sans absences historiques. Pour un exercice consulté en avance, il cumulait donc une année pleine d'acquisition par exercice antérieur à la mise en service. Cas Aurore (CDI depuis 2022, bootstrap 2026 = report 32 / pris 24) : report d'ouverture 2027 affiché à 88,39 j au lieu de 31. La vue courante était juste car le provider, lui, lit déjà le bootstrap. La clôture dynamique applique désormais la même règle que EmployeeLeaveSummaryProvider::computeYearSummary : si une ligne bootstrap existe pour l'exercice, on part de opening_days/opening_saturdays et on ajoute l'offset taken_days/taken_saturdays, au lieu du report dynamique accumulé. Vérifié sur données réelles : 88,39 -> 31,00 j. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -481,6 +481,7 @@ export const documentationSections: DocSection[] = [
|
||||
{ type: 'paragraph', content: 'L\'onglet "Congés" sur la fiche employé affiche un calendrier annuel des congés posés (12 mois en grille 4×3) ainsi que les compteurs (acquis, pris, reste, en cours d\'acquisition, N-1 ou samedis selon le contrat).' },
|
||||
{ type: 'paragraph', content: 'La période affichée dépend du type de contrat actuel : Janvier → Décembre pour FORFAIT, Juin (N-1) → Mai (N) pour les autres contrats.' },
|
||||
{ type: 'paragraph', content: 'Un sélecteur d\'année est disponible en bas du calendrier (zone scrollable, à gauche). Il permet de consulter l\'exercice suivant ainsi que les exercices passés. La plage proposée part de l\'exercice suivant (l\'exercice à venir, pour consulter en avance les congés déjà posés) et remonte jusqu\'au plus récent entre (a) le premier exercice où l\'employé avait un contrat ouvert et (b) l\'exercice de mise en service du logiciel — il est inutile de remonter plus loin, aucune donnée n\'a été saisie avant.' },
|
||||
{ type: 'note', content: 'Sur l\'exercice suivant, le calendrier et les congés déjà posés sont exacts, mais les compteurs « Année acquis » et report N-1 sont provisoires : ils dépendent de la clôture de l\'exercice courant et ne se figeront qu\'à cette clôture.' },
|
||||
{ type: 'note', content: 'Sur un exercice passé, les boutons d\'édition "Jours fractionnés" et "Année N-1 payés" sont désactivés. La consultation reste possible, mais on n\'autorise pas la modification rétroactive d\'un exercice clos.' },
|
||||
],
|
||||
},
|
||||
@@ -537,6 +538,7 @@ export const documentationSections: DocSection[] = [
|
||||
requiredLevel: 'admin',
|
||||
blocks: [
|
||||
{ type: 'paragraph', content: 'Un sélecteur d\'exercice est disponible en bas du tableau RTT (zone scrollable, à gauche). Il permet de consulter l\'exercice suivant ainsi que les exercices passés (Juin → Mai). La plage proposée part de l\'exercice suivant et remonte jusqu\'au plus récent entre (a) le premier exercice où l\'employé avait un contrat ouvert et (b) l\'exercice de mise en service du logiciel.' },
|
||||
{ type: 'note', content: 'Sur l\'exercice suivant, le report N-1 affiché est provisoire tant que l\'exercice courant n\'est pas clôturé.' },
|
||||
{ type: 'note', content: 'Sur un exercice passé, le bouton « + Payer les RTT » est désactivé. Aucun paiement rétroactif n\'est autorisé pour préserver la cohérence du report N-1.' },
|
||||
],
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user