{% set info = get_global_parameters() %}
{{ month|mois_fr }}
{% set weekIndices = [] %} {% set prevWeekId = (dates[0]|date('Y-W')) %} {% set weekIndices = [0] %} {% for i, date in dates %} {% set weekId = date|date('Y-W') %} {% if weekId != prevWeekId %} {% set weekIndices = weekIndices|merge([i]) %} {% set prevWeekId = weekId %} {% endif %} {% endfor %} {% for i, date in dates %} {# Ajoute une colonne total après la fin d'une semaine #} {% set nextDate = dates[i + 1] ?? null %} {% if nextDate and (nextDate|date('Y-W') != date|date('Y-W')) %} {% endif %} {% endfor %} {# Dernière colonne Total si le mois ne finit pas un dimanche #} {% if dates|last and (dates|last|date('w') != 0) %} {% endif %} {% for emp in employees %} {% set initials = emp.prenom|slice(0, 1)|upper ~ emp.nom|slice(0, 1)|upper %} {% for i, date in dates %} {% set slots = planning[emp.id][date] ?? [] %} {% set isFixedOff = fixedOffDays[emp.id][date] ?? false %} {% set hasActiveContract = contractDays[emp.id][date] ?? false %} {% set weekId = date|date('Y-W') %} {% set isLocked = weekId in lockedWeeks %} {% set isPast = date < "now"|date("Y-m-d") %} {% if planningSettings.delayEnabled %} {% set isPast = (date|date('U')) < ("now"|date_modify("+" ~ planningSettings.delayDays ~ " days")|date('U')) %} {% endif %} {% if slots %} {% else %} {% set blocked = blockedDays[emp.id][date|date('Y-m-d')] is defined %} {% endif %} {# Après chaque fin de semaine, ajoute le total #} {% set nextDate = dates[i + 1] ?? null %} {% if nextDate and (nextDate|date('Y-W') != weekId) %} {% endif %} {% endfor %} {# Dernière colonne Total si le mois ne finit pas un dimanche #} {% set lastWeekId = dates|last|date('Y-W') %} {% if dates|last and (dates|last|date('w') != 0) %} {% endif %} {% endfor %}
Employé{{ date|jour_abbr }}TotalTotal
{% if emp.image is not null %} image de profil {% else %} {{ initials }} {% endif %}
{{ emp.prenom }} {{ emp.nom }}
{{ emp.role }}
{% for slot in slots %} {% if slot.type == "travail" %} {{ slot.start }}
{{ slot.end }} {% if slot.hasNote %} {% endif %} {% else %} {{ slot.typeOff|capitalize|slice(0, 10) }} {% endif %}
{% endfor %} {% if not isLocked and not isPast and not isFixedOff and hasActiveContract %} {% endif %}
{% if blocked %} {% elseif isFixedOff %} Repos {% elseif not hasActiveContract %} {% endif %} {{ weekTotals[emp.id][weekId]|default(0)|number_format(2, ',', ' ') }} h
{% if loop.parent.loop.index0 == 0 %} {% if isLocked %} {% else %} {% endif %} {% endif %}
{{ weekTotals[emp.id][lastWeekId]|default(0)|number_format(2, ',', ' ') }} h