@php $fmtCurrency = fn ($value) => 'Rp'.number_format((float) $value, 0, ',', '.'); $fmtPercent = fn ($value) => number_format((float) $value, 1, ',', '.').'%'; $canViewPii = (bool) ($canViewPii ?? false); @endphp

Laporan Performa Member

Pantau kontribusi revenue, profit, dan loyalitas member.

Export Excel
@php $cards = [ ['label' => 'Revenue Member', 'value' => $overview['memberRevenue'] ?? 0, 'fmt' => $fmtCurrency], ['label' => 'Profit Member', 'value' => $overview['memberProfit'] ?? 0, 'fmt' => $fmtCurrency], ['label' => 'Margin Member', 'value' => $overview['memberMarginPercent'] ?? 0, 'fmt' => $fmtPercent], ['label' => 'Transaksi Member', 'value' => $overview['memberTxCount'] ?? 0, 'fmt' => fn($v) => number_format((float) $v, 0, ',', '.')], ['label' => 'Active Member', 'value' => $overview['activeMembers'] ?? 0, 'fmt' => fn($v) => number_format((float) $v, 0, ',', '.')], ['label' => 'Repeat Rate', 'value' => $overview['repeatRatePercent'] ?? 0, 'fmt' => $fmtPercent], ]; @endphp @foreach ($cards as $card)

{{ $card['label'] }}

{{ ($card['fmt'])($card['value']) }}

@if ($card['label'] === 'Revenue Member')

Share: {{ number_format((float) ($overview['memberSharePercent'] ?? 0), 1, ',', '.') }}%

@endif @if ($card['label'] === 'Profit Member')

HPP: {{ $fmtCurrency((float) ($overview['memberHpp'] ?? 0)) }}

@endif
@endforeach

Trend Revenue

Perbandingan revenue member vs non-member per hari.

Coverage HPP: {{ number_format((float) ($overview['hppCoveragePercent'] ?? 0), 1, ',', '.') }}%

Catatan

Avg Order Member: {{ $fmtCurrency((float) ($overview['avgOrder'] ?? 0)) }}
Item terjual (member): {{ number_format((int) ($overview['memberQty'] ?? 0), 0, ',', '.') }}
Repeat rate = member dengan ≥ 2 transaksi / active member

Peta Persebaran Member

Titik mewakili kab/kota (centroid), warna berdasarkan jumlah member aktif.

0 1–5 6–20 21+
@if (count($regionMarkers) === 0)

Belum ada data wilayah (pastikan member punya Wilayah + GeoJSON, dan ada transaksi pada periode).

@endif

Top Member (berdasarkan revenue)

@forelse ($topMembers as $row) @empty @endforelse
Member Transaksi Qty Revenue Profit Margin Avg Last

{{ $row['name'] }}

@if ($canViewPii)

{{ $row['phone'] ?? $row['email'] ?? '-' }}

@else

-

@endif

{{ number_format((int) $row['tx_count'], 0, ',', '.') }}

{{ number_format((int) $row['qty'], 0, ',', '.') }}

{{ $fmtCurrency($row['revenue']) }}

{{ $fmtCurrency($row['profit']) }}

{{ number_format((float) $row['margin_percent'], 1, ',', '.') }}%

{{ $fmtCurrency((float) $row['avg_order']) }}

{{ $row['last_purchase_at'] ? \Carbon\CarbonImmutable::parse($row['last_purchase_at'])->format('d M Y') : '-' }}