@php $shareBaseQuery = request()->except(['export', 'share_action', 'email_to']); $emailShareUrl = route('reports.index', array_merge($shareBaseQuery, ['share_action' => 'email', 'email_to' => '__EMAIL__'])); @endphp
@if(session('report_share_notice') || session('report_share_error') || session('shared_public_url'))
@if(session('report_share_error'))

{{ session('report_share_error') }}

@else

{{ session('report_share_notice') }}

@endif @if(session('shared_public_url'))
{{ __('messages.public_url_label') }}
{{ session('shared_public_url') }}
@endif
@endif
@php $pillDefs = [ 'fixed' => 'Fixed', 'payment' => 'Payment', 'eatout' => 'EatOut', 'dept' => 'Department', 'categ' => 'Category', 'hourly' => 'Hourly', 'device' => 'Device', 'plu' => 'PLU', 'cogs' => 'COGS', 'addon' => 'Add-ons', 'last100' => 'Last 100', 'tax' => 'Tax', 'salesgroup' => 'Sales Group', 'topsellers' => 'Top', 'bottomsellers' => 'Bottom', ]; @endphp
@foreach($pillDefs as $value => $label) @endforeach
{{ __('messages.filters') }}
@if($reportType === 'cogs') @endif

{{ $summary['a_label'] }}

£{{ number_format((float)$summary['a_value'], 2) }}

{{ $summary['b_label'] }}

£{{ number_format((float)$summary['b_value'], 2) }}

{{ $summary['c_label'] }}

£{{ number_format((float)$summary['c_value'], 2) }}

{{-- ═══════════════════ REPORT TABLE ═══════════════════ --}}
{{-- ── FIXED TOTALS ── --}} @if($reportType === 'fixed') @php $r = $rows[0] ?? []; @endphp @if((float)($r['cash_till'] ?? 0) + (float)($r['card_till'] ?? 0) > 0) @endif @if((float)($r['card_kiosk'] ?? 0) > 0) @endif
Metric Qty Value (£)
Gross Sales{{ number_format((float)($r['net_orders'] ?? 0)) }}£{{ number_format((float)($r['net_sales'] ?? 0), 2) }}
Net Sales{{ number_format((float)($r['gross_orders'] ?? 0)) }}£{{ number_format((float)($r['gross_sales'] ?? 0), 2) }}
Covers{{ number_format((float)($r['covers'] ?? 0)) }}
Cash Total{{ number_format((float)($r['all_cash_qty'] ?? 0)) }}£{{ number_format((float)($r['all_cash'] ?? 0), 2) }}
Card Total{{ number_format((float)($r['all_card_qty'] ?? 0)) }}£{{ number_format((float)($r['all_card'] ?? 0), 2) }}
Refunds Paid{{ number_format((float)($r['refund_qty'] ?? 0)) }}£{{ number_format((float)($r['refunds'] ?? 0), 2) }}
Drawer Total{{ number_format((float)($r['total_qty'] ?? 0)) }}£{{ number_format((float)($r['total_drawer'] ?? 0), 2) }}
↳ Cash (Till){{ number_format((float)($r['cash_till_qty'] ?? 0)) }}£{{ number_format((float)($r['cash_till'] ?? 0), 2) }}
↳ Card (Till){{ number_format((float)($r['card_till_qty'] ?? 0)) }}£{{ number_format((float)($r['card_till'] ?? 0), 2) }}
↳ Kiosk{{ number_format((float)($r['card_kiosk_qty'] ?? 0)) }}£{{ number_format((float)($r['card_kiosk'] ?? 0), 2) }}
{{-- ── PAYMENT BREAKDOWN ── --}} @elseif($reportType === 'payment') @php $ptTotal = array_sum(array_column($rows, 'total')); $ptOrders = array_sum(array_column($rows, 'orders')); @endphp @forelse($rows as $row) @empty @endforelse @if(!empty($rows)) @endif
Payment TypeOrdersTotal (£)Share
{{ $row['key_name'] ?? $row['paymenttype'] ?? '-' }} {{ number_format((float)($row['orders'] ?? 0)) }} £{{ number_format((float)($row['total'] ?? 0), 2) }} {{ $ptTotal > 0 ? number_format(((float)($row['total'] ?? 0) / $ptTotal) * 100, 1) : 0 }}%
No data available.
Total{{ number_format($ptOrders) }}£{{ number_format($ptTotal, 2) }}100%
{{-- ── EAT IN VS TAKE AWAY ── --}} @elseif($reportType === 'eatout') @php $eoTotal = array_sum(array_column($rows, 'total')); $eoOrders = array_sum(array_column($rows, 'orders')); @endphp @forelse($rows as $row) @empty @endforelse @if(!empty($rows)) @endif
Order TypeOrdersTotal (£)Share
{{ $row['key_name'] ?? $row['dtype'] ?? '-' }} {{ number_format((float)($row['orders'] ?? 0)) }} £{{ number_format((float)($row['total'] ?? 0), 2) }} {{ $eoTotal > 0 ? number_format(((float)($row['total'] ?? 0) / $eoTotal) * 100, 1) : 0 }}%
No data available.
Total{{ number_format($eoOrders) }}£{{ number_format($eoTotal, 2) }}100%
{{-- ── DEPARTMENT SALES ── --}} @elseif($reportType === 'dept') @php $deptTotal = array_sum(array_column($rows, 'revenue')); $deptQty = array_sum(array_column($rows, 'qty')); @endphp @forelse($rows as $row) @empty @endforelse @if(!empty($rows)) @endif
DepartmentQtyRevenue (£)Share
{{ $row['key_name'] ?? $row['groupname'] ?? '-' }} {{ number_format((float)($row['qty'] ?? 0)) }} £{{ number_format((float)($row['revenue'] ?? 0), 2) }} {{ $deptTotal > 0 ? number_format(((float)($row['revenue'] ?? 0) / $deptTotal) * 100, 1) : 0 }}%
No data available.
Total{{ number_format($deptQty) }}£{{ number_format($deptTotal, 2) }}100%
{{-- ── SALES BY CATEGORY ── --}} @elseif($reportType === 'categ') @php $catTotal = array_sum(array_column($rows, 'revenue')); $catOrders = array_sum(array_column($rows, 'orders')); @endphp @forelse($rows as $idx => $row) @empty @endforelse @if(!empty($rows)) @endif
#CategoryOrdersRevenue (£)Share
{{ $idx + 1 }} {{ $row['catname'] ?? $row['key_name'] ?? '-' }} {{ number_format((float)($row['orders'] ?? 0)) }} £{{ number_format((float)($row['revenue'] ?? 0), 2) }} {{ $catTotal > 0 ? number_format(((float)($row['revenue'] ?? 0) / $catTotal) * 100, 1) : 0 }}%
No data available.
Total{{ number_format($catOrders) }}£{{ number_format($catTotal, 2) }}100%
{{-- ── HOURLY BREAKDOWN ── --}} @elseif($reportType === 'hourly') @forelse($rows as $row) @php $hr = (int)($row['hr'] ?? 0); $orders = (float)($row['orders'] ?? 0); $total = (float)($row['total'] ?? 0); @endphp @empty @endforelse
HourOrdersRevenue (£)Avg Sale (£)
{{ str_pad($hr, 2, '0', STR_PAD_LEFT) }}:00 {{ number_format($orders) }} £{{ number_format($total, 2) }} £{{ number_format($orders > 0 ? $total / $orders : (float)($row['avgsale'] ?? 0), 2) }}
No data available.
{{-- ── DEVICE BREAKDOWN ── --}} @elseif($reportType === 'device') @php $devTotal = array_sum(array_column($rows, 'total')); $devOrders = array_sum(array_column($rows, 'orders')); @endphp @forelse($rows as $row) @php $dOrders = (float)($row['orders'] ?? 0); $dTotal = (float)($row['total'] ?? 0); @endphp @empty @endforelse @if(!empty($rows)) @endif
DeviceOrdersRevenue (£)Avg (£)
{{ $row['key_name'] ?? $row['device'] ?? '-' }} {{ number_format($dOrders) }} £{{ number_format($dTotal, 2) }} £{{ number_format($dOrders > 0 ? $dTotal / $dOrders : (float)($row['avgsale'] ?? 0), 2) }}
No data available.
Total{{ number_format($devOrders) }}£{{ number_format($devTotal, 2) }}
{{-- ── PLU ── --}} @elseif($reportType === 'plu') @forelse($rows as $idx => $row) @if(!empty($row['combo_items']) && is_array($row['combo_items'])) @foreach($row['combo_items'] as $ci) @if((float)($ci['qty'] ?? 0) > 0) @endif @endforeach @endif @empty @endforelse
#ProductPrice (£)QtyRevenue (£)Avg (£)
{{ $idx + 1 }} {{ $row['prodname'] ?? '-' }} £{{ number_format((float)($row['product_price'] ?? 0), 2) }} {{ number_format((float)($row['qty'] ?? 0), 0) }} £{{ number_format((float)($row['revenue'] ?? 0), 2) }} £{{ number_format((float)($row['avgprice'] ?? 0), 2) }}
↳ {{ $ci['name'] ?? '-' }} {{ (float)($ci['selling_price'] ?? 0) > 0 ? '£'.number_format((float)$ci['selling_price'], 2) : '—' }} {{ number_format((float)($ci['qty'] ?? 0), 0) }} {{ (float)($ci['selling_price'] ?? 0) > 0 ? '£'.number_format((float)($ci['qty'] ?? 0) * (float)($ci['selling_price'] ?? 0), 2) : '—' }} {{ (float)($ci['selling_price'] ?? 0) > 0 ? '£'.number_format((float)$ci['selling_price'], 2) : '—' }}
No data available.
{{-- ── COGS ── --}} @elseif($reportType === 'cogs') @if($cogsDayBreakdownEnabled && !empty($cogsDaySections))
@foreach($cogsDaySections as $daySection)

{{ $daySection['label'] }} ({{ $daySection['date'] }})

@include('reports.partials.cogs-table', ['rows' => $daySection['rows']])
@endforeach
@else @include('reports.partials.cogs-table', ['rows' => $rows]) @endif {{-- ── ADD-ON SALES ── --}} @elseif($reportType === 'addon') @php $addQty = array_sum(array_column($rows, 'times_ordered')); $addRev = array_sum(array_column($rows, 'revenue')); @endphp @forelse($rows as $row) @empty @endforelse @if(!empty($rows)) @endif
Add-onTimes OrderedRevenue (£)
{{ $row['key_name'] ?? $row['addon_name'] ?? '-' }} {{ number_format((float)($row['times_ordered'] ?? 0)) }} £{{ number_format((float)($row['revenue'] ?? 0), 2) }}
No data available.
Total{{ number_format($addQty) }}£{{ number_format($addRev, 2) }}
{{-- ── LAST 100 TRANSACTIONS ── --}} @elseif($reportType === 'last100') @forelse($rows as $row) @empty @endforelse
Time Branch Invoice Customer Device Type Payment Total (£) Status
{{ $row['orderdate'] ?? '' }} {{ $row['branch_name'] ?? '' }} {{ $row['invoiceid'] ?? '' }} {{ $row['cusname'] ?? '' }} {{ $row['device_code'] ?? '' }} {{ $row['shippingtype'] ?? '' }} {{ $row['paymenttype'] ?? '' }} £{{ number_format((float)($row['total'] ?? 0), 2) }} {{ $row['orderstatus'] ?? '' }}
No data available.
{{-- ── VAT SUMMARY ── --}} @elseif($reportType === 'tax') @php $taxOrders = array_sum(array_column($rows, 'orders')); $taxNet = array_sum(array_column($rows, 'net')); $taxTax = array_sum(array_column($rows, 'tax')); $taxGross = array_sum(array_column($rows, 'gross')); @endphp @forelse($rows as $row) @empty @endforelse @if(!empty($rows)) @endif
Tax RateOrdersNet (£)Tax (£)Gross (£)
Rate {{ $row['key_name'] ?? $row['taxid'] ?? '-' }} {{ number_format((float)($row['orders'] ?? 0)) }} £{{ number_format((float)($row['net'] ?? 0), 2) }} £{{ number_format((float)($row['tax'] ?? 0), 2) }} £{{ number_format((float)($row['gross'] ?? 0), 2) }}
No data available.
Total{{ number_format($taxOrders) }}£{{ number_format($taxNet, 2) }}£{{ number_format($taxTax, 2) }}£{{ number_format($taxGross, 2) }}
{{-- ── SALES BY GROUP ── --}} @elseif($reportType === 'salesgroup') @php $sgByCat = []; foreach($rows as $row) { $cat = $row['catname'] ?? 'Unknown'; if(!isset($sgByCat[$cat])) $sgByCat[$cat] = ['items' => [], 'qty' => 0, 'sales' => 0]; $sgByCat[$cat]['items'][] = $row; $sgByCat[$cat]['qty'] += (float)($row['qty'] ?? 0); $sgByCat[$cat]['sales'] += (float)($row['revenue'] ?? 0); } $sgGrandQty = array_sum(array_column($sgByCat, 'qty')); $sgGrandSales = array_sum(array_column($sgByCat, 'sales')); @endphp @forelse($sgByCat as $catName => $block) @foreach($block['items'] as $item) @endforeach @empty @endforelse @if(!empty($sgByCat)) @endif
PLUNameQuantitySales (£)
{{ $catName }}
{{ $item['productid'] ?? '' }} {{ $item['prodname'] ?? '-' }} {{ number_format((float)($item['qty'] ?? 0)) }} £{{ number_format((float)($item['revenue'] ?? 0), 2) }}
{{ $catName }} Total{{ number_format($block['qty']) }}£{{ number_format($block['sales'], 2) }}
No data available.
Grand Total{{ number_format($sgGrandQty) }}£{{ number_format($sgGrandSales, 2) }}
{{-- ── TOP SELLERS / BOTTOM SELLERS ── --}} @elseif(in_array($reportType, ['topsellers', 'bottomsellers'])) @php $tsQty = array_sum(array_column($rows, 'qty')); $tsRev = array_sum(array_column($rows, 'revenue')); @endphp @forelse($rows as $idx => $row) @empty @endforelse @if(!empty($rows)) @endif
#ProductCategoryQty SoldRevenue (£)Avg Price (£)
{{ $idx + 1 }} {{ $row['prodname'] ?? '-' }} {{ $row['catname'] ?? '-' }} {{ number_format((float)($row['qty'] ?? 0)) }} £{{ number_format((float)($row['revenue'] ?? 0), 2) }} £{{ number_format((float)($row['avgprice'] ?? 0), 2) }}
No data available.
Total{{ number_format($tsQty) }}£{{ number_format($tsRev, 2) }}
@else @foreach(array_keys((array)($rows[0] ?? ['No data' => ''])) as $col)@endforeach @forelse($rows as $row) @foreach($row as $value)@endforeach @empty @endforelse
{{ ucwords(str_replace('_', ' ', $col)) }}
{{ is_numeric($value) ? number_format((float)$value, 2) : $value }}
No data available.
@endif