[#SIRH] Récap salaire: congés N-1 forfait non affichés et comptés en présence

L'export récap salaire comptait tous les congés 'C' d'un forfait et ne
créditait aucune présence sur les jours de congé. Or un congé imputé sur le
stock N-1 ne doit pas s'afficher et doit compter comme jour de présence
(règle déjà appliquée dans la fiche employé via EmployeeLeaveSummaryProvider).

- Nouvelle méthode publique resolvePreviousYearTakenDays() (mutualise le budget
  N-1 avec la fiche: phase courante + recalcul jours payés).
- SalaryRecapPrintProvider charge les congés depuis le 1er janvier et consomme
  le budget N-1 chronologiquement (splitForfaitCongesByN1): jours couverts N-1
  retirés de l'affichage congés et ajoutés à la présence; au-delà = congés N.
- Non-forfait / budget N-1 = 0: comportement inchangé.

Vérifié end-to-end sur données prod (SARAZI mai: +1 présence, 4 congés affichés;
LIOT/ODUNCU budget 0 après paiement N-1 -> congés affichés).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-01 23:20:07 +02:00
parent 89e637ce9e
commit 1486b770b1
6 changed files with 232 additions and 2 deletions
+1
View File
@@ -267,6 +267,7 @@ Seuls les employés dont au moins une période de contrat intersecte la période
- pris: basé sur toutes les absences (demi-journées incluses)
- restants = acquis - pris (borné à 0)
- paiement congés N-1: saisie RH via `PATCH /employees/{id}/paid-leave-days` (body: `paidLeaveDays`, `year`). Stocké dans `employee_leave_balances.paid_leave_days`. Les jours payés réduisent le stock N-1 **avant** l'attribution des jours pris : `disponible_N-1 = max(0, acquis_N-1 - payés)`, puis `pris_N-1 = min(disponible_N-1, total_pris)`, surplus pris basculé sur N. Reste à prendre N-1 = `max(0, disponible_N-1 - pris_N-1)`. Uniquement pour les contrats forfait.
- jours de présence et récap salaire: pour un forfait, les jours de congé imputés sur le stock N-1 (`previousYearTakenDays`) **ne réduisent pas** les jours de présence et **ne s'affichent pas** comme congés. Sur l'export Récap salaire (mensuel), le budget N-1 est consommé chronologiquement depuis le 1er janvier ; les jours couverts deviennent des jours de présence, les jours au-delà restent affichés en congés. Le budget est le même que la fiche employé (jours payés déduits du stock N-1 d'abord).
- report annuel:
- le reliquat (`restants`) de l'exercice précédent est reporté dans les acquis de l'exercice courant
- pour `CDI`/`CDD` non forfait: report séparé jours + samedis