From 9a65890bfde07a703499e12405b87c0c9891f20c Mon Sep 17 00:00:00 2001 From: tristan Date: Tue, 26 May 2026 10:13:33 +0200 Subject: [PATCH] =?UTF-8?q?feat=20:=20proposer=20l'exercice=20suivant=20da?= =?UTF-8?q?ns=20les=20s=C3=A9lecteurs=20Cong=C3=A9s=20et=20RTT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sur une phase de contrat ouverte, la borne haute des sélecteurs d'exercice (availableLeaveYears / availableRttYears) passe de l'exercice courant à l'exercice suivant (courant + 1), pour consulter en avance les congés/RTT posés sur l'exercice à venir. Phase clôturée : borne inchangée (fin de phase). Sélection par défaut et verrouillage des éditions inchangés. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/composables/useEmployeeLeave.ts | 7 ++++--- frontend/composables/useEmployeeRtt.ts | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/frontend/composables/useEmployeeLeave.ts b/frontend/composables/useEmployeeLeave.ts index 1712873..992b0f9 100644 --- a/frontend/composables/useEmployeeLeave.ts +++ b/frontend/composables/useEmployeeLeave.ts @@ -51,9 +51,11 @@ export const useEmployeeLeave = ( // Plage = exercices intersectant la phase. const phaseStartYear = computeLeaveYearForDate(new Date(`${phase.startDate}T00:00:00`)) - const phaseEndYear = phase.endDate + // Borne haute : fin de phase si clôturée ; sinon l'exercice SUIVANT (courant + 1), + // pour pouvoir consulter en avance les congés posés sur l'exercice à venir. + const maxYear = phase.endDate ? computeLeaveYearForDate(new Date(`${phase.endDate}T00:00:00`)) - : currentLeaveYear.value + : currentLeaveYear.value + 1 // Hard floor : data-start-date (env RTT_START_DATE) — le logiciel n'a pas // d'historique avant cette date, inutile de proposer des années antérieures. @@ -67,7 +69,6 @@ export const useEmployeeLeave = ( } const minYear = dataFloor !== null ? Math.max(phaseStartYear, dataFloor) : phaseStartYear - const maxYear = phaseEndYear const years: LeaveYearOption[] = [] for (let y = maxYear; y >= minYear; y -= 1) { diff --git a/frontend/composables/useEmployeeRtt.ts b/frontend/composables/useEmployeeRtt.ts index cdb92ee..f5f364d 100644 --- a/frontend/composables/useEmployeeRtt.ts +++ b/frontend/composables/useEmployeeRtt.ts @@ -35,9 +35,11 @@ export const useEmployeeRtt = ( // Plage = exercices intersectant la phase. const phaseStartYear = computeRttYearForDate(new Date(`${phase.startDate}T00:00:00`)) - const phaseEndYear = phase.endDate + // Borne haute : fin de phase si clôturée ; sinon l'exercice SUIVANT (courant + 1), + // pour rester cohérent avec le sélecteur de l'onglet Congés. + const maxYear = phase.endDate ? computeRttYearForDate(new Date(`${phase.endDate}T00:00:00`)) - : currentRttYear.value + : currentRttYear.value + 1 // Hard floor : rttStartDate (env RTT_START_DATE) — pas d'historique avant. let dataFloor: number | null = null @@ -50,7 +52,6 @@ export const useEmployeeRtt = ( } const minYear = dataFloor !== null ? Math.max(phaseStartYear, dataFloor) : phaseStartYear - const maxYear = phaseEndYear const years: RttYearOption[] = [] for (let y = maxYear; y >= minYear; y -= 1) {