@extends('layouts.authenticated') @section('title', 'Laporan') @section('page-title', 'Laporan & Analisis') @section('page-content') @php $paymentMethodChartLabels = $paymentMethods->pluck('label')->values(); $paymentMethodChartValues = $paymentMethods->pluck('total_sales')->map(fn ($value) => (float) $value)->values(); $statusChartLabels = $statusBreakdown->only(['completed', 'cancelled'])->values()->pluck('label'); $statusChartCounts = $statusBreakdown->only(['completed', 'cancelled'])->values()->pluck('count'); $topProductChartLabels = $topProducts->pluck('product_name')->values(); $topProductChartValues = $topProducts->pluck('total_revenue')->map(fn ($value) => (float) $value)->values(); $topCashierChartLabels = $topCashiers->pluck('name')->values(); $topCashierChartValues = $topCashiers->pluck('total_sales')->map(fn ($value) => (float) $value)->values(); $branchChartLabels = $branchPerformance->pluck('name')->values(); $branchChartValues = $branchPerformance->pluck('total_sales')->map(fn ($value) => (float) $value)->values(); $salesTrendLabels = $salesTrend->pluck('label')->values(); $salesTrendValues = $salesTrend->pluck('total')->map(fn ($value) => (float) $value)->values(); $reportChartData = [ 'salesTrendLabels' => $salesTrendLabels, 'salesTrendValues' => $salesTrendValues, 'paymentMethodLabels' => $paymentMethodChartLabels, 'paymentMethodValues' => $paymentMethodChartValues, 'statusLabels' => $statusChartLabels, 'statusValues' => $statusChartCounts, 'topProductLabels' => $topProductChartLabels, 'topProductValues' => $topProductChartValues, 'topCashierLabels' => $topCashierChartLabels, 'topCashierValues' => $topCashierChartValues, 'branchLabels' => $branchChartLabels, 'branchValues' => $branchChartValues, ]; @endphp
format('Y-m-d') : $dateTo), branchId: @json((string) ($branchId ?? '')), cashierId: @json((string) ($cashierId ?? '')), })' x-init="init()">

Memperbarui laporan

Mengambil data terbaru...

Laporan & Analisis

Dashboard analitik penjualan yang lengkap

Ringkasan performa penjualan, komposisi transaksi, produk terbaik, dan kontribusi tiap cabang dalam periode {{ $periodLabel }}.

Cabang

{{ $selectedBranch?->name ?? 'Semua Cabang' }}

Periode

{{ $periodLabel }}

Transaksi

{{ number_format($totalTransactions) }}

Completion

{{ number_format($completionRate, 1) }}%

Filter Laporan

Atur periode dan cabang untuk melihat analisis yang tepat.

@if($canSelectBranch)
@endif
Filter diterapkan otomatis saat nilai berubah.

Total Penjualan

Rp {{ number_format($totalSales, 0, ',', '.') }}

{{ number_format($completedTransactions) }} transaksi selesai

Rata-rata Transaksi

Rp {{ number_format($averageOrderValue, 0, ',', '.') }}

Nilai per transaksi selesai

Item Terjual

{{ number_format($totalItemsSold) }}

Rata-rata {{ number_format($averageItemsPerTransaction, 1) }} item/transaksi

Kelengkapan

{{ number_format($completionRate, 1) }}%

Tingkat transaksi selesai

Dibatalkan

{{ number_format($cancelledTransactions) }}

Selesai

{{ number_format($completedTransactions) }}

Total Dibayar

Rp {{ number_format($totalPaid, 0, ',', '.') }}

Diskon Rp {{ number_format($totalDiscount, 0, ',', '.') }} | Pajak Rp {{ number_format($totalTax, 0, ',', '.') }}

Tren Penjualan

Model grafik {{ $salesTrendLabel }} untuk periode terpilih

Pendapatan berhasil

Insight Cepat

Sorotan otomatis dari periode ini

Produk Teratas

{{ $primaryInsight?->product_name ?? 'Belum ada data' }}

{{ $primaryInsight ? 'Rp ' . number_format($primaryInsight->total_revenue, 0, ',', '.') : 'Data penjualan belum tersedia' }}

Metode Dominan

{{ $bestPaymentMethod?->label ?? 'Belum ada data' }}

{{ $bestPaymentMethod ? number_format($bestPaymentMethod->total_transactions) . ' transaksi' : 'Data penjualan belum tersedia' }}

Kasir Terbaik

{{ $bestCashier?->name ?? 'Belum ada data' }}

{{ $bestCashier ? 'Rp ' . number_format($bestCashier->total_sales, 0, ',', '.') : 'Data penjualan belum tersedia' }}

@if($topBranch)

Cabang Terbaik

{{ $topBranch->name }}

Rp {{ number_format($topBranch->total_sales, 0, ',', '.') }}

@endif

Status Terbanyak

{{ $mostActiveStatus['label'] ?? 'Belum ada data' }}

{{ isset($mostActiveStatus['count']) ? number_format($mostActiveStatus['count']) . ' transaksi' : 'Data penjualan belum tersedia' }}

Komposisi Metode Pembayaran

Proporsi penjualan berdasarkan kanal pembayaran

@foreach($paymentMethods as $pm)

{{ $pm->label }}

Rp {{ number_format($pm->total_sales, 0, ',', '.') }}

{{ $pm->total_transactions }} trx
@endforeach

Status Transaksi

Distribusi status transaksi pada periode ini

Produk Terlaris

Grafik batang horizontal berdasarkan revenue

Kasir Terbaik

Perbandingan kontribusi kasir berdasarkan total penjualan

@if($branchPerformance->isNotEmpty())

Performa Cabang

Perbandingan antar cabang untuk periode yang sama

@endif

Transaksi Terbaru

Aktivitas transaksi terkini dalam periode terpilih

@forelse($recentTransactions as $transaction) @empty @endforelse
Invoice Tanggal Kasir Total Status
{{ $transaction->invoice_number }}
{{ $transaction->branch?->name ?? '-' }}
{{ $transaction->created_at->format('d M Y, H:i') }}
{{ $transaction->user?->name ?? '-' }}
Rp {{ number_format($transaction->total, 0, ',', '.') }}
{{ ucfirst($transaction->status) }}
Belum ada transaksi pada periode ini.

Mitra Teratas

Ringkasan performa mitra berdasarkan total penjualan

@forelse($topPartners as $partner) @empty @endforelse
Mitra Produk Penjualan
{{ $partner->name }}
{{ $partner->code }}
{{ number_format($partner->products_count ?? 0) }} Rp {{ number_format($partner->total_sales, 0, ',', '.') }}
Belum ada data mitra.
@endsection @push('scripts') @endpush