diff --git a/src/State/EmployeeLeaveSummaryProvider.php b/src/State/EmployeeLeaveSummaryProvider.php index f221417..fedeb41 100644 --- a/src/State/EmployeeLeaveSummaryProvider.php +++ b/src/State/EmployeeLeaveSummaryProvider.php @@ -569,10 +569,12 @@ final readonly class EmployeeLeaveSummaryProvider implements ProviderInterface * précédant immédiatement une entrée en FORFAIT. 0 si aucune phase précédente * ou si la précédente est elle-même un FORFAIT (nouvel embauché → cas 2). * - * Le total disponible = remainingDays (acquis restant) + accruingDays (généré - * restant, samedis générés inclus) + remainingSaturdays (samedis acquis restant). - * Les congés déjà posés sous la phase précédente sont déjà déduits par - * computeYearSummary, donc on récupère bien le NET (ex. Grégory : 12 acquis − 5 pris ≈ 7). + * Règle (validée comptable) : seuls les congés en JOURS OUVRÉS déjà posés réduisent + * le report ; les SAMEDIS déjà posés ne le réduisent pas. Le NET disponible calculé + * par computeYearSummary (remainingDays + accruingDays + remainingSaturdays) déduit + * tous les congés posés, samedis inclus ; on ré-ajoute donc takenSaturdays pour ne + * garder déduits que les jours ouvrés (ex. Grégory : 12 acquis − 5 jours ouvrés pris + * = 7, dont le samedi posé reste crédité). * * Les jours fractionnés (fractionedDays, ajustement manuel ajouté par provide() à * l'affichage) sont volontairement EXCLUS : on ne reporte que le solde CP acquis/généré @@ -593,7 +595,10 @@ final readonly class EmployeeLeaveSummaryProvider implements ProviderInterface return 0.0; } - return $summary['remainingDays'] + $summary['accruingDays'] + $summary['remainingSaturdays']; + return $summary['remainingDays'] + + $summary['accruingDays'] + + $summary['remainingSaturdays'] + + $summary['takenSaturdays']; } /**