Le temps travaillé, l'écart du jour et le solde de la semaine ne
restituent plus que les heures pointées. Le forfait des jours AS reste
suivi à part : ligne du jour et récapitulatif d'astreinte, libellés et
documentation ajustés en conséquence.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
85 lines
5.1 KiB
HTML
85 lines
5.1 KiB
HTML
<div id="soldes-section" hx-swap-oob="true">
|
||
<div class="soldes">
|
||
<div class="solde-item">
|
||
<div class="solde-eyebrow">Travaillé</div>
|
||
<div class="solde-num neutral">{{ result.total_travaille }}</div>
|
||
</div>
|
||
<div class="solde-item">
|
||
<div class="solde-eyebrow">Dû par jour</div>
|
||
<div class="solde-num neutral">{{ result.heures_jour }}</div>
|
||
</div>
|
||
<div class="solde-item">
|
||
<div class="solde-eyebrow">Dû cette semaine</div>
|
||
<div class="solde-num neutral">{{ result.total_du }}</div>
|
||
</div>
|
||
<div class="solde-item {% if result.solde_min > 0 %}item-pos{% elif result.solde_min < 0 %}item-neg{% endif %}">
|
||
<div class="solde-eyebrow">Solde semaine</div>
|
||
<div class="solde-num {% if result.solde_min > 0 %}pos{% elif result.solde_min < 0 %}neg{% endif %}">
|
||
{% if result.solde_min > 0 %}+{% endif %}{{ result.solde }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% if result.slots_restants > 0 %}
|
||
<div class="reste-info">
|
||
{% if result.extra_min > 0 %}
|
||
Reste à faire : <strong>{{ result.reste }}</strong>
|
||
sur {{ result.slots_restants }} demi-journée{{ 's' if result.slots_restants > 1 else '' }} restante{{ 's' if result.slots_restants > 1 else '' }}
|
||
— à rattraper : <strong class="reste-extra">+{{ result.extra }}</strong> (~+{{ result.moyenne_extra }} chacune)
|
||
{% elif result.avance_min > 0 %}
|
||
Reste à faire : <strong>{{ result.reste }}</strong>
|
||
sur {{ result.slots_restants }} demi-journée{{ 's' if result.slots_restants > 1 else '' }} restante{{ 's' if result.slots_restants > 1 else '' }}
|
||
— avance à écouler : <strong>{{ result.avance }}</strong>, répartie sur les départs du soir pour finir la semaine à 0.
|
||
{% elif result.reste_min > 0 %}
|
||
Reste à faire : <strong>{{ result.reste }}</strong>
|
||
sur {{ result.slots_restants }} demi-journée{{ 's' if result.slots_restants > 1 else '' }} restante{{ 's' if result.slots_restants > 1 else '' }}
|
||
— le rythme habituel suffit, rien à rattraper.
|
||
{% else %}
|
||
Vous êtes à jour ou en avance — rien à rattraper cette semaine.
|
||
{% endif %}
|
||
</div>
|
||
{% elif result.solde_min < 0 %}
|
||
<div class="reste-info">
|
||
Semaine terminée avec <strong class="reste-extra">{{ result.solde }}</strong> de manque —
|
||
complétez ou corrigez les saisies, ou rattrapez sur une autre semaine.
|
||
</div>
|
||
{% endif %}
|
||
{% if result.astreinte and result.astreinte.actif %}
|
||
<div class="as-decompte">
|
||
<div class="as-decompte-title">Astreinte — compteur séparé, hors heures de semaine</div>
|
||
<div class="as-decompte-help">
|
||
Décompte par <b>quarts d'heure de l'horloge</b> (:00, :15, :30, :45) : tout quart
|
||
<b>entamé</b> compte 15 min entières, et un quart partagé par deux
|
||
interventions n'est compté qu'<b>une seule fois</b>. Ex. 22:39 → 23:49 =
|
||
1h10 réelles mais 6 quarts touchés (22:30 → 00:00) = 1h30.
|
||
</div>
|
||
{% for j in result.astreinte.jours %}
|
||
<div class="as-jour">
|
||
<div class="as-jour-head">
|
||
<span class="as-jour-date">{{ j.jour }} {{ j.date[8:] }}/{{ j.date[5:7] }}</span>
|
||
{% if j.forfait_min %}<span class="as-forfait" title="Forfait du jour AS déclaré (réglé dans Réglages) : suivi dans le récapitulatif d'astreinte, jamais compté dans les heures travaillées ni dans les compteurs pondérés">forfait {{ j.forfait_h }}</span>{% endif %}
|
||
{% if j.total_min %}<span class="as-jour-total">astreinte {{ j.total_h }} → {{ j.total_pondere_h }} pondérées</span>{% endif %}
|
||
</div>
|
||
{% for ev in j.events %}
|
||
<div class="as-ev">
|
||
<span class="as-ev-h">{{ ev.debut }} → {{ ev.fin }}</span>
|
||
{% if ev.desc %}<span class="as-ev-desc">{{ ev.desc }}</span>{% endif %}
|
||
{% if ev.tranches %}
|
||
<span class="as-ev-q" title="Quarts d'heure de l'horloge (:00, :15, :30, :45) touchés par l'intervention et pas déjà comptés, chacun compté 15 min entières">{{ ev.tranches }} quart{{ 's' if ev.tranches > 1 else '' }} ({{ ev.tranches_debut }} → {{ ev.tranches_fin }}) = {{ ev.min_h }}</span>
|
||
{% for d in ev.details %}<span class="as-ev-cat">{{ d.nom }} ×{{ d.facteur_txt }}</span>{% if not loop.last %} + {% endif %}{% endfor %}
|
||
<span class="as-ev-pond">pondéré → {{ ev.pondere_h }}</span>
|
||
{% else %}
|
||
<span class="as-ev-q" title="Tous les quarts touchés sont déjà comptés dans une intervention précédente (même quart d'heure)">0 quart — déjà compté</span>
|
||
{% endif %}
|
||
</div>
|
||
{% endfor %}
|
||
</div>
|
||
{% endfor %}
|
||
<div class="as-totaux">
|
||
{% for c in result.astreinte.categories %}<span class="as-cat">{{ c.nom }} : {{ c.min_h }} ×{{ c.facteur_txt }} = {{ c.pondere_h }}</span>{% endfor %}
|
||
{% if result.astreinte.total_forfait_min %}<span class="as-forfait" title="Forfaits des jours AS déclarés : suivis à part, jamais comptés dans les heures travaillées">forfaits {{ result.astreinte.total_forfait_h }} <em>(hors heures travaillées)</em></span>{% endif %}
|
||
<span class="as-grand">total {{ result.astreinte.total_h }} → {{ result.astreinte.total_pondere_h }} pondérées</span>
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|