@extends('restaurant.layout') @section('title', 'تقرير الكاشير') @php $n = fn ($v) => number_format((float) $v, 2); $s = $summary; $maxHour = max(1, collect($hourly)->max('gross')); $maxItem = max(1, collect($topItems)->max('qty') ?? 1); $qs = http_build_query(request()->only(['from', 'to', 'branch_id', 'cashier_id'])); @endphp @section('content')

📊 تقرير الكاشير والمبيعات

الفترة: {{ $from }} → {{ $to }} · {{ $branchName }} · {{ $cashierName }}@if($print) · {{ $company['name'] }}@endif

@unless($print)
⬇️ تصدير Excel 🖨️ طباعة / PDF
@endunless
@unless($print)
اليوم
@endunless
عدد الفواتير
{{ $s['orders'] }}
متوسط الفاتورة {{ $n($s['avg']) }} ر.س
إجمالي المبيعات (شامل الضريبة)
{{ $n($s['gross']) }}
قبل الخصم وبدون ضريبة: {{ $n($s['subtotal']) }}
المرتجعات ({{ $s['refund_count'] }})
{{ $n($s['refunds']) }}
صافي المبيعات
{{ $n($s['net']) }}
الإجمالي − المرتجعات
صافي الكاش
{{ $n($s['cash']) }}
صافي الشبكة (مدى)
{{ $n($s['card']) }}
صافي الآجل
{{ $n($s['credit']) }}
ضريبة القيمة المضافة
{{ $n($s['vat']) }}
خصومات {{ $n($s['discount']) }} · توصيل {{ $n($s['delivery_fee']) }}
المبيعات حسب الكاشير
@forelse($byCashier as $c) @empty @endforelse @if(count($byCashier))@endif
الكاشيرالوردياتالفواتيرالإجماليالخصوماتكاششبكةآجلالمرتجعاتالصافيمتوسط الفاتورة
{{ $c['name'] }}{{ $c['shifts'] }}{{ $c['orders'] }}{{ $n($c['gross']) }}{{ $n($c['discount']) }}{{ $n($c['cash']) }}{{ $n($c['card']) }}{{ $n($c['credit']) }}{{ $n($c['refunds']) }}{{ $n($c['net']) }}{{ $n($c['avg']) }}
لا توجد مبيعات في هذه الفترة
الإجمالي{{ array_sum(array_column($byCashier, 'shifts')) }}{{ $s['orders'] }}{{ $n($s['gross']) }}{{ $n($s['discount']) }}{{ $n($s['refunds']) }}{{ $n($s['net']) }}{{ $n($s['avg']) }}
ملخص الورديات (Z-Report)
@unless($print)@endunless @forelse($byShift as $x) @unless($print)@endunless @empty @endforelse
الورديةالكاشيرالفرعالفتحالإقفالالفواتيرالإجماليكاششبكةآجلالمرتجعاتالصافيالعهدةالفارق
{{ $x['number'] }}{{ $x['cashier'] }}{{ $x['branch'] }}{{ $x['opened'] }}{{ $x['closed'] }}{{ $x['orders'] }} {{ $n($x['gross']) }}{{ $n($x['cash']) }}{{ $n($x['card']) }}{{ $n($x['credit']) }}{{ $n($x['refunds']) }}{{ $n($x['net']) }}{{ $n($x['opening']) }} {{ $x['diff'] === null ? '—' : $n($x['diff']) }}Z
لا توجد ورديات في هذه الفترة
الأصناف الأكثر مبيعاً
@forelse($topItems as $k => $i) @empty @endforelse
#الصنفالكميةالإيراد (بدون ضريبة)
{{ $k + 1 }}{{ $i['name'] }} {{ $i['size'] }}
{{ $i['qty'] }}{{ $n($i['revenue']) }}
لا توجد بيانات
حسب نوع الطلب
@forelse($byType as $t)@empty@endforelse
النوعالفواتيرالإجمالي
{{ $t['type'] }}{{ $t['orders'] }}{{ $n($t['gross']) }}
—
المبيعات حسب الساعة
@php $any = collect($hourly)->sum('orders') > 0; @endphp @if($any) @foreach($hourly as $h => $x) @if($x['orders'] > 0)
{{ str_pad($h, 2, '0', STR_PAD_LEFT) }}:00
{{ $n($x['gross']) }} ({{ $x['orders'] }})
@endif @endforeach @else
لا توجد بيانات
@endif
@if(count($daily) > 1)
المبيعات اليومية
@foreach($daily as $x)@endforeach
التاريخالفواتيرالإجمالي
{{ $x['date'] }}{{ $x['orders'] }}{{ $n($x['gross']) }}
@endif @if($print) @push('scripts')@endpush @endif @endsection