{{-- ═══════════════════════════════════════════════════════════ DASHBOARD GLOBAL SUPMTI — VERSION PREMIUM (REDESIGN) ═══════════════════════════════════════════════════════════ --}} {{-- LOADING --}}
@error('erreurFiltre') @enderror {{-- PRÉ-CALCULS --}} @php $total_passee = $insc_annee_passee + $reinsc_annee_passee; $total_cours = $insc_annee_cours + $reinsc_annee_cours; $taux_total = $total_passee != 0 ? (($total_cours - $total_passee) * 100) / $total_passee : 0; $conv_preinsc = $preinsc_annee_cours > 0 ? round(($insc_annee_cours / $preinsc_annee_cours) * 100, 1) : 0; $retention = $total_passee > 0 ? round(($reinsc_annee_cours / $total_passee) * 100, 1) : 0; $leads_restants = max($preinsc_annee_cours - $insc_annee_cours, 0); $cible_recouvrement = 70; $ecart_recouvrement = round($cible_recouvrement - $taux_recouvrement, 1); $gain_potentiel = max($ca_annee_cours * ($cible_recouvrement / 100) - $paiement_annee_cours, 0); $campus = $topCampus ?? []; $filieres_stats = $filieresStats ?? []; $objectif_ca_val = ($objectifCA ?? 0) ?: max((int) round($ca_annee_passee * 1.15), 1); $objectif_insc_val = ($objectifInsc ?? 0) ?: max((int) round($total_passee * 1.1), 1); $prog_ca = $objectif_ca_val > 0 ? min(round(($ca_annee_cours / $objectif_ca_val) * 100), 100) : 0; $prog_insc = $objectif_insc_val > 0 ? min(round(($total_cours / $objectif_insc_val) * 100), 110) : 0; $prog_recouv = round(($taux_recouvrement / $cible_recouvrement) * 100); $cmp_max = max( $insc_annee_passee, $insc_annee_cours, $reinsc_annee_passee, $reinsc_annee_cours, $total_passee, $total_cours, $preinsc_annee_passee, $preinsc_annee_cours, 1, ); $cmp_rows = [ ['Inscriptions', $insc_annee_passee, $insc_annee_cours, $taux_insc], ['Réinscriptions', $reinsc_annee_passee, $reinsc_annee_cours, $taux_reinsc], ['Inscriptions + Réinscriptions', $total_passee, $total_cours, $taux_total], ['Préinscriptions', $preinsc_annee_passee, $preinsc_annee_cours, $taux_preinsc], ]; @endphp
{{-- HEADER EXÉCUTIF --}}
P

Tableau de bord exécutif

POLYSCO · Groupe d'écoles & universités

{{ getAnneeName($annee_id) }}
{{-- BARRE DE FILTRES (sticky) --}} @php $activeFiltersCount = 0; if (!empty($centre_id) && $centre_id != 0) $activeFiltersCount++; if (!empty($domaine_id) && $domaine_id != 0) $activeFiltersCount++; if (!empty($filiere_id) && $filiere_id != 0) $activeFiltersCount++; if (!empty($mode_admission) && $mode_admission != 0) $activeFiltersCount++; if (!empty($niveau_id) && $niveau_id != 0) $activeFiltersCount++; if (!empty($diplome_id) && $diplome_id != 0) $activeFiltersCount++; if (!empty($langue_id) && $langue_id != 0) $activeFiltersCount++; if (!empty($centre_diplome_id) && $centre_diplome_id != 0) $activeFiltersCount++; @endphp
@if ($centre_id) {{ getCenterName($centre_id) }} @endif @if ($domaine_id) {{ getDomaineName($domaine_id) }} @endif @if ($filiere_id) {{ getFiliName($filiere_id) }} @endif @if ($mode_admission) {{ getModeAd($mode_admission) }} @endif @if ($niveau_id) {{ getNiveauName($niveau_id) }} @endif @if ($diplome_id) {{ getGroupeDiplomeName($diplome_id) }} @endif @if ($langue_id) {{ getLangueName($langue_id) }} @endif
{{-- PANEL FILTRES AVEC wire:key SUR TOUS LES SELECTS --}}
{{-- Année scolaire --}}
{{-- Centre de formation --}} @if(auth()->user()->user_role_id == 7 || auth()->user()->user_role_id == 1)
@else
{{ $user_centre_nom }}
@endif {{-- Domaine --}}
{{-- Mode admission --}}
{{-- Centre de diplôme --}} @if(auth()->user()->user_role_id == 7 || auth()->user()->user_role_id == 1)
@else
{{ $user_centre_nom }}
@endif {{-- Filière --}}
{{-- Niveau --}}
{{-- Diplôme --}}
{{-- Langue de formation --}}
{{-- BLOC 01 — KPI EXÉCUTIFS --}}
01

Vue exécutive

la santé du centre en un coup d'œil
Chiffre d'affaires
{{ formatedCa($ca_annee_cours) }}
{{ number_format($taux_croissance_ca, 2, ',', '.') }} % vs {{ formatedCa($ca_annee_passee) }} Pour N-1
Encaissements
{{ formatedCa($paiement_annee_cours) }}
{{-- Changement de couleur : #22C55E → #2C53A2 --}}
{{ number_format($taux_recouvrement, 1, ',', '.') }} % du CAencaissé
Reste à recouvrer
{{ formatedCa($prevision_annee_cours) }}
{{ number_format(100 - $taux_recouvrement, 1, ',', '.') }} % du CAà relancer
Taux recouvrement
{{ number_format($taux_recouvrement, 2, ',', '.') }}%
{{-- Changement de couleur : #0F766E → #2563EB --}}
cible {{ $cible_recouvrement }} %{{ $ecart_recouvrement > 0 ? '-' . number_format($ecart_recouvrement, 1, ',', '.') . ' pts' : 'atteinte' }}
Étudiants inscrits
{{ number_format($total_cours, 0, ',', ' ') }}
{{ number_format($taux_total, 2, ',', '.') }} %vs {{ number_format($total_passee, 0, ',', ' ') }} Pour N-1
{{-- CONTENU TRIABLE --}}
{{-- BLOC 02 — CA + COMPOSITION PAIEMENTS --}}
02

Évolution du chiffre d'affaires

{{-- Changement de couleur : #0F766E → #2563EB --}} {{ getAnneeName($annee_id) }} {{ getAnneeName($annee_passee_id) }}
CA.

Composition des paiements

{{-- Changement de couleur : #0F766E → #2563EB --}}
Encaissé {{ formatedCa($paiement_annee_cours) }}
À recouvrer {{ formatedCa($prevision_annee_cours) }}

Total facturé {{ formatedCa($ca_annee_cours) }}
@if($ecart_recouvrement > 0)
{{ number_format($ecart_recouvrement, 1, ',', '.') }} pts sous la cible. Recouvrer à {{ $cible_recouvrement }} % = +{{ formatedCa($gain_potentiel) }} de trésorerie.
@endif
CA.
{{-- BLOC 03 — ENTONNOIR D'ADMISSIONS + LEADERBOARD --}}
03

Tunnel d'admissions

{{ getAnneeName($annee_id) }}

De la préinscription à l'étudiant actif

@php $fmax = max($preinsc_annee_cours, $insc_annee_cours, $total_cours, 1); $cx = 130; $mw = 220; $minw = 52; $w1 = max(round($preinsc_annee_cours / $fmax * $mw), $minw); $w2 = max(round($insc_annee_cours / $fmax * $mw), $minw); $w3 = max(round($total_cours / $fmax * $mw), $minw); $x1 = $cx - $w1 / 2; $x1b = $cx + $w1 / 2; $x2 = $cx - $w2 / 2; $x2b = $cx + $w2 / 2; $x3 = $cx - $w3 / 2; $x3b = $cx + $w3 / 2; @endphp Préinscriptions {{ number_format($preinsc_annee_cours, 0, ',', ' ') }} {{ number_format($insc_annee_cours, 0, ',', ' ') }} Étudiants actifs {{ number_format($total_cours, 0, ',', ' ') }} Préinscriptions {{ $taux_preinsc >= 0 ? '+' : '' }}{{ number_format($taux_preinsc, 0, ',', '.') }} % vs N-1 Inscriptions nouvelles conversion {{ number_format($conv_preinsc, 1, ',', '.') }} % Étudiants actifs + {{ number_format($reinsc_annee_cours, 0, ',', ' ') }} réinsc. · rétention {{ number_format($retention, 0, ',', '.') }} %
Réservoir à convertir
{{ number_format($leads_restants, 0, ',', ' ') }} préinscrits
Taux de conversion
{{ number_format($conv_preinsc, 1, ',', '.') }} %
04

Performance par centre

Classement par CA · année en cours

@if (count($campus))
@foreach ($campus as $i => $c) @endforeach
CampusCAÉtud.Recouvr.Croiss.
{{ $i + 1 }}
{{ $c['nom'] }}{{ $c['sub'] }}
{{ $c['ca'] }} {{ $c['etud'] }} {{ abs($c['croiss']) }}%
@else
Aucune donnée centre sur ce périmètre.
@endif
{{-- BLOC 05 — INSCRIPTIONS --}}
05

Inscriptions — comparaison annuelle

{{ getAnneeName($annee_passee_id) }} {{-- Changement de couleur : #0F766E → #2563EB --}} {{ getAnneeName($annee_id) }}
@foreach ($cmp_rows as $r) @php $rname = $r[0]; $rp = (int) $r[1]; $rc = (int) $r[2]; $rt = (float) $r[3]; $wp = round(($rp / $cmp_max) * 100, 1); $wc = round(($rc / $cmp_max) * 100, 1); $is_total = $rname === 'Inscriptions + Réinscriptions'; @endphp
{{ $rname }} {{ number_format($rt, 1, ',', '.') }}% {{ $rc >= $rp ? '+' : '' }}{{ number_format($rc - $rp, 0, ',', ' ') }}
{{ getAnneeName($annee_passee_id) }}{{ number_format($rp, 0, ',', ' ') }}
{{-- Couleur de la barre pour l'année en cours : #0F766E → #2563EB --}}
{{ getAnneeName($annee_id) }}{{ number_format($rc, 0, ',', ' ') }}
@endforeach
{{-- BLOC 06 — FILIÈRES --}}
06

Analyse des filières

Taille = effectif · couleur = croissance vs N-1

@if (count($filieres_stats))
@foreach ($filieres_stats as $f)
{{ $f['nom'] }}
{{ $f['croiss'] >= 0 ? '+' : '' }}{{ $f['croiss'] }}%
{{ $f['etud'] }} étud. · {{ $f['ca'] }}
@endforeach
@else
Aucune filière sur ce périmètre.
@endif
{{-- SCRIPTS --}}