{% extends '@App/app.html.twig' %} {% block title %}Demandes de changement{% endblock %} {% block page_header %}{% endblock %} {% block content %} {% set self_service = is_self_service|default(false) %} {% set metrics = metrics|default({pending: 0, approved7: 0, refused7: 0, swapRate: 0, total: 0}) %} {% set filters = filters|default({}) %} {% set type_labels = {swap: 'Échange de shift', time_change: 'Modif. horaires', unavailable: 'Indisponibilité', other: 'Autre'} %} {% set type_tones = {swap: 'unavailable', time_change: 'swap', unavailable: 'time', other: 'other'} %} {% set status_labels = {submitted: 'En attente', pending: 'En attente', in_review: 'En cours', approved: 'Approuvée', refused: 'Rejetée', cancelled: 'Annulée'} %} {% set status_tones = {submitted: 'pending', pending: 'pending', in_review: 'pending', approved: 'approved', refused: 'refused', cancelled: 'cancelled'} %} {% set month_names = ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc'] %} {% set day_names = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'] %}
Gérez les requêtes d'échange de shifts et les modifications d'horaires soumises par vos collaborateurs.
| Salarié | Type de demande | Shift concerné | Remplaçant / Nouveau | Date demande | Statut | Actions |
|---|---|---|---|---|---|---|
|
{% if avatar %}
{{ employee ?: 'Salarié inconnu' }}
{{ employee and employee.employeeService ? employee.employeeService.nom : 'Service non renseigné' }}{% if employee and employee.etablissement %} - {{ employee.etablissement.nom }}{% endif %}
|
{{ type_labels[request.type]|default(request.type|capitalize) }} | {% if assignment %} {{ day_names[assignment.plannedStartAt|date('N') - 1] }}. {{ assignment.plannedStartAt|date('d') }} {{ month_names[assignment.plannedStartAt|date('n') - 1] }} {{ assignment.plannedStartAt|date('H:i') }} - {{ assignment.plannedEndAt|date('H:i') }}{% if shift %} ({{ shift.title }}){% endif %} {% else %} Shift non renseigné {% endif %} | {% if request.type == 'time_change' and request.requestedStartAt and request.requestedEndAt %} {{ request.requestedStartAt|date('H:i') }} - {{ request.requestedEndAt|date('H:i') }} {{ request.reason|default('Nouvel horaire')|length > 28 ? request.reason|slice(0, 28) ~ '...' : request.reason|default('Nouvel horaire') }} {% elseif request.replacementSalarie %} {{ request.replacementSalarie }} {% else %} Non spécifié {% endif %} | {{ request.createdAt|date('d/m/Y, H:i') }} | {{ status_labels[request.status]|default(request.status|capitalize) }} | {% if request.status in ['submitted', 'pending', 'in_review'] %} {% else %} Détails {% endif %} |
| Aucune demande de changement. | ||||||
Le délai de prévenance actuel est fixé à 48 heures. Toute demande soumise moins de 48h avant le début du shift nécessite une validation exceptionnelle.
Modifier les règles de validation →Planify vérifie les règles de repos et les chevauchements avant chaque approbation. Les conflits bloquants empêchent la validation.
Voir les conflits →