{% extends '@App/app.html.twig' %} {% block title %}Solde de congés — {{ salarie }}{% endblock %} {% block page_header %}{% endblock %} {% block content %} {% set avatar_src = salarie.photo ? asset('uploads/salaries/' ~ salarie.photo) : null %} {% set initials = (salarie.prenom|default('?')|first ~ salarie.nom|default('')|first)|upper %} {% set service_name = salarie.employeeService ? salarie.employeeService.nom : salarie.service|default('') %} {% set job_name = salarie.employeeJob ? salarie.employeeJob.nom : salarie.poste|default('') %} {% set status = salarie.statut|default('actif') %} {% set colors = ['blue', 'green', 'purple', 'orange', 'muted'] %} {% set selected_period = filters.period|default('') %} {% set status_labels = { draft: 'Brouillon', submitted: 'Soumise', pending_manager: 'Att. manager', pending_hr: 'Att. RH', approved: 'Approuvée', refused: 'Refusée', cancelled: 'Annulée' } %}

Solde de congés — {{ salarie }}

Exporter
{% if avatar_src %} {{ salarie }} {% else %} {{ initials }} {% endif %}

{{ salarie }}

{{ status|capitalize }}

{{ job_name|default('Poste non renseigné') }} — {{ salarie.matricule|default('Matricule non renseigné') }}

{{ service_name|default('Service non renseigné') }} {{ salarie.etablissement ?: 'Établissement non renseigné' }} {{ salarie.manager ?: 'Manager non renseigné' }} Entrée: {{ salarie.dateEntree ? salarie.dateEntree|date('d/m/Y') : 'Non renseignée' }}
Voir le profil
{% for balance in balances|slice(0, 4) %} {% set color = colors[loop.index0 % 5] %} {% set base = balance.acquired + balance.adjusted + balance.carriedOver %} {% set raw_percent = base > 0 ? (balance.available / base * 100) : 0 %} {% set percent = raw_percent < 0 ? 0 : (raw_percent > 100 ? 100 : raw_percent) %}
{{ balance.leaveType.nom }} {% if balance.leaveType.balanceManaged %} {{ balance.available|number_format(balance.available == balance.available|round ? 0 : 1, ',', ' ') }} j {% else %} — {% endif %} {{ balance.leaveType.balanceManaged ? 'disponibles' : 'non décompté' }} Acquis: {{ balance.acquired|number_format(1, ',', ' ') }} j Pris: {{ balance.taken|number_format(1, ',', ' ') }} j Attente: {{ balance.pending|number_format(1, ',', ' ') }} j Ajusté: {{ balance.adjusted|number_format(1, ',', ' ') }} j
{% else %}
Aucun solde disponible Initialisez les compteurs de ce salarié pour afficher le détail.
{% endfor %}
{% for balance in balances %} {% set color = colors[loop.index0 % 5] %} {% else %} {% endfor %}
Type Période Acquis Pris En attente Ajusté Reporté Expiré Disponible Actions
{{ balance.leaveType.nom }} {{ balance.period.nom }} {{ balance.acquired|number_format(1, ',', ' ') }} j {{ balance.taken > 0 ? '-' : '' }}{{ balance.taken|abs|number_format(1, ',', ' ') }} j {{ balance.pending|number_format(1, ',', ' ') }} j {{ balance.adjusted > 0 ? '+' : '' }}{{ balance.adjusted|number_format(1, ',', ' ') }} j {{ balance.carriedOver|number_format(1, ',', ' ') }} j {{ balance.expired|number_format(1, ',', ' ') }} j {{ balance.available|number_format(1, ',', ' ') }} j
Aucun compteur pour ce salarié.

Derniers mouvements

Voir tout l'historique
{% endblock %}