+ Les demandes sont classées par ancienneté : celle qui attend depuis le + plus longtemps arrive en tête. Accepter écrit au registre des compteurs ; + annuler ensuite contre-passe l’écriture plutôt que de l’effacer, et le + solde revient au même chiffre. +
++ Aucune demande à traiter. +
+ ) : ( ++ {request.name} · {request.typeLabel} +
++ du {frenchDate(request.startDate)} au{' '} + {frenchDate(request.endDate)} ·{' '} + {request.days} jour + {request.days > 1 ? 's' : ''} décompté + {request.days > 1 ? 's' : ''} +
+ {request.comment ? ( ++ « {request.comment} » +
+ ) : null} ++ Aucune absence sur cette période. +
+ ) : ( ++ Aucun compteur ouvert. Un compteur se crée à la première écriture — + acceptation d’un congé ou ajustement manuel. +
+ ) : ( +| + Salarié + | ++ Compteur + | ++ Acquis + | ++ Pris + | ++ Solde + | +
|---|---|---|---|---|
| {counter.name} | ++ {COUNTER_LABELS[counter.counterType] ?? counter.counterType} + | ++ {counter.accrued} + | ++ {counter.taken} + | ++ {counter.balance} + | +
+ Le solde est la somme des écritures du registre, jamais une valeur + stockée : un solde stocké se désynchronise, et la désynchronisation ne + se voit qu’au moment où un salarié conteste. +
+| + Salarié + | + {board.days.map((date) => ( += 6 + ? 'bg-surface-3 text-ink-2' + : 'text-ink-1', + )} + > + {Number(date.slice(8, 10))} + | + ))} +
|---|---|
| + {own[0]?.name ?? ''} + | + {board.days.map((date) => { + const request = covered.get(date); + return ( += 6 && 'bg-surface-2', + )} + title={ + request + ? `${request.typeLabel} — ${statusLabel(request.status)}` + : undefined + } + > + {request ? ( + + + {request.typeLabel} le {date} + + + ) : null} + | + ); + })} +
+ Une demande expirée n’a jamais été décidée : elle n’a donc rien écrit au + registre des compteurs, et le solde du salarié n’en porte aucune trace. + Elle reste visible parce qu’une absence non traitée à temps est un fait + opposable — au salarié qui l’a demandée comme à l’employeur qui ne l’a + pas tranchée. +
++ Le motif d’une absence Sécurité sociale est une donnée de santé : il + n’apparaît qu’aux personnes habilitées à lire les pièces du dossier. Pour + les autres, la ligne dit « Absence » et rien de plus. +
+- Aucune demande à traiter. -
- ) : ( -- {request.name} · {request.typeLabel} -
-- du {frenchDate(request.startDate)} au{' '} - {frenchDate(request.endDate)} ·{' '} - {request.days} jour - {request.days > 1 ? 's' : ''} décompté - {request.days > 1 ? 's' : ''} -
- {request.comment ? ( -- « {request.comment} » -
- ) : null} -- Aucune absence sur cette période. -
- ) : ( -- Aucun compteur ouvert. Un compteur se crée à la première écriture — - acceptation d’un congé ou ajustement manuel. -
- ) : ( -| - Salarié - | -- Compteur - | -- Acquis - | -- Pris - | -- Solde - | -
|---|---|---|---|---|
| {counter.name} | -- {COUNTER_LABELS[counter.counterType] ?? counter.counterType} - | -- {counter.accrued} - | -- {counter.taken} - | -- {counter.balance} - | -
- Le solde est la somme des écritures du registre, jamais une valeur - stockée : un solde stocké se désynchronise, et la désynchronisation ne - se voit qu’au moment où un salarié conteste. -
-| - Salarié - | - {board.days.map((date) => ( -= 6 - ? 'bg-surface-3 text-ink-2' - : 'text-ink-1', - )} - > - {Number(date.slice(8, 10))} - | - ))} -
|---|---|
| - {own[0]?.name ?? ''} - | - {board.days.map((date) => { - const request = covered.get(date); - return ( -= 6 && 'bg-surface-2', - )} - title={ - request - ? `${request.typeLabel} — ${statusLabel(request.status)}` - : undefined - } - > - {request ? ( - - - {request.typeLabel} le {date} - - - ) : null} - | - ); - })} -
{row.name}
++ {row.typeLabel} · {period(row)} +
+ {row.comment ? ( +« {row.comment} »
+ ) : null} + {row.decisionComment ? ( ++ Décision : {row.decisionComment} +
+ ) : null} +