{{-- Ressources --}} {{-- Loading --}}
@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++; $resteRecouvrer = max(($totalConvenu ?? 0) - ($totalRecette ?? 0), 0); $topProg = $topClasses[0] ?? null; $modeLabels = ['M' => 'Ministère', 'S' => 'SUPMTI', 'P' => 'Présentiel', 'H' => 'Hybride', 'E' => 'En ligne']; @endphp
{{-- HEADER EXÉCUTIF --}}
P

Suivi des paiements

Analyse des encaissements par période et par filière

{{ getAnneeName($annee_id) }}
{{-- BARRE DE FILTRES --}}
@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 --}}
{{-- Centre --}} @if(auth()->user()->user_role_id == 7 || auth()->user()->user_role_id == 1)
@else
{{ $user_centre_nom }}
@endif {{-- Domaine --}}
{{-- Filière --}}
{{-- Niveau --}}
{{-- Diplôme (groupe) --}}
{{-- Mode admission --}}
{{-- Langue --}}
{{-- KPI --}}
Total convenu (N)
{{ formatedCa($totalConvenu) }}
{{ number_format(abs($evolutionConvenu),1) }}% vs N-1
Total encaissé (N)
{{ formatedCa($totalRecette) }}
{{ number_format(abs($evolutionRecette),1) }}% vs N-1
Taux de recouvrement
{{ number_format($tauxRecouvrement,1) }}%
cible 70 %reste {{ formatedCa($resteRecouvrer) }}
Évolution globale CA
{{ number_format($evolutionGlobale,1) }}%
vs N-1
{{-- SYNTHÈSE --}}
Reste à recouvrer
{{ formatedCa($resteRecouvrer) }}soit {{ number_format(100 - $tauxRecouvrement,1) }} % du convenu encore à encaisser
Meilleure progression
{{ $topProg['classe'] ?? '—' }}{{ $topProg ? '+'.number_format($topProg['evolution'],1).' % vs N-1' : 'aucune donnée' }}
Classes suivies
{{ $datas->total() ?? 0 }}lignes affichées sur cette page
{{-- GRAPHIQUE --}}
01

Paiements par période

Convenu vs Recette
Convenu Recette
{{-- TABLEAU DÉTAILLÉ --}}
03

Détail par classe et mode d'admission

@if($datas->count()) @php $z = fn ($v) => $v ? number_format($v, 0, ',', ' ') : '0'; @endphp
@php $currentClass = null; @endphp @foreach($datas as $row) @php $rowspan = $datas->where('classe', $row->classe)->count(); $totalMode12 = $row->recette_12 + $row->prevision_12; $totalMode11 = $row->recette_11 + $row->prevision_11; $classTotal12 = $datas->where('classe', $row->classe)->sum('ca_12'); $classTotal11 = $datas->where('classe', $row->classe)->sum('ca_11'); $evo = $classTotal11 ? (($classTotal12 - $classTotal11) / $classTotal11 * 100) : 0; $isFirst = $currentClass !== $row->classe; if ($isFirst) $currentClass = $row->classe; if ($classTotal12 == 0 && $classTotal11 > 0) { $grpClass = 'grp-dead'; $grpLabel = 'Sans activité'; } elseif ($evo <= -30) { $grpClass = 'grp-risk'; $grpLabel = 'Risque'; } elseif ($evo < -10) { $grpClass = 'grp-warn'; $grpLabel = 'Vigilance'; } elseif ($evo <= 0) { $grpClass = 'grp-stable'; $grpLabel = 'Stable'; } elseif ($evo >= 50) { $grpClass = 'grp-star'; $grpLabel = 'Forte croissance'; } else { $grpClass = 'grp-grow'; $grpLabel = 'Croissance'; } @endphp @if($isFirst)@endif @if($isFirst)@endif @if($isFirst) @endif @endforeach
Dip / Niv / Filière Mode {{ getAnneeName($annee_passee_id) }} {{ getAnneeName($annee_id) }} Évolution
RecettePrévisionTotal/modeTotal classe RecettePrévisionTotal/modeTotal classe
{{ $row->classe }}{{ $row->ins_mode }} {!! $z($row->recette_11) !!} {!! $z($row->prevision_11) !!} {!! $z($totalMode11) !!}{!! $z($classTotal11) !!}{!! $z($row->recette_12) !!} {!! $z($row->prevision_12) !!} {!! $z($totalMode12) !!}{!! $z($classTotal12) !!} {{ $evo >= 0 ? '+' : '' }}{{ number_format($evo, 1) }}%
{{ $datas->links() }}
@else
Aucune ligne sur ce périmètre.
@endif