From e794ad251465c173766268bb7c77b226bb7bac45 Mon Sep 17 00:00:00 2001 From: tristan Date: Fri, 6 Mar 2026 16:58:29 +0100 Subject: [PATCH] feat : ajout d'un champ commentaire sur les contrats + correction de plusieurs bugs --- .claude/settings.local.json | 3 +- doc/functional-rules.md | 15 +++- frontend/components/employees/ContractTab.vue | 14 ++++ frontend/components/employees/LeaveTab.vue | 69 ++++++++++--------- frontend/components/hours/HoursDayView.vue | 4 ++ frontend/components/hours/types.ts | 1 + frontend/components/ui/TimeSelect.vue | 5 +- frontend/composables/useEmployeeDetailPage.ts | 19 +++-- frontend/composables/useHoursPage.ts | 15 +++- frontend/pages/employees/[id].vue | 2 + frontend/pages/hours.vue | 2 + frontend/services/dto/employee.ts | 1 + frontend/services/dto/work-hour.ts | 1 + frontend/services/employees.ts | 4 ++ migrations/Version20260306140000.php | 26 +++++++ migrations/Version20260306160000.php | 26 +++++++ src/Dto/Employees/ContractHistoryItem.php | 2 + src/Entity/Employee.php | 16 +++++ src/Entity/EmployeeContractPeriod.php | 15 ++++ src/Entity/WorkHour.php | 17 +++++ .../EmployeeContractChangeRequest.php | 4 +- .../EmployeeContractChangeRequestFactory.php | 1 + .../EmployeeContractPeriodManager.php | 4 +- ...EmployeeContractPeriodManagerInterface.php | 3 +- .../WorkHours/WorkedHoursCreditPolicy.php | 9 +-- src/State/EmployeeWriteProcessor.php | 3 +- src/State/WorkHourBulkUpsertProcessor.php | 7 ++ .../WorkHours/WorkedHoursCreditPolicyTest.php | 6 +- 28 files changed, 235 insertions(+), 59 deletions(-) create mode 100644 migrations/Version20260306140000.php create mode 100644 migrations/Version20260306160000.php diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 7db35a3..502e17c 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -5,7 +5,8 @@ "Bash(npx nuxi:*)", "Bash(php:*)", "Bash(docker compose:*)", - "Bash(make test:*)" + "Bash(make test:*)", + "Bash(grep:*)" ] } } diff --git a/doc/functional-rules.md b/doc/functional-rules.md index 3e31acc..ac5aae9 100644 --- a/doc/functional-rules.md +++ b/doc/functional-rules.md @@ -43,10 +43,17 @@ Documents complementaires: - Saisie par salarié et par date: - matin / après-midi / soir - pour `PRESENCE`: demi-journées matin/après-midi +- Sélecteur de temps: + - créneaux de 15 minutes uniquement (00:00, 00:15, ..., 23:45) + - saisie libre possible mais valeur vidée au blur si hors options - Calculs affichés: - `Jour`, `Nuit`, `Total` - Heures de nuit: - fenêtres `00:00-06:00` et `21:00-24:00` +- Date de modification (`updatedAt`): + - mise à jour uniquement quand un employé (`ROLE_SELF`) modifie ses propres heures + - non mise à jour lors de modifications admin ou chef de site + - affichée sous le nom de l'employé (visible admin uniquement) ## 4) Absences @@ -57,8 +64,9 @@ Documents complementaires: - Colonne absence (vue jour): - affiche le libellé - fond coloré selon le type d'absence -- Si plusieurs absences de couleurs différentes sur le même jour: - - fallback rouge +- Calendrier congés: fond coloré selon la couleur du type d'absence (`AbsenceType.color`) + - demi-journée: dégradé diagonal + - journée complète: fond plein ### Effet absence sur les heures @@ -73,7 +81,7 @@ Documents complementaires: - Si `countAsWorkedHours = true`: - `TIME`: crédit de minutes selon contrat actif du jour - - `PRESENCE`: crédit d'unités (0.5 / demi-journée) + - `PRESENCE` (forfait): aucun crédit de présence (seules les checkboxes cochées comptent) ## 5) Validations des lignes d'heures @@ -112,6 +120,7 @@ Documents complementaires: ## 7) Fériés - Les jours fériés sont identifiés et affichés +- Onglet congés: jours fériés affichés sur le calendrier avec fond `rgb(179, 229, 252)` et nom au survol - Règle courante: - absences bloquées sur jour férié - saisie d'heures autorisée diff --git a/frontend/components/employees/ContractTab.vue b/frontend/components/employees/ContractTab.vue index b464f26..a8255e8 100644 --- a/frontend/components/employees/ContractTab.vue +++ b/frontend/components/employees/ContractTab.vue @@ -86,6 +86,19 @@

La date de fin est obligatoire.

+
+ +