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:
parent
1a3af17f9a
commit
30bbfa32a0
6 changed files with 43 additions and 15 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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>';
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
</div>
|
||||
@endif
|
||||
</h6>
|
||||
<p class="text-muted small mb-2">{{ __('abo.points_order_legend') }}</p>
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="datatables-user-points table table-striped table-bordered">
|
||||
<thead>
|
||||
|
|
@ -61,15 +62,17 @@
|
|||
{{ formatNumber($userSalesVolume->total_net) }} €
|
||||
</td>
|
||||
<td class="text-left font-weight-semibold">
|
||||
<span class="badge badge-pill badge-{{ $userSalesVolume->getStatusColor() }}">{{ $userSalesVolume->getStatusType() }}</span>
|
||||
<span class="badge badge-pill badge-{{ $userSalesVolume->getStatusColor() }}">{{ $userSalesVolume->getStatusTypeWithAbo() }}</span>
|
||||
</td>
|
||||
<td class="text-left font-weight-semibold">
|
||||
@if($userSalesVolume->shopping_order)
|
||||
@php($isAboOrder = $userSalesVolume->isAboOrder())
|
||||
@php($orderLabel = $userSalesVolume->shopping_order->id.($isAboOrder ? ' '.__('abo.abo_order_short') : ''))
|
||||
@if($userSalesVolume->status === 1 && $userSalesVolume->shopping_order->auth_user_id === $userSalesVolume->user_id)
|
||||
<a href="{{ route('user_order_detail', [$userSalesVolume->shopping_order->id]) }}" class="btn btn-xs btn-primary">{{ $userSalesVolume->shopping_order->id }}</a>
|
||||
<a href="{{ route('user_order_detail', [$userSalesVolume->shopping_order->id]) }}" class="btn btn-xs btn-{{ $isAboOrder ? 'info' : 'primary' }}">{{ $orderLabel }}</a>
|
||||
@endif
|
||||
@if(($userSalesVolume->status === 2 || $userSalesVolume->status === 3) && $userSalesVolume->shopping_order->member_id === $userSalesVolume->user_id)
|
||||
<a href="{{ route('user_shop_order_detail', [$userSalesVolume->shopping_order->id]) }}" class="btn btn-xs btn-secondary">{{ $userSalesVolume->shopping_order->id }}</a>
|
||||
<a href="{{ route('user_shop_order_detail', [$userSalesVolume->shopping_order->id]) }}" class="btn btn-xs btn-{{ $isAboOrder ? 'info' : 'secondary' }}">{{ $orderLabel }}</a>
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -113,6 +113,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<p class="text-muted small mb-2">{{ __('abo.points_order_legend') }}</p>
|
||||
|
||||
@foreach ($statistics['groups'] as $group)
|
||||
@if ($group['rows'] !== [])
|
||||
<div class="card mb-4">
|
||||
|
|
@ -153,10 +155,10 @@
|
|||
<td>
|
||||
@if ($row['order_id'] && $row['order_type'] === 'own')
|
||||
<a href="{{ route('user_order_detail', [$row['order_id']]) }}"
|
||||
class="btn btn-xs btn-primary">{{ $row['order_id'] }}</a>
|
||||
class="btn btn-xs btn-{{ ($row['is_abo'] ?? false) ? 'info' : 'primary' }}">{{ $row['order_id'] }}{{ ($row['is_abo'] ?? false) ? ' '.__('abo.abo_order_short') : '' }}</a>
|
||||
@elseif ($row['order_id'] && $row['order_type'] === 'shop')
|
||||
<a href="{{ route('user_shop_order_detail', [$row['order_id']]) }}"
|
||||
class="btn btn-xs btn-secondary">{{ $row['order_id'] }}</a>
|
||||
class="btn btn-xs btn-{{ ($row['is_abo'] ?? false) ? 'info' : 'secondary' }}">{{ $row['order_id'] }}{{ ($row['is_abo'] ?? false) ? ' '.__('abo.abo_order_short') : '' }}</a>
|
||||
@else
|
||||
<span class="text-muted">—</span>
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -67,7 +67,13 @@
|
|||
<div class="text-muted small mt-2 text-center">
|
||||
{{ __('abo.payline_hint', ['lines' => $paylineAboTurnover['paylines'], 'members' => $paylineAboTurnover['members']]) }}
|
||||
<br>
|
||||
{{ __('abo.payline_abo_counts', ['team_abos' => $paylineAboTurnover['team_abo_count'] ?? 0, 'customer_abos' => $paylineAboTurnover['team_customer_abo_count'] ?? 0]) }}
|
||||
@php($paylineTeamAbos = (int) ($paylineAboTurnover['team_abo_count'] ?? 0))
|
||||
@php($paylineCustomerAbos = (int) ($paylineAboTurnover['team_customer_abo_count'] ?? 0))
|
||||
{{ __('abo.payline_abo_counts', [
|
||||
'team_abos' => $paylineTeamAbos,
|
||||
'customer_abos' => $paylineCustomerAbos,
|
||||
'total' => $paylineTeamAbos + $paylineCustomerAbos,
|
||||
]) }}
|
||||
</div>
|
||||
@else
|
||||
<p class="text-muted mb-0 mt-2">{{ __('abo.payline_none') }}</p>
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@
|
|||
@include('user.team._points_sum', ['userSalesVolume' => $userSalesVolume])
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="px-3 pt-3">
|
||||
<p class="text-muted small mb-2">{{ __('abo.points_order_legend') }}</p>
|
||||
</div>
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="table table-striped table-bordered" id="datatable-user-points">
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue