Étoffer le référentiel des types d'absence
Cinq types d'amorce ne tiennent pas un registre. Un commerce de détail rencontre un accident de trajet, une mise à pied, un congé pour examen, une visite médicale — et faute de type, ces absences se saisissent en « congé sans solde », ce qui fausse à la fois le décompte et la paie. Vingt-quatre types désormais, relevés sur le sélecteur du produit audité et recoupés avec les rubriques du dossier de paie. Les drapeaux sont des valeurs d'amorce, modifiables depuis les réglages : la nature Sécurité sociale ne se discute pas, mais l'acquisition de congés pendant une absence dépend de la convention. « Repos hebdomadaire » figure au sélecteur audité et pas ici. C'est un repos légal, porté par le modèle `Rest`, pas une absence qui se demande — en faire un type d'absence laisserait un manager refuser une obligation. Les familles de couleur passent de cinq à neuf, et deviennent une liste fermée avec ses libellés. Le champ des réglages était libre : une clé fautive s'y enregistrait sans bruit et la grille affichait un gris inexplicable. Quatre familles s'ajoutent — famille, formation, jour férié, sanction. Une sanction se distingue d'une absence ordinaire : elle est subie, elle se conteste, elle ne se lit pas comme un congé. La couleur groupe, le libellé précise. Donner sa teinte à chacun des vingt-quatre types rendrait la grille illisible bien avant la fin de la liste. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a0524c56d7
commit
804e14bf04
7 files changed
+173
-22
No files matched your search
@@ -1,6 +1,15 @@
|
||||
import type { AbsenceColorKey } from '@/domain/absences/colors';
|
||||
import { cx } from '@/lib/cx';
|
||||
|
||||
export type AbsenceKind = 'cp' | 'rtt' | 'maladie' | 'sans-solde' | 'attente';
|
||||
/**
|
||||
* Familles d'absence, pour la teinte de la barre — voir
|
||||
* `src/domain/absences/colors.ts`.
|
||||
*
|
||||
* Le repli est `sans-solde`, gris, et c'est délibérément le plus terne : une
|
||||
* teinte inconnue doit se remarquer comme une configuration incomplète, pas se
|
||||
* fondre dans les congés payés.
|
||||
*/
|
||||
export type AbsenceKind = AbsenceColorKey;
|
||||
|
||||
const KINDS: Record<AbsenceKind, { bg: string; ink: string; edge: string }> = {
|
||||
cp: {
|
||||
@@ -18,6 +27,28 @@ const KINDS: Record<AbsenceKind, { bg: string; ink: string; edge: string }> = {
|
||||
ink: 'var(--color-ink-2)',
|
||||
edge: 'var(--color-line-3)',
|
||||
},
|
||||
famille: {
|
||||
bg: 'var(--post-rss-bg)',
|
||||
ink: 'var(--post-rss-fg)',
|
||||
edge: 'var(--post-rss-edge)',
|
||||
},
|
||||
formation: {
|
||||
bg: 'var(--post-for-bg)',
|
||||
ink: 'var(--post-for-fg)',
|
||||
edge: 'var(--post-for-edge)',
|
||||
},
|
||||
ferie: {
|
||||
bg: 'var(--post-enc-bg)',
|
||||
ink: 'var(--post-enc-fg)',
|
||||
edge: 'var(--post-enc-edge)',
|
||||
},
|
||||
// Une sanction se distingue d'une absence ordinaire : elle est subie, elle se
|
||||
// conteste, et elle ne se lit pas comme un congé.
|
||||
sanction: {
|
||||
bg: 'var(--color-danger-soft)',
|
||||
ink: 'var(--color-danger-soft-ink)',
|
||||
edge: 'var(--color-danger)',
|
||||
},
|
||||
'sans-solde': {
|
||||
bg: 'var(--color-surface-2)',
|
||||
ink: 'var(--color-ink-2)',
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { AbsenceBar, type AbsenceKind } from '@/components/planning/AbsenceBar';
|
||||
import { CounterStrip } from '@/components/planning/CounterStrip';
|
||||
import { ShiftChip } from '@/components/planning/ShiftChip';
|
||||
import { isAbsenceColorKey } from '@/domain/absences/colors';
|
||||
import { computeWeekCounters } from '@/domain/counters/week';
|
||||
import {
|
||||
displayName,
|
||||
@@ -246,8 +247,5 @@ function Row({
|
||||
* repli neutre : une teinte inconnue vaut mieux affichée en gris qu'absente.
|
||||
*/
|
||||
function absenceKind(colorKey: string): AbsenceKind {
|
||||
const known: AbsenceKind[] = ['cp', 'rtt', 'maladie', 'sans-solde', 'attente'];
|
||||
return known.includes(colorKey as AbsenceKind)
|
||||
? (colorKey as AbsenceKind)
|
||||
: 'sans-solde';
|
||||
return isAbsenceColorKey(colorKey) ? colorKey : 'sans-solde';
|
||||
}
|
||||
Reference in new issue
Block a user