{{-- Header --}}

Riwayat Kasir

Monitoring aktivitas dan performa kasir

Last updated: {{ now()->format('H:i') }}
{{-- Today Summary Cards --}}

Shift Aktif

{{ $todaySummary['activeShifts'] ?? 0 }}

Shift Selesai

{{ $todaySummary['completedShifts'] ?? 0 }}

Transaksi

{{ $todaySummary['totalTransactions'] ?? 0 }}

Total Penjualan

Rp {{ number_format($todaySummary['totalSales'] ?? 0, 0, ',', '.') }}

Tunai

Rp {{ number_format($todaySummary['cashSales'] ?? 0, 0, ',', '.') }}

Non-Tunai

Rp {{ number_format($todaySummary['nonCashSales'] ?? 0, 0, ',', '.') }}

{{-- Filters --}}
{{-- Tabs --}}
{{-- Tab Content --}}
{{-- Shifts Tab --}} @if($activeTab === 'shifts')
@forelse($shifts as $shift) @empty @endforelse
Kasir Check In Check Out Modal Total Sales Transaksi Selisih Status Aksi
{{ substr($shift->user->name ?? 'N', 0, 1) }}

{{ $shift->user->name ?? '-' }}

{{ $shift->user->role ?? '-' }}

{{ $shift->check_in_at ? $shift->check_in_at->format('d M Y H:i') : '-' }} {{ $shift->check_out_at ? $shift->check_out_at->format('d M Y H:i') : '-' }} Rp {{ number_format($shift->opening_cash, 0, ',', '.') }} Rp {{ number_format($shift->total_sales, 0, ',', '.') }} {{ $shift->total_transactions }} trx @if($shift->status === 'CLOSED') {{ $shift->difference >= 0 ? '+' : '' }}Rp {{ number_format($shift->difference, 0, ',', '.') }} @else - @endif @if($shift->status === 'OPEN') Aktif @else Selesai @endif

Belum ada data shift

{{ $shifts->links() }}
@endif {{-- Transactions Tab --}} @if($activeTab === 'transactions')
@forelse($transactions as $trx) @empty @endforelse
Invoice Kasir Member Waktu Items Pembayaran Total
{{ $trx->invoiceNumber }} {{ $trx->user->name ?? '-' }} {{ $trx->member->name ?? 'Non-Member' }} {{ $trx->date->format('d M Y H:i') }} {{ $trx->items->count() }} item {{ $trx->paymentMethod }} Rp {{ number_format($trx->totalAmount, 0, ',', '.') }}

Belum ada transaksi

{{ $transactions->links() }}
@endif {{-- Summary Tab --}} @if($activeTab === 'summary') @php $totalJamMenit = $kasirPerforma->sum('total_work_minutes_raw'); $totalJamH = floor($totalJamMenit / 60); $totalJamM = $totalJamMenit % 60; $totalPenjualan = $kasirPerforma->sum('total_sales_sum'); $totalTrx = $kasirPerforma->sum('total_transactions'); $kasirCount = $kasirPerforma->count(); @endphp {{-- Aggregate Mini Cards --}}

Kasir (periode)

{{ $kasirCount }}

orang

Total Jam Kerja

{{ $totalJamH }}j {{ $totalJamM }}m

semua kasir

Total Penjualan

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

periode ini

Total Transaksi

{{ number_format($totalTrx, 0) }}

transaksi

{{-- Per-Kasir Table --}}
@forelse($kasirPerforma as $kasir) @php $accuracy = $kasir->accuracy; if ($accuracy === null) { $statusLabel = 'Belum Bekerja'; $statusClass = 'bg-slate-100 text-slate-500 dark:bg-slate-700 dark:text-slate-400'; } elseif ($accuracy >= 97) { $statusLabel = 'Performa Baik'; $statusClass = 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400'; } elseif ($accuracy >= 85) { $statusLabel = 'Cukup Baik'; $statusClass = 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400'; } else { $statusLabel = 'Perlu Perhatian'; $statusClass = 'bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-400'; } $accuracyDisplay = $accuracy !== null ? number_format($accuracy, 1) . '%' : '-'; $accuracyBarWidth = $accuracy !== null ? $accuracy : 0; $accuracyColor = ($accuracy ?? 0) >= 97 ? 'bg-emerald-500' : (($accuracy ?? 0) >= 85 ? 'bg-amber-500' : 'bg-rose-500'); $diff = $kasir->total_difference_sum ?? 0; @endphp {{-- Kasir --}} {{-- Jam Kerja --}} {{-- Shift --}} {{-- Total Penjualan --}} {{-- Tunai / Non-Tunai --}} {{-- Rata-rata/Shift --}} {{-- Total Transaksi --}} {{-- Selisih Saldo --}} {{-- Akurasi --}} {{-- Status --}} @empty @endforelse
Kasir Jam Kerja Shift Total Penjualan Tunai / Non-Tunai Rata-rata/Shift Transaksi Selisih Saldo Akurasi Status
{{ substr($kasir->name, 0, 1) }}

{{ $kasir->name }}

{{ $kasir->role }}
@if($kasir->total_work_minutes_raw > 0)
{{ $kasir->total_work_hours }}j {{ $kasir->total_work_minutes }}m {{ $kasir->closed_shifts }} shift selesai
@else - @endif
{{ $kasir->total_shifts }} @if($kasir->total_shifts > $kasir->closed_shifts) {{ $kasir->total_shifts - $kasir->closed_shifts }} aktif @endif

Rp {{ number_format($kasir->total_sales_sum ?? 0, 0, ',', '.') }}

@if(($kasir->total_sales_sum ?? 0) > 0 && $kasir->closed_shifts > 0)

avg Rp {{ number_format($kasir->avg_sales_per_shift, 0, ',', '.') }}/shift

@endif
T Rp {{ number_format($kasir->total_cash_sales, 0, ',', '.') }}
NT Rp {{ number_format($kasir->total_non_cash_sales, 0, ',', '.') }}

Rp {{ number_format($kasir->avg_sales_per_shift, 0, ',', '.') }}

{{ $kasir->avg_trx_per_shift }} trx/shift

{{ $kasir->total_transactions }} @if($kasir->closed_shifts > 0) {{ $diff >= 0 ? '+' : '' }}Rp {{ number_format($diff, 0, ',', '.') }} @else - @endif @if($accuracy !== null)
{{ $accuracyDisplay }}
@else - @endif
{{ $statusLabel }}

Belum ada data performa kasir

@endif {{-- Activity Log Tab --}} @if($activeTab === 'activity')
@forelse($activityLogs as $log)
@if($log->action === 'LOGIN') @elseif($log->action === 'LOGOUT') @elseif($log->action === 'CHECK_IN') @elseif($log->action === 'CHECK_OUT') @elseif($log->action === 'CREATE') @else @endif
{{ $log->user->name ?? 'System' }} {{ $log->action }} {{ $log->module }}

{{ $log->description }}

{{ $log->created_at->format('d M Y H:i:s') }} • {{ $log->ip_address }}

@empty

Belum ada activity log

@endforelse
{{ $activityLogs->links() }}
@endif
{{-- Shift Detail Modal --}} @if($showDetailModal && $selectedShift)

Detail Shift

{{ $selectedShift->user->name ?? '-' }} • {{ $selectedShift->check_in_at->format('d M Y') }}

{{-- Shift Info --}}

Check In

{{ $selectedShift->check_in_at->format('H:i') }}

Check Out

{{ $selectedShift->check_out_at ? $selectedShift->check_out_at->format('H:i') : '-' }}

Modal Awal

Rp {{ number_format($selectedShift->opening_cash, 0, ',', '.') }}

Status

{{ $selectedShift->status === 'OPEN' ? 'Aktif' : 'Selesai' }}
@if($selectedShift->status === 'CLOSED')

Total Sales

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

Cash Sales

Rp {{ number_format($selectedShift->total_cash_sales, 0, ',', '.') }}

Kas Akhir

Rp {{ number_format($selectedShift->closing_cash, 0, ',', '.') }}

Selisih

{{ $selectedShift->difference >= 0 ? '+' : '' }}Rp {{ number_format($selectedShift->difference, 0, ',', '.') }}

@endif {{-- Transactions in Shift --}}

Transaksi dalam Shift ({{ count($shiftTransactions) }})

@forelse($shiftTransactions as $trx) @empty @endforelse
Invoice Waktu Items Bayar Total
{{ $trx->invoiceNumber }} {{ $trx->date->format('H:i') }} {{ $trx->items->count() }} {{ $trx->paymentMethod }} Rp {{ number_format($trx->totalAmount, 0, ',', '.') }}
Tidak ada transaksi dalam shift ini
@if($selectedShift->note)

Catatan:

{{ $selectedShift->note }}

@endif
@endif