{% extends "base.html" %} {% block title %}Horaires et suivi annuel — GMAO{% endblock %} {% block content %}
Période comptable : {{ period_start.strftime('%d/%m/%Y') }} au {{ period_end.strftime('%d/%m/%Y') }}.
| Mois | Travail prévu | Permanences | Retards | Heures supplémentaires | Formations |
|---|---|---|---|---|---|
| {{ months[item.month.month] }} {{ item.month.year }} | {{ '%d h %02d'|format(item.planned // 60, item.planned % 60) }} | {{ '%d h %02d'|format(item.permanence // 60, item.permanence % 60) }} | {{ '%d h %02d'|format(item.retard // 60, item.retard % 60) }} | {{ '%d h %02d'|format(item.supplementaire // 60, item.supplementaire % 60) }} | {{ '%d h %02d'|format(item.formation // 60, item.formation % 60) }} |
| Aucune donnée pour cette période. | |||||
Aucun profil défini.
{% endfor %} {% if templates|length < 6 %}{% endif %}| Date | Vacances | Horaire type | Horaires détaillés | |
|---|---|---|---|---|
| {{ days.get(option.date.weekday()) }} {{ option.date.strftime('%d/%m/%Y') }} | {{ option.closure.name }} | {{ option.entry.template.name if option.entry.template else 'Horaire personnalisé' }} | {{ option.entry.start_time.strftime('%H:%M') }}–{{ option.entry.end_time.strftime('%H:%M') }}{% if option.entry.lunch_start and option.entry.lunch_end %} Pause {{ option.entry.lunch_start.strftime('%H:%M') }}–{{ option.entry.lunch_end.strftime('%H:%M') }}{% endif %} |
Aucune permanence enregistrée pour cette période.
{% endif %}| Date | Type | Prévu | Réalisé | Écart | Note |
|---|---|---|---|---|---|
| {{ entry.work_date.strftime('%d/%m/%Y') }} | {{ entry.entry_type }} | {{ entry.planned_minutes }} min | {{ entry.actual_minutes }} min | {{ '+' if entry.variance_minutes > 0 else '' }}{{ entry.variance_minutes }} min | {{ entry.note or '—' }} |
| Aucune saisie. | |||||