{% macro duration(minutes) %}{% set minutes = minutes|default(0) %}{{ '%02d'|format((minutes / 60)|round(0, 'floor')) }} h {{ '%02d'|format(minutes % 60) }}{% endmacro %} {% macro initials(employee) %}{{ employee.prenom|default('')|first }}{{ employee.nom|default('')|first }}{% endmacro %} {% macro status(status) %}{% set labels={open:'Ouverte',on_break:'En pause',closed:'Fermée',corrected:'Corrigée',validated:'Validée',locked:'Verrouillée',submitted:'Soumise',approved:'Approuvée',rejected:'Refusée',resolved:'Résolue',pending:'À valider',anomaly:'Anomalie',not_clocked:'Non pointé'} %}{% set tones={open:'blue',on_break:'blue',closed:'green',corrected:'purple',validated:'green',locked:'gray',submitted:'orange',approved:'green',rejected:'red',resolved:'green',pending:'orange',anomaly:'orange',not_clocked:'gray'} %}{{ labels[status]|default(status|replace({'_':' '})|capitalize) }}{% endmacro %} {% macro anomaly(type) %}{% set labels={missing_clock_out:'Sortie oubliée',missing_clock_in:'Entrée oubliée',open_break:'Pause non terminée',missing_break:'Pause obligatoire manquante',outside_planning:'Pointage hors planning',invalid_time:'Heure incorrecte',manual_correction_required:'Correction requise'} %}{{ labels[type]|default(type|replace({'_':' '})|capitalize) }}{% endmacro %} {% macro correction(type) %}{% set labels={missing_clock_in:"Oubli d'entrée",missing_clock_out:'Oubli de sortie',break:'Correction de pause',missing_break_start:'Oubli début pause',missing_break_end:'Oubli fin pause',wrong_time:'Mauvaise heure',other:'Autre'} %}{{ labels[type]|default(type|replace({'_':' '})|capitalize) }}{% endmacro %}