feat(heures) : codes d'absence, total en gras et légende sur l'export PDF jour (#25)
Auto Tag Develop / tag (push) Successful in 7s

Affinements de l'export PDF des heures (vue Jour) :

- **Colonne Statut** : affiche le **code** du type d'absence (ex. `AT`) au lieu du libellé, sur sa couleur de fond. Férié sans absence inchangé (nom du férié sur fond bleu clair).
- **Colonne Total** en gras.
- **Légende** sous le tableau : carré coloré contenant le code + libellé à droite, 6 éléments par ligne, triée et dédupliquée (hors férié).
- **Bouton Exporter masqué en vue Semaine** (visible uniquement en vue Jour).

Docs mises à jour : `doc/hours-day-export.md`, `frontend/data/documentation-content.ts`, `CLAUDE.md`. Tests backend verts (173/361).

Reviewed-on: #25
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #25.
This commit is contained in:
2026-06-09 14:04:50 +00:00
committed by Autin
parent 9dff25d61a
commit b6c0dfb90b
8 changed files with 63 additions and 10 deletions
+16
View File
@@ -75,6 +75,7 @@ class WorkHourDayExportProvider implements ProviderInterface
});
$groups = [];
$legend = [];
foreach ($siteMeta as $siteId => $meta) {
$siteEmployees = $bySite[$siteId];
usort($siteEmployees, static fn ($a, $b) => ($a->getLastName() ?? '') <=> ($b->getLastName() ?? ''));
@@ -84,7 +85,21 @@ class WorkHourDayExportProvider implements ProviderInterface
continue;
}
$groups[] = ['siteName' => $meta['name'], 'siteColor' => $meta['color'], 'rows' => $rows];
// Légende : codes d'absence présents (hors férié), dédupliqués par code.
foreach ($rows as $row) {
if ($row['isHoliday'] || null === $row['statut'] || null === $row['statutLabel']) {
continue;
}
$legend[$row['statut']] ??= [
'code' => $row['statut'],
'label' => $row['statutLabel'],
'color' => $row['statutColor'] ?? '#e8e8e8',
];
}
}
ksort($legend);
$legend = array_values($legend);
$options = new Options();
$options->set('isRemoteEnabled', true);
@@ -92,6 +107,7 @@ class WorkHourDayExportProvider implements ProviderInterface
$html = $this->twig->render('work-hour-day-export/print.html.twig', [
'groups' => $groups,
'legend' => $legend,
'dateLabel' => $date->format('d/m/Y'),
'exportedAt' => new DateTimeImmutable('now')->format('d/m/Y H:i'),
]);