{# CRM tab – stats + filters + table #} {# ── KPI cards ─────────────────────────────────────────────────── #}
{{ stats.total | default('—') }}
{{ translations.kpi_total | default('Total') }}
{{ stats.nouvelle | default('—') }}
{{ translations.status_nouvelle | default('Nouvelles') }}
{{ stats.en_cours | default('—') }}
{{ translations.status_en_cours | default('En cours') }}
{{ stats.publiee | default('—') }}
{{ translations.status_publiee | default('Publiées') }}
{# ── Filters ───────────────────────────────────────────────────── #}
{{ translations.filter_status | default('Statut') }}: {% set statusColors = { 'NOUVELLE': 'text-primary', 'EN_COURS': 'text-warning', 'EN_REVIEW': 'text-purple', 'APPROUVEE': 'text-success', 'PUBLIEE': 'text-info', 'REFUSEE': 'text-danger' } %} {% for s in statuses %} {% endfor %}
{# ── Table ─────────────────────────────────────────────────────── #}
{% if demands is not empty %} {% for d in demands %} {% endfor %} {% else %} {% endif %}
{{ translations.col_ref | default('Réf.') }} {{ translations.col_date | default('Date') }} {{ translations.col_requester | default('Demandeur') }} {{ translations.col_shop | default('Shop') }} {{ translations.col_subject | default('Sujet') }} {{ translations.col_type | default('Type') }} {{ translations.col_status | default('Statut') }} {{ translations.col_priority | default('Priorité') }}
{{ d.getRef() }} {{ d.getCreatedAt() | date('d/m/Y') }} {{ d.getRequesterName() ?? d.getShopName() ?? '—' }} {{ d.getShopName() ?? d.getShopId() }} {{ d.getDisplaySubject() | length > 40 ? d.getDisplaySubject() | slice(0, 40) ~ '…' : d.getDisplaySubject() }} {{ translations['type_' ~ d.getType() | lower] | default(d.getTypeLabel()) }} {% include 'demands/partials/_status_badge.twig' with {status: d.getStatus()} %} {% if d.getPriority() %} {{ d.getPriority() | lower | capitalize }} {% endif %}
{{ translations.no_demands | default('Aucune demande trouvée.') }}