[#SIRH-32] Ajouter l'exercice 2026/2027 dans les congés/RTT (#20)
Auto Tag Develop / tag (push) Successful in 9s
Auto Tag Develop / tag (push) Successful in 9s
| Numéro du ticket | Titre du ticket | |------------------|-----------------| | | | ## Description de la PR ## Modification du .env ## Check list - [x] Pas de régression - [x] TU/TI/TF rédigée - [x] TU/TI/TF OK - [ ] CHANGELOG modifié Reviewed-on: #20 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #20.
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
{{ formatCount(summary?.remainingDays) }} Jours
|
||||
</p>
|
||||
<p class="col-start-4 p-[10px] border-b border-primary-500"><strong class="uppercase font-semibold">En cours d'acquisition :</strong>
|
||||
{{ formatCount(summary?.accruingDays) }} Jours
|
||||
{{ isForfaitRule ? formatCount(summary?.accruingDays) : `${formatCount(summary?.accruingDays)} / ${formatCount(summary?.accruingDaysTotal)}` }}
|
||||
</p>
|
||||
<p v-if="!isForfaitRule" class="col-start-1 p-[10px] border-r border-primary-500"><span class="uppercase font-semibold">Samedi acquis :</span>
|
||||
{{ formatCount(summary?.acquiredSaturdays) }} Jours
|
||||
|
||||
@@ -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) {
|
||||
@@ -124,8 +125,14 @@ export const useEmployeeLeave = (
|
||||
selectedLeaveYear.value = null
|
||||
}
|
||||
|
||||
watch(() => selectedPhase.value?.id, () => {
|
||||
// Reset l'année car la plage a peut-être changé.
|
||||
watch(() => selectedPhase.value?.id, (newId, oldId) => {
|
||||
// Ignore la résolution initiale (undefined → phase courante au montage) :
|
||||
// le chargement eager du récap initialise déjà l'année sélectionnée. Sans ce
|
||||
// garde, ce watch (asynchrone) s'exécute PENDANT l'await du chargement eager et
|
||||
// remet selectedLeaveYear à null, ce qui laisse le sélecteur d'exercice vide.
|
||||
// Même convention que le watch de useEmployeeDetailPage.
|
||||
if (oldId === undefined || newId === oldId) return
|
||||
// Changement de phase réel : reset l'année car la plage a peut-être changé.
|
||||
selectedLeaveYear.value = null
|
||||
leaveDataLoaded.value = false
|
||||
// Le rechargement effectif est piloté par useEmployeeDetailPage.
|
||||
|
||||
@@ -35,7 +35,10 @@ 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 courant.
|
||||
// Contrairement à l'onglet Congés, on NE propose PAS l'exercice suivant en RTT :
|
||||
// consulter un exercice RTT à venir (heures non saisies, rien à payer) n'a pas de sens.
|
||||
const maxYear = phase.endDate
|
||||
? computeRttYearForDate(new Date(`${phase.endDate}T00:00:00`))
|
||||
: currentRttYear.value
|
||||
|
||||
@@ -50,7 +53,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) {
|
||||
@@ -95,8 +97,12 @@ export const useEmployeeRtt = (
|
||||
selectedRttYear.value = null
|
||||
}
|
||||
|
||||
watch(() => selectedPhase.value?.id, () => {
|
||||
// Reset l'année car la plage a peut-être changé.
|
||||
watch(() => selectedPhase.value?.id, (newId, oldId) => {
|
||||
// Ignore la résolution initiale (undefined → phase courante au montage) :
|
||||
// l'initialisation de l'année est pilotée par loadRttData. Même convention que
|
||||
// le watch de useEmployeeDetailPage (évite un reset concurrent du sélecteur).
|
||||
if (oldId === undefined || newId === oldId) return
|
||||
// Changement de phase réel : reset l'année car la plage a peut-être changé.
|
||||
selectedRttYear.value = null
|
||||
rttDataLoaded.value = false
|
||||
// Le rechargement effectif est piloté par useEmployeeDetailPage.
|
||||
|
||||
@@ -480,7 +480,9 @@ export const documentationSections: DocSection[] = [
|
||||
blocks: [
|
||||
{ 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 les exercices passés. La plage proposée part de l\'exercice courant 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: 'La case « En cours d\'acquisition » affiche deux valeurs : à gauche les jours encore à acquérir (déduction faite des congés déjà posés en anticipé), à droite le total brut acquis sur l\'exercice à ce jour. Exemple : « 14,50 / 17,50 » signifie 17,50 jours acquis dont 3 déjà pris en anticipé.' },
|
||||
{ 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.' },
|
||||
],
|
||||
},
|
||||
@@ -536,7 +538,7 @@ export const documentationSections: DocSection[] = [
|
||||
title: 'Consulter un exercice passé',
|
||||
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 les exercices passés (Juin → Mai). La plage proposée part de l\'exercice courant 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: 'paragraph', content: 'Un sélecteur d\'exercice est disponible en bas du tableau RTT (zone scrollable, à gauche). Il permet de consulter les exercices passés (Juin → Mai). La plage proposée part de l\'exercice courant 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. Contrairement à l\'onglet Congés, l\'onglet RTT ne propose pas l\'exercice suivant.' },
|
||||
{ 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.' },
|
||||
],
|
||||
},
|
||||
|
||||
@@ -10,6 +10,7 @@ export type EmployeeLeaveSummary = {
|
||||
takenSaturdays: number
|
||||
fractionedDays: number
|
||||
accruingDays: number
|
||||
accruingDaysTotal: number
|
||||
previousYearAcquiredDays: number
|
||||
previousYearTakenDays: number
|
||||
previousYearRemainingDays: number
|
||||
|
||||
Reference in New Issue
Block a user