feat(heures) : export Contingent heures de nuit (liste employés) #28

Merged
tristan merged 17 commits from feat/night-hours-contingent-export into develop 2026-06-11 13:02:31 +00:00
Owner

Résumé

Nouvel export PDF Contingent heures de nuit dans le drawer Export de la liste employés.

  • PDF A4 paysage : lignes = employés (groupés par site, triés displayOrder/nom/prénom), colonnes = 12 mois civils, chaque mois avec 2 sous-colonnes H.nuit et N.jours.
  • Heures de nuit = minutes dans la fenêtre 21h→6h via un service partagé NightHoursCalculator (mutualisé avec WorkHourWeeklySummaryProvider et YearlyHoursExportBuilder — duplication supprimée, sans changement de comportement).
  • Conducteurs inclus via WorkHour.nightHoursMinutes. Statut conducteur résolu par date.
  • N.jours = nb de jours où les minutes de nuit ≥ 240 (4h). Aucun crédit absence/férié.
  • Périmètre via EmployeeRepository::findScoped (admin → tous, chef de site → ses sites), endpoint GET /night-hours-contingent/print?year=YYYY (ROLE_USER).
  • Sélecteur d'année (année civile). Colonne Nom calibrée, séparateurs de mois épais.

Composants

  • Service NightHoursCalculator, builder NightContingentExportBuilder, DTO NightContingentRow
  • Provider NightHoursContingentPrintProvider + opération API NightHoursContingentPrint
  • Gabarit templates/night-hours-contingent/print.html.twig
  • Option frontend dans frontend/pages/employees/index.vue
  • Docs : doc/functional-rules.md, CLAUDE.md, frontend/data/documentation-content.ts

Tests

  • Nouveaux tests unitaires : NightHoursCalculatorTest (fenêtre 21h→6h, passage minuit, bornes), NightContingentExportBuilderTest (agrégation mensuelle, règle ≥4h=1j, conducteur, cas sans heures)
  • Suite complète : 208 tests OK
  • Rendu PDF validé visuellement (Twig→Dompdf)

🤖 Generated with Claude Code

## Résumé Nouvel export PDF **Contingent heures de nuit** dans le drawer Export de la liste employés. - PDF **A4 paysage** : lignes = employés (groupés par site, triés displayOrder/nom/prénom), colonnes = 12 mois civils, chaque mois avec 2 sous-colonnes **H.nuit** et **N.jours**. - Heures de nuit = minutes dans la fenêtre **21h→6h** via un service partagé `NightHoursCalculator` (mutualisé avec `WorkHourWeeklySummaryProvider` et `YearlyHoursExportBuilder` — duplication supprimée, sans changement de comportement). - **Conducteurs inclus** via `WorkHour.nightHoursMinutes`. Statut conducteur résolu par date. - **N.jours** = nb de jours où les minutes de nuit ≥ 240 (4h). Aucun crédit absence/férié. - Périmètre via `EmployeeRepository::findScoped` (admin → tous, chef de site → ses sites), endpoint `GET /night-hours-contingent/print?year=YYYY` (`ROLE_USER`). - Sélecteur d'année (année civile). Colonne Nom calibrée, séparateurs de mois épais. ## Composants - Service `NightHoursCalculator`, builder `NightContingentExportBuilder`, DTO `NightContingentRow` - Provider `NightHoursContingentPrintProvider` + opération API `NightHoursContingentPrint` - Gabarit `templates/night-hours-contingent/print.html.twig` - Option frontend dans `frontend/pages/employees/index.vue` - Docs : `doc/functional-rules.md`, `CLAUDE.md`, `frontend/data/documentation-content.ts` ## Tests - Nouveaux tests unitaires : `NightHoursCalculatorTest` (fenêtre 21h→6h, passage minuit, bornes), `NightContingentExportBuilderTest` (agrégation mensuelle, règle ≥4h=1j, conducteur, cas sans heures) - Suite complète : **208 tests OK** - Rendu PDF validé visuellement (Twig→Dompdf) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
tristan added 16 commits 2026-06-11 12:52:55 +00:00
tristan added 1 commit 2026-06-11 13:00:44 +00:00
tristan merged commit b5bd4db5f1 into develop 2026-06-11 13:02:31 +00:00
tristan deleted branch feat/night-hours-contingent-export 2026-06-11 13:02:31 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/SIRH#28