{% extends 'admin/layout.html.twig' %} {% block title %}Tableau de bord — WTL{% endblock %} {% block admin_body %}

Tableau de bord

Les actions urgentes d'abord, puis la vue d’ensemble.

{% if can_permission('PROSPECTION', 2) %} Nouvelle prospection{% endif %}
{% if can_permission('TASKS') %}
À traiter maintenant
Retards, actions du jour et prochaines échéances.
{% if can_permission('TASKS') %}Vue complète{% endif %}
{% for p in toProcess|slice(0,8) %} {% else %} {% endfor %}
Date Lieu Action Responsable / créateur
{{ p.nextActionDate ? p.nextActionDate|date('d/m/Y') : 'Dès que possible' }} {{ p.venueEntity ? p.venueEntity.name : p.venue }}
{{ p.venueEntity ? p.venueEntity.city : p.city }}
{{ p.nextAction ?: 'Premier contact' }} {{ p.createdBy ? p.createdBy.displayName : '—' }} Traiter
Rien d'urgent actuellement.
{% endif %} {% if can_permission('INVOICE') and unpaidInvoices is defined and unpaidInvoices %}
Factures à encaisser
Factures non réglées ou partiellement réglées pour le projet actif.
{{ unpaidInvoices|length }}
{% for invoice in unpaidInvoices %} {% set paymentStatus = paymentService.status(invoice) %} {% endfor %}
FactureClient / lieuÉmise leStatutReste à encaisserAction
{{ invoice.number }} {% if invoice.prospection and invoice.prospection.venueEntity %}{{ invoice.prospection.venueEntity.name }}{% elseif invoice.prospection %}{{ invoice.prospection.venue }}{% else %}—{% endif %} {{ invoice.issueDate|date('d/m/Y') }} {% if paymentStatus == 'PARTIAL' %}Partiellement payée{% else %}À encaisser{% endif %} {{ paymentService.remaining(invoice)|number_format(2,',',' ') }} € {% if can_permission('PAYMENT',2) %}{% else %}Lecture seule{% endif %}
{% if can_permission('PAYMENT',2) %} {% for invoice in unpaidInvoices %} {% endfor %} {% endif %} {% endif %} {% if can_permission('PROSPECTION') %}
Suggestions de prospection
Des lieux à prospecter ou recontacter selon leur historique, leurs contacts et leur potentiel.
{{ prospectionSuggestions|length }}
{% for suggestion in prospectionSuggestions %} {% set venue = suggestion.venue %} {% else %} {% endfor %}
Lieu Pourquoi maintenant ? Priorité Actions
{{ venue.name }}
{{ venue.city }}{% if venue.venueType %} · {{ venue.venueType.name }}{% endif %}
{% if venue.approximateBudget %}
Budget indicatif : {{ venue.approximateBudget|number_format(0,',',' ') }} €
{% endif %}
{% for reason in suggestion.reasons %}{{ reason }}{% endfor %} {% if suggestion.lastProspection %}
Dernière prospection : {{ suggestion.lastProspection|date('d/m/Y') }}
{% endif %} {% if suggestion.lastConcert %}
Dernier concert : {{ suggestion.lastConcert|date('d/m/Y') }}
{% endif %}
{{ suggestion.level }} {% if can_permission('PROSPECTION',2) %}Prospecter {% endif %}
Aucune suggestion pertinente pour le moment.
{% if can_permission('PROSPECTION',2) %} {% for suggestion in prospectionSuggestions %} {% set venue = suggestion.venue %} {% endfor %} {% endif %}
{% set cards=[{label:'Prospections',value:stats.total,icon:'bi-geo-alt'},{label:'Contacts envoyés',value:stats.contacted,icon:'bi-send'},{label:'Réponses / échanges',value:stats.replied,icon:'bi-chat-dots'},{label:'Propositions',value:stats.proposals,icon:'bi-file-earmark-text'},{label:'Dates confirmées',value:stats.confirmed,icon:'bi-calendar-check'},{label:'Dates réalisées',value:stats.performed,icon:'bi-check2-circle'},{label:'Relances en retard',value:stats.late,icon:'bi-exclamation-triangle'},{label:'Taux de réponse',value:stats.responseRate ~ ' %',icon:'bi-graph-up-arrow'}] %} {% for card in cards %}
{{ card.label }}
{{ card.value }}
{% endfor %}

Progression commerciale

Répartition par statut

Répartition par statut

{% for row in stats.byStatus %} {% else %} {% endfor %}
{{ row.label }} {{ row.total }}
Aucune donnée

Répartition par type de lieu

{% for row in stats.byType %} {% else %} {% endfor %}
{{ row.label }} {{ row.total }}
Aucune donnée
{% endif %} {% include 'admin/_user_manual_modal.html.twig' %} {% endblock %} {% block javascripts %}{{ parent() }} {% endblock %}