@extends('layouts.layout-2') @section('content')
Linienbasierte Übersicht für alle vorhandenen Team-Linien. Klickbare Zahlen führen direkt in die passenden Namen- und Detaillisten.
Baum-Definition: {{ $treeLabels[$selectedTree] ?? $selectedTree }} @if ($selectedTree === \App\Services\Backoffice\BackofficeDashboardService::TREE_COMMISSION) — dieselben Mitglieder und dieselben Punkte (Provisionspunkte) wie die Team-Struktur. @if (($statistics['tree_source'] ?? 'live') === 'stored_structure') Mitglieder je Linie stammen aus dem gespeicherten Provisionslauf dieses Monats. @else Im laufenden Monat rechnen beide Seiten live; die Provisions-Kachel ist bis zu 6 Stunden zwischengespeichert. @endif @else — jeder nicht gelöschte Teampartner zählt, auch ohne Mitgliedsebene oder Abrechnungskonto und unterhalb solcher Partner. Diese Sicht weicht bewusst von der Team-Struktur ab. @endif
@if (!empty($performance))| Linie | @foreach ($clickableMetrics as $metric){{ $metricHeadings[$metric] }} | @endforeach
|---|---|
| {{ $line['label'] }} | @foreach ($clickableMetrics as $metric)@if ($line[$metric] != 0) {{ $formatValue($line[$metric], $metric) }} @php $newMetric = $newAboMetric($line, $metric); @endphp @if ($newMetric && $line[$newMetric] != 0) +{{ number_format($line[$newMetric], 0, ',', '.') }} @endif @else 0 @endif | @endforeach
| {{ $statistics['totals']['label'] }} | @foreach ($clickableMetrics as $metric)@if ($statistics['totals'][$metric] != 0) {{ $formatValue($statistics['totals'][$metric], $metric) }} @php $newMetric = $newAboMetric($statistics['totals'], $metric); @endphp @if ($newMetric && $statistics['totals'][$newMetric] != 0) +{{ number_format($statistics['totals'][$newMetric], 0, ',', '.') }} @endif @else 0 @endif | @endforeach
@if ($isLegacyPayload) Umsatz (Punkte) = Eigen- + Kundenpunkte (ältere Berechnung dieses Monats, inkl. Punkte ohne Payline-Wirkung). @if ($nonPaylinePoints !== null && $nonPaylinePoints > 0) Davon {{ \App\Services\Util::formatNumber($nonPaylinePoints) }} Punkte ohne Payline-Wirkung — die Team-Struktur fällt um diesen Betrag niedriger aus. @endif @else Umsatz (Punkte) = Provisionspunkte (Teampunkte + Kundenpunkte), so wie sie in der Team-Struktur je Linie stehen und verprovisioniert werden. @if ($nonPaylinePoints !== null && $nonPaylinePoints > 0) Nicht enthalten: {{ \App\Services\Util::formatNumber($nonPaylinePoints) }} Punkte ohne Payline-Wirkung (z. B. Neupartner-Einschreibungspunkte) — sie zählen nur als Karrierepunkte des jeweiligen Beraters. @endif @if ($stornoFloorPoints !== null && $stornoFloorPoints > 0) Nicht abgezogen: {{ \App\Services\Util::formatNumber($stornoFloorPoints) }} Punkte aus negativen Monatssalden einzelner Berater (Stornos über die Buchungen des Monats hinaus) — die Provisionsberechnung wertet einen negativen Saldo mit 0. @endif @endif
Für diesen Monat liegt noch ein älterer Snapshot ohne diese Liste vor.
In diesem Monat wurden keine neuen Kundenabos abgeschlossen.
| Berater | Gesamt | Neu |
|---|---|---|
|
{{ $row['name'] }}
@if (!empty($row['is_self']))
ich
@endif
{{ !empty($row['is_self']) ? 'Eigene Kundenabos' : 'Linie '.$row['line'] }} · {{ $row['career_level'] }}
|
{{ number_format((float) ($row['total_abo_count'] ?? 0), 0, ',', '.') }} | +{{ number_format((float) $row['abo_count'], 0, ',', '.') }} |
Für diesen Monat liegt noch ein älterer Snapshot ohne diese Liste vor.
Im Team gibt es aktuell keine Führungskräfte ab Stufe {{ $leaderAbos['level_name'] }}.
| Führungskraft | Eigene Abos | Kundenabos | Teamabos (gesamt) | Team-Kundenabos (gesamt) | Gesamt |
|---|---|---|---|---|---|
|
{{ $row['name'] }}
Linie {{ $row['line'] }} · {{ $row['career_level'] }}
|
{{-- Die "direkt"-Spalten sind auf Kundenwunsch (07.09.2026) raus; die
Kopf-Summe rechnet intern weiter mit ihnen, weil nur sie
ueberschneidungsfrei ist (siehe Fussnote unter der Tabelle). --}}
@foreach (['own_abo_count', 'customer_abo_count', 'team_abo_count_total', 'team_customer_abo_count_total'] as $countKey)
@if (($row[$countKey] ?? 0) > 0) {{ number_format((float) $row[$countKey], 0, ',', '.') }} @else 0 @endif | @endforeach{{ number_format((float) $leaderTotal, 0, ',', '.') }} |
gesamt = komplette Downline inklusive der Teams untergeordneter Führungskräfte — dieselben Abos können dort bei mehreren Führungskräften zählen, die Spalten lassen sich deshalb nicht aufsummieren. Die Summe oben rechts zählt jedes Abo genau einmal (Team jeweils nur bis zur nächsten Führungskraft) und ist deshalb kleiner als die Spaltensummen.
Für diesen Monat liegt noch ein älterer Snapshot ohne diese Liste vor.
In diesem Monat wurden keine Neupartner gesponsert.
| Sponsor | Neupartner | neues Volumen |
|---|---|---|
|
{{ $row['name'] }}
@if (!empty($row['is_self']))
ich
@endif
{{ !empty($row['is_self']) ? 'Eigene Neupartner' : 'Linie '.$row['line'] }} · {{ $row['career_level'] }}
|
+{{ number_format((float) $row['new_partner_count'], 0, ',', '.') }} | {{ \App\Services\Util::formatNumber($row['volume_points']) }} P. |
|
||
| Summe | {{ number_format((float) $recruiterTotals['new_partner_count'], 0, ',', '.') }} | {{ \App\Services\Util::formatNumber($recruiterTotals['volume_points']) }} |
neues Volumen = Monats-Gesamtpunkte (Eigen- und Kundenpunkte, inkl. Starterpaket)
der geworbenen Neupartner — plus rekursiv die Punkte der Neupartner, die diese im selben Monat
selbst geworben haben. Klick auf eine Zeile zeigt, wer geworben wurde.
@if ($recruiterTotals !== null)
Summe = Volumen aller Neupartner des Monats, jeder genau einmal gezählt.
Sie ist kleiner als die Spalte darüber, weil ein Neupartner dort zusätzlich im Kettenvolumen
seines Sponsors steckt.
@endif
Für diesen Monat liegt noch ein älterer Snapshot ohne diese Liste vor.
Im Team gibt es aktuell keine aktiven Kundenabos.
| Platz | Berater | Kundenabos |
|---|---|---|
| {{ $loop->iteration }}. |
{{ $row['name'] }}
@if (!empty($row['is_self']))
ich
@endif
{{ !empty($row['is_self']) ? 'Eigene Kundenabos' : 'Linie '.$row['line'] }} · {{ $row['career_level'] }}
|
{{ number_format((float) $row['abo_count'], 0, ',', '.') }} |
Für diesen Monat liegt noch ein älterer Snapshot ohne diese Liste vor.
Im Team gibt es aktuell keine Kundenabo-Umsätze.
| Platz | Berater | Abos | Abgerechnet (Punkte) | davon reine Abo-Punkte | einmalig dazu | Bestand/Lieferung |
|---|---|---|---|---|---|---|
| {{ $loop->iteration }}. |
{{ $row['name'] }}
@if (!empty($row['is_self']))
ich
@endif
{{ !empty($row['is_self']) ? 'Eigene Kundenabos' : 'Linie '.$row['line'] }} · {{ $row['career_level'] }}
|
{{ number_format((float) ($row['abo_count'] ?? 0), 0, ',', '.') }} | {{ \App\Services\Util::formatNumber($row['points_actual']) }} | {{-- Aufteilung erst ab 06/2026 erfasst; aeltere Snapshots haben die Schluessel gar nicht -> dann bleiben die Zellen leer. --}}{{ isset($row['points_recurring']) ? \App\Services\Util::formatNumber($row['points_recurring']) : '–' }} | {{ isset($row['points_addon']) ? \App\Services\Util::formatNumber($row['points_addon']) : '–' }} | {{ \App\Services\Util::formatNumber($row['points_target']) }} |
Teamabos sind Berater-/Eigenabos im Team. Teamkundenabos sind Kundenabos, die einem Berater aus der jeweiligen Linie zugeordnet sind.
Umsatz = Gesamtpunkte der Linie (Eigen- und Kundenpunkte zusammen). Ein Klick auf eine Zahl öffnet die zugehörige Namensliste.
Die Detailansichten liefern bereits Namen und Basisdaten. Im nächsten Schritt werden Abo-Punkte und Umsatzarten noch feiner nach Abo, Einzelbestellung und Shop getrennt.