mivita/resources/views/dashboard/_points.blade.php
Kevin 30bbfa32a0 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>
2026-09-23 15:43:09 +00:00

138 lines
No EOL
8 KiB
PHP

@php
$selectedMonth = request()->get('points_month', date('n'));
$selectedYear = request()->get('points_year', date('Y'));
@endphp
<div class="d-flex col-xl-12 align-items-stretch">
<div class="card w-100 mb-4">
<h5 class="card-header with-elements d-flex justify-content-between align-items-center flex-wrap">
<div class="card-header-title">{{__('home.current_points_for') }} {{ HTMLHelper::getMonth($selectedMonth) }} {{ $selectedYear }} </div>
<div class="d-flex align-items-center mt-2 mt-md-0">
<select id="points-month-filter" class="form-control custom-select form-control-sm mr-2" style="width: auto;">
@foreach(HTMLHelper::getTransMonths() as $monthNum => $monthName)
<option value="{{ $monthNum }}" {{ $selectedMonth == $monthNum ? 'selected' : '' }}>{{ $monthName }}</option>
@endforeach
</select>
<select id="points-year-filter" class="form-control custom-select form-control-sm" style="width: auto;">
@foreach(HTMLHelper::getYearRange() as $year)
<option value="{{ $year }}" {{ $selectedYear == $year ? 'selected' : '' }}>{{ $year }}</option>
@endforeach
</select>
</div>
</h5>
<div class="card-body">
@if($user->isActiveAccount())
<h6>
@php($userSalesVolume = $user->getUserSalesVolume($selectedMonth, $selectedYear, 'first'))
@if($userSalesVolume)
<div class="mb-2">
<strong>{{ __('team.total_points') }}: {{ formatNumber($userSalesVolume->getPointsKPSum()) }}</strong> | {{ __('team.own') }}: {{ $userSalesVolume->getFormattedMonthKPPoints() }} | {{ __('team.shop') }}: {{ $userSalesVolume->getFormattedMonthShopPoints() }}<br>
</div>
<div>
<strong>{{ __('team.total_turnover') }}: {{ formatNumber($userSalesVolume->getTotalNetSum()) }} &euro;</strong> | {{ __('team.own') }}: {{ formatNumber($userSalesVolume->month_total_net) }} &euro; | {{ __('team.shop') }}: {{ formatNumber($userSalesVolume->month_shop_total_net) }} &euro;
</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>
<tr>
<th>{{__('tables.date') }}</th>
<th>{{__('tables.points')}}</th>
<th>{{__('tables.net_sales')}}</th>
<th>{{__('tables.type')}}</th>
<th>{{__('tables.order')}}</th>
<th>{{__('tables.member')}}</th>
<th>{{__('tables.info') }}</th>
<th>{{__('tables.note') }}</th>
</tr>
</thead>
<tbody>
@php($userSalesVolumes = $user->getUserSalesVolume($selectedMonth, $selectedYear, 'get', ['shopping_order.shopping_user']))
@if($userSalesVolumes)
@foreach ($userSalesVolumes as $userSalesVolume)
<tr>
<td class="text-left font-weight-semibold">
{{ $userSalesVolume->date }}
</td>
<td class="text-left font-weight-semibold">
{{ $userSalesVolume->getFormattedPoints() }}
</td>
<td class="text-left font-weight-semibold">
{{ formatNumber($userSalesVolume->total_net) }} &euro;
</td>
<td class="text-left font-weight-semibold">
<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-{{ $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-{{ $isAboOrder ? 'info' : 'secondary' }}">{{ $orderLabel }}</a>
@endif
@endif
</td>
<td class="text-left font-weight-semibold">
@if($userSalesVolume->shopping_order && $userSalesVolume->shopping_order->shopping_user)
<span class="no-line-break"> {{ $userSalesVolume->shopping_order->shopping_user->billing_firstname }} {{ $userSalesVolume->shopping_order->shopping_user->billing_lastname }}<br>
<small>{{ $userSalesVolume->shopping_order->shopping_user->billing_email }}</small></span>
@endif
</td>
<td class="text-left font-weight-semibold">
<span class="no-line-break"> {{ $userSalesVolume->message }}</span>
</td>
<td class="text-left font-weight-semibold">
<span class="no-line-break"> {{ $userSalesVolume->info }}</span>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
@endif
</div>
@if($user->isActiveAccount())
<div class="card-footer py-3">
<a href="{{route('user_team_structure')}}" class="btn btn-secondary mr-2"><i class="ion ion-md-funnel rotate-180 text-default mr-1"></i> {{__('navigation.my_team')}} - {{__('navigation.structure')}}</a>
<a href="{{route('user_team_points')}}" class="btn btn-secondary mr-2"><i class="ion ion-ios-arrow-dropup-circle"></i> {{__('navigation.my_team')}} - {{__('navigation.points')}}</a>
</div>
@endif
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-user-points').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"stateSave": true,
"searching": false,
"language": {
"url": "/js/datatables-{{ \App::getLocale() }}.json"
}
});
// Filter für Monat/Jahr
function updatePointsFilter() {
var month = $('#points-month-filter').val();
var year = $('#points-year-filter').val();
var url = new URL(window.location.href);
url.searchParams.set('points_month', month);
url.searchParams.set('points_year', year);
window.location.href = url.toString();
}
$('#points-month-filter, #points-year-filter').on('change', function() {
updatePointsFilter();
});
});
</script>