@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)
@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)
| {{ $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']) }} |
@empty
| لا توجد مبيعات في هذه الفترة |
@endforelse
@if(count($byCashier))| الإجمالي | {{ array_sum(array_column($byCashier, 'shifts')) }} | {{ $s['orders'] }} | {{ $n($s['gross']) }} | {{ $n($s['discount']) }} | | {{ $n($s['refunds']) }} | {{ $n($s['net']) }} | {{ $n($s['avg']) }} |
@endif
ملخص الورديات (Z-Report)
| الوردية | الكاشير | الفرع | الفتح | الإقفال | الفواتير | الإجمالي | كاش | شبكة | آجل | المرتجعات | الصافي | العهدة | الفارق | @unless($print) | @endunless
@forelse($byShift as $x)
| {{ $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']) }} |
@unless($print)Z | @endunless
@empty
| لا توجد ورديات في هذه الفترة |
@endforelse
الأصناف الأكثر مبيعاً
| # | الصنف | الكمية | الإيراد (بدون ضريبة) |
@forelse($topItems as $k => $i)
| {{ $k + 1 }} | {{ $i['name'] }} {{ $i['size'] }}
| {{ $i['qty'] }} | {{ $n($i['revenue']) }} |
@empty
| لا توجد بيانات |
@endforelse
حسب نوع الطلب
| النوع | الفواتير | الإجمالي |
@forelse($byType as $t)| {{ $t['type'] }} | {{ $t['orders'] }} | {{ $n($t['gross']) }} |
@empty| — |
@endforelse
المبيعات حسب الساعة
@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)| {{ $x['date'] }} | {{ $x['orders'] }} | {{ $n($x['gross']) }} |
@endforeach
@endif
@if($print)
@push('scripts')@endpush
@endif
@endsection