Ajoute les astreintes : saisie de la fin de dernière activité, retour au bureau décalé de 11h de repos
Un nouveau bouton AS marque un jour d'astreinte. Ce jour et son lendemain,
une saisie « Fin activité » enregistre l'heure de fin de la dernière
intervention hors horaires (elle peut être le matin si la nuit a dépassé
minuit). L'app en déduit l'heure de retour au bureau (fin + 11h de repos
consécutif) et retire du décompte de la semaine toute la présence avant
cette heure : heures dues réduites, présence pointée avant le retour non
comptée, préconisations Fin cible démarrées à l'heure de retour sans
avertissement de retard, demi-journée entièrement en repos considérée
comme remplie. Les exports .ods gagnent les colonnes Astreinte et Retour,
et les stats n'ont plus les retards liés au repos.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
This commit is contained in:
@ -1,11 +1,15 @@
|
||||
{% set matin_cg = 'matin' in j.conge or 'jour' in j.conge %}
|
||||
{% set aprem_cg = 'aprem' in j.conge or 'jour' in j.conge %}
|
||||
{% set matin_warn = not matin_cg and j.du_min > 0 and (
|
||||
(j.matin_entree and j.matin_entree > plages.matin_debut) or
|
||||
{% set matin_requis = not matin_cg and j.du_min > 0 and j.matin_nominal_min > 0 %}
|
||||
{% set aprem_requis = not aprem_cg and j.du_min > 0 and j.aprem_nominal_min > 0 %}
|
||||
{% set borne_matin = [plages.matin_debut, j.retour or plages.matin_debut] | max %}
|
||||
{% set borne_aprem = [plages.aprem_debut, j.retour or plages.aprem_debut] | max %}
|
||||
{% set matin_warn = matin_requis and (
|
||||
(j.matin_entree and j.matin_entree > borne_matin) or
|
||||
(j.matin_sortie and j.matin_sortie < plages.matin_fin)
|
||||
) %}
|
||||
{% set aprem_warn = not aprem_cg and j.du_min > 0 and (
|
||||
(j.aprem_entree and j.aprem_entree > plages.aprem_debut) or
|
||||
{% set aprem_warn = aprem_requis and (
|
||||
(j.aprem_entree and j.aprem_entree > borne_aprem) or
|
||||
(j.aprem_sortie and j.aprem_sortie < plages.aprem_fin)
|
||||
) %}
|
||||
<tr id="row-{{ j.date }}">
|
||||
@ -37,6 +41,17 @@
|
||||
data-date="{{ j.date }}" value="{{ j.aprem_sortie or '' }}">
|
||||
</div>
|
||||
</div>
|
||||
{% if j.astreinte_qualifiee %}
|
||||
<div id="as-block-{{ j.date }}" class="as-block" data-label="Astreinte">
|
||||
<span class="as-label">Fin activité</span>
|
||||
<input class="time-input" type="time" name="astreinte_fin"
|
||||
data-date="{{ j.date }}" value="{{ j.astreinte_fin or '' }}"
|
||||
title="Heure de fin de la dernière activité (peut être le matin) — 11h de repos ensuite">
|
||||
{% if j.retour_min is not none %}<span class="as-hint" title="11h de repos consécutif après la dernière activité">retour ≥ {{ j.retour }}</span>{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div id="as-block-{{ j.date }}"></div>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
<td class="col-calc" data-label="Travaillé">
|
||||
@ -102,6 +117,10 @@
|
||||
hx-swap="none"
|
||||
class="btn-cg btn-jour {% if 'jour' in j.conge %}jour-on{% endif %}"
|
||||
title="Journée entière">J</button>
|
||||
<button hx-post="/astreinte/{{ j.date }}/toggle"
|
||||
hx-swap="none"
|
||||
class="btn-cg btn-as {% if j.astreinte %}as-on{% endif %}"
|
||||
title="Jour d'astreinte">AS</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
Reference in New Issue
Block a user