Kundenfeedback 07.09. (K4, K5) und Karriere-Fallback: fehlende Controller-/View-Teile

Die Pakete stehen im Plan als umgesetzt und sind live, der Controller- und
View-Teil lag aber nur im Arbeitsbaum (Sprachkeys und Model-Methoden sind
seit 5a38f4a/685f7a9 versioniert):
- K5: Abo-Bestellungen in Punkteuebersicht, Dashboard-Punkten und eigener
  Statistik tuerkis mit Zusatz "(Abo)", Legende darueber.
- K4: Summe der Payline-Abos ("149 + 391 = 540 Abos gesamt").
- Home: payline_is_career_fallback, solange die Monatsquali aussteht
  (Kundenentscheid 01.09.); die View wertet das Kennzeichen schon aus.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin 2026-09-23 15:43:09 +00:00
parent 1a3af17f9a
commit 30bbfa32a0
6 changed files with 43 additions and 15 deletions

View file

@ -153,7 +153,8 @@ class HomeController extends Controller
// Berater) — die Payline-Mitgliedermenge selbst enthält auch inaktive,
// deren Abos weiterhin in die Abo-/Punkte-Summen der Payline zählen.
$activeTeamUserIds = $dashboardService->activeTeamUserIds($user->id);
$paylineMemberIds = $paylineService->paylineContext($user, $month, $year)['member_ids'];
$paylineContext = $paylineService->paylineContext($user, $month, $year);
$paylineMemberIds = $paylineContext['member_ids'];
$activePaylineMemberCount = count(array_intersect($activeTeamUserIds, $paylineMemberIds));
// Abo-Zähler der Payline monatsbezogen wie die übrigen Abo-Kacheln (N2) —
@ -176,6 +177,9 @@ class HomeController extends Controller
'payline_member_count' => $activePaylineMemberCount,
'payline_abo_count' => $paylineAboCount,
'payline_abos_new' => $paylineService->newPaylineAboCount($user, $month, $year),
// Monatsquali steht noch aus -> die beiden Payline-Kacheln rechnen
// mit den Ebenen des Karriere-Levels und weisen das aus.
'payline_is_career_fallback' => (bool) $paylineContext['is_career_fallback'],
'level' => app(LiveCommissionService::class)->levelProgress($user, $month, $year),
'level_forecast' => $levelForecast,
'top_results' => app(TopResultsService::class)->monthlyTop3($user, $month, $year),

View file

@ -1088,14 +1088,24 @@ class TeamController extends Controller
return \DataTables::eloquent($query)
// Abo-Bestellungen setzen sich farblich und per Zusatz von den
// Shop-Bestellungen ab (Kundenwunsch 2026-09-07). Die Farbe bleibt
// ansonsten wie bisher: eigene Bestellung vs. Kundenbestellung.
->addColumn('order', function (UserSalesVolume $UserSalesVolume) {
if ($UserSalesVolume->shopping_order) {
if ($UserSalesVolume->status === 1 && $UserSalesVolume->shopping_order->auth_user_id === $UserSalesVolume->user_id) {
return '<a href="'.route('user_order_detail', [$UserSalesVolume->shopping_order->id]).'" class="btn btn-xs btn-primary">'.$UserSalesVolume->shopping_order->id.'</a>';
}
if (($UserSalesVolume->status === 2 || $UserSalesVolume->status === 3) && $UserSalesVolume->shopping_order->member_id === $UserSalesVolume->user_id) {
return '<a href="'.route('user_shop_order_detail', [$UserSalesVolume->shopping_order->id]).'" class="btn btn-xs btn-secondary">'.$UserSalesVolume->shopping_order->id.'</a>';
}
$order = $UserSalesVolume->shopping_order;
if (! $order) {
return '';
}
$isAbo = $UserSalesVolume->isAboOrder();
$label = $order->id.($isAbo ? ' '.__('abo.abo_order_short') : '');
if ($UserSalesVolume->status === 1 && $order->auth_user_id === $UserSalesVolume->user_id) {
return '<a href="'.route('user_order_detail', [$order->id]).'" class="btn btn-xs btn-'.($isAbo ? 'info' : 'primary').'">'.$label.'</a>';
}
if (($UserSalesVolume->status === 2 || $UserSalesVolume->status === 3) && $order->member_id === $UserSalesVolume->user_id) {
return '<a href="'.route('user_shop_order_detail', [$order->id]).'" class="btn btn-xs btn-'.($isAbo ? 'info' : 'secondary').'">'.$label.'</a>';
}
return '';
@ -1107,7 +1117,7 @@ class TeamController extends Controller
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusTurnoverColor().'">'.$UserSalesVolume->getStatusTurnoverType().'</span>';
})
->addColumn('status', function (UserSalesVolume $UserSalesVolume) {
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusColor().'">'.$UserSalesVolume->getStatusType().'</span>';
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusColor().'">'.$UserSalesVolume->getStatusTypeWithAbo().'</span>';
})
->addColumn('message', function (UserSalesVolume $UserSalesVolume) {
return '<span class="no-line-break">'.$UserSalesVolume->message.'</span>';