@extends('layouts.app') @section('title', 'Laporan Kasir') @section('page-title', 'Laporan Performa Kasir') @section('content')
@if($selectedClerk) {{-- DETAIL MODE --}}
← Kembali ke Daftar Kasir

{{ $selectedClerk->name }}

Detail Riwayat Sesi

📋 Riwayat Sesi: {{ $start->format('d M') }} — {{ $end->format('d M Y') }}

@forelse($clerkSessions as $sess) @empty @endforelse
Waktu Buka Waktu Tutup Modal Awal Total Jual Kas Aktual Selisih Status Aksi
{{ $sess->opened_at->format('d/m/Y') }}
{{ $sess->opened_at->format('H:i') }}
{{ $sess->closed_at ? $sess->closed_at->format('d/m/Y') : '—' }} @if($sess->closed_at)
{{ $sess->closed_at->format('H:i') }}
@endif
Rp {{ number_format($sess->opening_cash,0,',','.') }} Rp {{ number_format($sess->total_sales,0,',','.') }} {{ $sess->closing_cash !== null ? 'Rp '.number_format($sess->closing_cash,0,',','.') : '—' }} @if($sess->cash_difference !== null) {{ $sess->cash_difference >= 0 ? '+' : '' }}Rp {{ number_format($sess->cash_difference,0,',','.') }} @else — @endif @if($sess->status == 'open') Aktif @else Selesai @endif @php $sessionJson = [ 'id' => $sess->id, 'opened' => $sess->opened_at->format('d/m/Y H:i'), 'closed' => $sess->closed_at ? $sess->closed_at->format('d/m/Y H:i') : '-', 'opening' => (float)$sess->opening_cash, 'total' => (float)$sess->total_sales, 'cash' => (float)$sess->total_cash, 'qris' => (float)$sess->total_qris, 'transfer' => (float)$sess->total_transfer, 'expected' => (float)$sess->expected_cash, 'actual' => (float)$sess->closing_cash, 'diff' => (float)$sess->cash_difference, 'notes' => $sess->closing_notes, 'expenses' => $sess->expenses, 'purchases' => $sess->purchases->where('payment_status', 'paid')->map(function($p){ return [ 'total_amount' => $p->total_amount, 'supplier' => ['name' => $p->supplier->name ?? '-'], 'invoice_number' => $p->invoice_number ]; })->values() ]; @endphp
Tidak ada riwayat sesi pada periode ini
{{-- VOID LOGS --}}

🚫 Log Aktivitas Void (Pembatalan Item)

{{ $voidLogs->count() }} Aktivitas
@forelse($voidLogs as $log) @empty @endforelse
Waktu Jenis Tindakan Produk Qty / Nilai Otoritas Alasan
{{ $log->created_at->format('d/m/Y H:i') }} {{ str_replace('_', ' ', $log->type) }} {{ $log->product_name }}
{{ $log->quantity }}x
Rp {{ number_format($log->amount, 0, ',', '.') }}
{{ $log->authorizedBy?->name ?? 'Admin' }}
"{{ $log->reason }}"
Tidak ada aktivitas void yang terekam.
{{-- MODAL DETAIL SESI --}} @else {{-- LIST MODE --}} {{-- Filter --}}
{{-- Clerk Performance Cards --}}
@forelse($clerkStats as $clerk)
{{ strtoupper(substr($clerk['name'], 0, 1)) }}
{{ $clerk['name'] }}
KLEREK / {{ strtoupper($clerk['username']) }}
{{-- Selisih kas badge --}} @if($clerk['total_sessions'] > 0)
@if($clerk['cash_difference'] > 0) +{{ number_format($clerk['cash_difference'], 0, ',', '.') }} @elseif($clerk['cash_difference'] < 0) {{ number_format($clerk['cash_difference'], 0, ',', '.') }} @else ±0 @endif
selisih kas
@endif
{{ $clerk['total_trx'] }}
Transaksi
Rp {{ number_format($clerk['total_sales'], 0, ',', '.') }}
Total Jual
Rata-rata
Rp {{ number_format($clerk['avg_trx'], 0, ',', '.') }}
Sesi Kasir
{{ $clerk['total_sessions'] }} sesi
@empty
👤
Tidak ada data klerek

Silakan sesuaikan periode filter Anda.

@endforelse
@endif
@endsection