diff --git a/doc/functional-rules.md b/doc/functional-rules.md index ce18874..a94fabd 100644 --- a/doc/functional-rules.md +++ b/doc/functional-rules.md @@ -203,8 +203,9 @@ Tous les filtres checkbox sont cochés par défaut à l'ouverture du drawer. - la prise sur `en cours d'acquisition` est autorisée (usage anticipé) - `en cours d'acquisition` peut devenir négatif si la prise dépasse le généré (ex: `2.08 - 3 = -0.92`), puis se reconstitue avec les acquisitions suivantes - date d'arret de calcul: - - les compteurs sont calculés jusqu'au dernier jour du mois précédent (le mois en cours est exclu) - - exemple: au `04/03/2026`, l'arret de calcul est le `28/02/2026` (ou `29/02` en année bissextile) + - les compteurs sont calculés en prévisionnel jusqu'à la fin de l'exercice + - les absences futures déjà posées sur l'exercice sont déduites du `reste à prendre` + - exemple: au `11/03/2026`, l'exercice `2026` est calculé jusqu'au `31/05/2026` - hors périmètre phase 1: `INTERIM` (retour non supporté) - onglet `RTT`: - endpoint de synthèse: `GET /api/employees/{id}/rtt-summary?year=YYYY` diff --git a/src/State/EmployeeLeaveSummaryProvider.php b/src/State/EmployeeLeaveSummaryProvider.php index ab372f0..c114964 100644 --- a/src/State/EmployeeLeaveSummaryProvider.php +++ b/src/State/EmployeeLeaveSummaryProvider.php @@ -168,7 +168,7 @@ final readonly class EmployeeLeaveSummaryProvider implements ProviderInterface $carrySaturdays = 0.0; } - $calculationEnd = $this->resolveCalculationEndDate($leavePolicy['ruleCode'], $year, $to, $employee); + $calculationEnd = $this->resolveCalculationEndDate($to, $employee); $generatedDays = $leavePolicy['accrualPerMonth'] > 0.0 ? $this->computeAccruedDaysFromStart( $leavePolicy['acquiredDays'], @@ -354,27 +354,10 @@ final readonly class EmployeeLeaveSummaryProvider implements ProviderInterface } private function resolveCalculationEndDate( - string $ruleCode, - int $year, DateTimeImmutable $periodEnd, Employee $employee ): ?DateTimeImmutable { - $today = new DateTimeImmutable('today'); - $currentYear = LeaveRuleCode::FORFAIT_218->value === $ruleCode - ? (int) $today->format('Y') - : $this->resolveCurrentLeaveYear($today); - - if ($year < $currentYear) { - $end = $periodEnd; - } elseif ($year > $currentYear) { - $end = null; - } else { - $lastDayPreviousMonth = $today - ->modify('first day of this month') - ->modify('-1 day') - ; - $end = $lastDayPreviousMonth < $periodEnd ? $lastDayPreviousMonth : $periodEnd; - } + $end = $periodEnd; // Cap at contract end date if the employee has left. $contractEndRaw = $employee->getCurrentContractEndDate();