{% extends 'base.html.twig' %} {% block title %}Entretiens — {{ car.getDisplayName() }}{% endblock %} {% block content %} {# ── En-tête ── #}

Entretiens & Charges

Nouvel entretien
{# ── Flashs ── #} {% for msg in app.flashes('success') %}
{{ msg }}
{% endfor %} {% for msg in app.flashes('error') %}
{{ msg }}
{% endfor %} {# ── KPI cards ── #}

Nb. entretiens

{{ maintenances|length }}

Coût total

{{ totalCost|number_format(2, '.', ' ') }} MAD

{% if car.insuranceExpirationDate %} {% set insuranceDays = ((car.insuranceExpirationDate.timestamp - ('now'|date('U')))/86400)|round %}

Assurance expire

{{ car.insuranceExpirationDate|date('d/m/Y') }}
{% if insuranceDays < 0 %}Expirée ! {% elseif insuranceDays < 30 %}Dans {{ insuranceDays }} jours {% else %}Dans {{ (insuranceDays / 30)|round }} mois{% endif %}
{% endif %} {% if car.nextTechnicalControlAt %} {% set ctDays = ((car.nextTechnicalControlAt.timestamp - ('now'|date('U')))/86400)|round %}

Prochain CT

{{ car.nextTechnicalControlAt|date('d/m/Y') }}
{% if ctDays < 0 %}Dépassé !{% else %}Dans {{ (ctDays / 30)|round }} mois{% endif %}
{% endif %}
{# ── Répartition par type ── #} {% if statsByType|length > 0 %}
Répartition par type
{% for stat in statsByType %}
{{ stat.typeLabel }} {{ stat.total|number_format(0, '.', ' ') }} MAD
{% endfor %}
{% endif %} {# ── Table historique ── #}
Historique des interventions
{% for m in maintenances %} {% set typeLower = m.typeLabel|lower %} {% else %} {% endfor %}
Type Date Expiration Coût Kilométrage Description Actions
{% if typeLower == 'assurance' %} {{ m.typeLabel }} {% elseif typeLower == 'vignette' %} {{ m.typeLabel }} {% elseif typeLower in ['vidange', 'révision générale'] %} {{ m.typeLabel }} {% elseif typeLower == 'contrôle technique' %} {{ m.typeLabel }} {% elseif typeLower == 'pneumatiques' %} {{ m.typeLabel }} {% elseif typeLower in ['lavage / nettoyage', 'lavage'] %} {{ m.typeLabel }} {% else %} {{ m.typeLabel }} {% endif %} {{ m.performedAt|date('d/m/Y') }} {% if m.expirationDate %} {% set expDays = ((m.expirationDate.timestamp - ('now'|date('U')))/86400)|round %} {{ m.expirationDate|date('d/m/Y') }} {% elseif m.technicalControlDate %} {% set ctDays = ((m.technicalControlDate.timestamp - ('now'|date('U')))/86400)|round %} {{ m.technicalControlDate|date('d/m/Y') }} {% else %} {% endif %} {{ m.cost|number_format(2, '.', ' ') }} MAD {{ m.mileageAtService ? m.mileageAtService|number_format(0, '.', ' ') ~ ' km' : '—' }} {{ m.description ?? '—' }}

Aucun entretien enregistré pour ce véhicule.

Ajouter le premier entretien
{% endblock %}