Backoffice-Statistik: Neue-Kundenabos-Ranking & Führungskräfte-Abos
Zwei neue Listen unter der Team-Übersicht: Ranking der Berater nach neuen Kundenabos im Monat (inkl. Gesamtbestand und Linie) sowie eigene und Kundenabos aller Führungskräfte ab Stufe Vertriebsleiter mit Gesamtsumme. Beides fließt mit in die Monats-Snapshots ein. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
e7b40bc513
commit
ce07bee589
3 changed files with 417 additions and 1 deletions
|
|
@ -212,6 +212,144 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$newCustomerAbos = $statistics['new_customer_abos'] ?? null;
|
||||
$leaderAbos = $statistics['leader_abos'] ?? null;
|
||||
@endphp
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
<h5 class="mb-0">Neue Kundenabos</h5>
|
||||
<div class="text-muted small">{{ $selectedMonthName }} {{ $selectedYear }} · nach Anzahl sortiert</div>
|
||||
</div>
|
||||
<span class="display-4 font-weight-bold text-primary mb-0">
|
||||
{{ number_format((float) ($statistics['totals']['team_customer_abos_new'] ?? 0), 0, ',', '.') }}
|
||||
</span>
|
||||
</div>
|
||||
@if ($newCustomerAbos === null)
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-0">
|
||||
Für diesen Monat liegt noch ein älterer Snapshot ohne diese Liste vor.
|
||||
</p>
|
||||
</div>
|
||||
@elseif (count($newCustomerAbos) === 0)
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-0">In diesem Monat wurden keine neuen Kundenabos abgeschlossen.</p>
|
||||
</div>
|
||||
@else
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Berater</th>
|
||||
<th class="text-right">Gesamt</th>
|
||||
<th class="text-right">Neu</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($newCustomerAbos as $row)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="font-weight-semibold">{{ $row['name'] }}</div>
|
||||
<div class="text-muted small">Linie {{ $row['line'] }} · {{ $row['career_level'] }}</div>
|
||||
</td>
|
||||
<td class="text-right align-middle">
|
||||
<span class="badge badge-pill badge-outline-default backoffice-statistics-click-badge">
|
||||
{{ number_format((float) ($row['total_abo_count'] ?? 0), 0, ',', '.') }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="text-right align-middle">
|
||||
<span class="badge badge-pill badge-success backoffice-statistics-click-badge">
|
||||
+{{ number_format((float) $row['abo_count'], 0, ',', '.') }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
<h5 class="mb-0">Abos Führungskräfte</h5>
|
||||
<div class="text-muted small">ab Stufe {{ $leaderAbos['level_name'] ?? 'Vertriebsleiter' }} · aktueller Stand</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<span class="display-4 font-weight-bold text-primary mb-0">
|
||||
{{ number_format((float) ($leaderAbos['total'] ?? 0), 0, ',', '.') }}
|
||||
</span>
|
||||
@if ($leaderAbos !== null)
|
||||
<div class="text-muted small">
|
||||
{{ number_format((float) ($leaderAbos['total_own'] ?? 0), 0, ',', '.') }} eigene ·
|
||||
{{ number_format((float) ($leaderAbos['total_customer'] ?? 0), 0, ',', '.') }} Kunden
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@if ($leaderAbos === null)
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-0">
|
||||
Für diesen Monat liegt noch ein älterer Snapshot ohne diese Liste vor.
|
||||
</p>
|
||||
</div>
|
||||
@elseif (count($leaderAbos['rows']) === 0)
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-0">
|
||||
Im Team gibt es aktuell keine Führungskräfte ab Stufe {{ $leaderAbos['level_name'] }}.
|
||||
</p>
|
||||
</div>
|
||||
@else
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Führungskraft</th>
|
||||
<th class="text-right">Eigene Abos</th>
|
||||
<th class="text-right">Kundenabos</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($leaderAbos['rows'] as $row)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="font-weight-semibold">{{ $row['name'] }}</div>
|
||||
<div class="text-muted small">Linie {{ $row['line'] }} · {{ $row['career_level'] }}</div>
|
||||
</td>
|
||||
<td class="text-right align-middle">
|
||||
@if (($row['own_abo_count'] ?? 0) > 0)
|
||||
<span class="badge badge-pill badge-outline-default backoffice-statistics-click-badge">
|
||||
{{ number_format((float) $row['own_abo_count'], 0, ',', '.') }}
|
||||
</span>
|
||||
@else
|
||||
<span class="badge badge-pill badge-light backoffice-statistics-empty-badge">0</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-right align-middle">
|
||||
@if (($row['customer_abo_count'] ?? 0) > 0)
|
||||
<span class="badge badge-pill badge-outline-default backoffice-statistics-click-badge">
|
||||
{{ number_format((float) $row['customer_abo_count'], 0, ',', '.') }}
|
||||
</span>
|
||||
@else
|
||||
<span class="badge badge-pill badge-light backoffice-statistics-empty-badge">0</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue