{{-- ── FIXED TOTALS ── --}}
@if($reportType === 'fixed')
@php $r = $rows[0] ?? []; @endphp
| 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) }} |
@if((float)($r['cash_till'] ?? 0) + (float)($r['card_till'] ?? 0) > 0)
| ↳ 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) }} |
@endif
@if((float)($r['card_kiosk'] ?? 0) > 0)
| ↳ Kiosk | {{ number_format((float)($r['card_kiosk_qty'] ?? 0)) }} | £{{ number_format((float)($r['card_kiosk'] ?? 0), 2) }} |
@endif
{{-- ── PAYMENT BREAKDOWN ── --}}
@elseif($reportType === 'payment')
@php $ptTotal = array_sum(array_column($rows, 'total')); $ptOrders = array_sum(array_column($rows, 'orders')); @endphp
| Payment Type | Orders | Total (£) | Share |
@forelse($rows as $row)
| {{ $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 }}% |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | {{ number_format($ptOrders) }} | £{{ number_format($ptTotal, 2) }} | 100% |
@endif
{{-- ── EAT IN VS TAKE AWAY ── --}}
@elseif($reportType === 'eatout')
@php $eoTotal = array_sum(array_column($rows, 'total')); $eoOrders = array_sum(array_column($rows, 'orders')); @endphp
| Order Type | Orders | Total (£) | Share |
@forelse($rows as $row)
| {{ $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 }}% |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | {{ number_format($eoOrders) }} | £{{ number_format($eoTotal, 2) }} | 100% |
@endif
{{-- ── DEPARTMENT SALES ── --}}
@elseif($reportType === 'dept')
@php $deptTotal = array_sum(array_column($rows, 'revenue')); $deptQty = array_sum(array_column($rows, 'qty')); @endphp
| Department | Qty | Revenue (£) | Share |
@forelse($rows as $row)
| {{ $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 }}% |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | {{ number_format($deptQty) }} | £{{ number_format($deptTotal, 2) }} | 100% |
@endif
{{-- ── SALES BY CATEGORY ── --}}
@elseif($reportType === 'categ')
@php $catTotal = array_sum(array_column($rows, 'revenue')); $catOrders = array_sum(array_column($rows, 'orders')); @endphp
| # | Category | Orders | Revenue (£) | Share |
@forelse($rows as $idx => $row)
| {{ $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 }}% |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | {{ number_format($catOrders) }} | £{{ number_format($catTotal, 2) }} | 100% |
@endif
{{-- ── HOURLY BREAKDOWN ── --}}
@elseif($reportType === 'hourly')
| Hour | Orders | Revenue (£) | Avg Sale (£) |
@forelse($rows as $row)
@php $hr = (int)($row['hr'] ?? 0); $orders = (float)($row['orders'] ?? 0); $total = (float)($row['total'] ?? 0); @endphp
| {{ 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) }} |
@empty
| No data available. |
@endforelse
{{-- ── DEVICE BREAKDOWN ── --}}
@elseif($reportType === 'device')
@php $devTotal = array_sum(array_column($rows, 'total')); $devOrders = array_sum(array_column($rows, 'orders')); @endphp
| Device | Orders | Revenue (£) | Avg (£) |
@forelse($rows as $row)
@php $dOrders = (float)($row['orders'] ?? 0); $dTotal = (float)($row['total'] ?? 0); @endphp
| {{ $row['key_name'] ?? $row['device'] ?? '-' }} |
{{ number_format($dOrders) }} |
£{{ number_format($dTotal, 2) }} |
£{{ number_format($dOrders > 0 ? $dTotal / $dOrders : (float)($row['avgsale'] ?? 0), 2) }} |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | {{ number_format($devOrders) }} | £{{ number_format($devTotal, 2) }} | — |
@endif
{{-- ── PLU ── --}}
@elseif($reportType === 'plu')
| # | Product | Price (£) | Qty | Revenue (£) | Avg (£) |
@forelse($rows as $idx => $row)
| {{ $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) }} |
@if(!empty($row['combo_items']) && is_array($row['combo_items']))
@foreach($row['combo_items'] as $ci)
@if((float)($ci['qty'] ?? 0) > 0)
|
↳ {{ $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) : '—' }} |
@endif
@endforeach
@endif
@empty
| No data available. |
@endforelse
{{-- ── 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
| Add-on | Times Ordered | Revenue (£) |
@forelse($rows as $row)
| {{ $row['key_name'] ?? $row['addon_name'] ?? '-' }} |
{{ number_format((float)($row['times_ordered'] ?? 0)) }} |
£{{ number_format((float)($row['revenue'] ?? 0), 2) }} |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | {{ number_format($addQty) }} | £{{ number_format($addRev, 2) }} |
@endif
{{-- ── LAST 100 TRANSACTIONS ── --}}
@elseif($reportType === 'last100')
| Time |
Branch |
Invoice |
Customer |
Device |
Type |
Payment |
Total (£) |
Status |
@forelse($rows as $row)
| {{ $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'] ?? '' }} |
@empty
| No data available. |
@endforelse
{{-- ── 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
| Tax Rate | Orders | Net (£) | Tax (£) | Gross (£) |
@forelse($rows as $row)
| 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) }} |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | {{ number_format($taxOrders) }} | £{{ number_format($taxNet, 2) }} | £{{ number_format($taxTax, 2) }} | £{{ number_format($taxGross, 2) }} |
@endif
{{-- ── 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
| PLU | Name | Quantity | Sales (£) |
@forelse($sgByCat as $catName => $block)
| {{ $catName }} |
@foreach($block['items'] as $item)
| {{ $item['productid'] ?? '' }} |
{{ $item['prodname'] ?? '-' }} |
{{ number_format((float)($item['qty'] ?? 0)) }} |
£{{ number_format((float)($item['revenue'] ?? 0), 2) }} |
@endforeach
| {{ $catName }} Total | {{ number_format($block['qty']) }} | £{{ number_format($block['sales'], 2) }} |
@empty
| No data available. |
@endforelse
@if(!empty($sgByCat))
| Grand Total | {{ number_format($sgGrandQty) }} | £{{ number_format($sgGrandSales, 2) }} |
@endif
{{-- ── 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
| # | Product | Category | Qty Sold | Revenue (£) | Avg Price (£) |
@forelse($rows as $idx => $row)
| {{ $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) }} |
@empty
| No data available. |
@endforelse
@if(!empty($rows))
| Total | | {{ number_format($tsQty) }} | £{{ number_format($tsRev, 2) }} | — |
@endif
@else
@foreach(array_keys((array)($rows[0] ?? ['No data' => ''])) as $col)| {{ ucwords(str_replace('_', ' ', $col)) }} | @endforeach
@forelse($rows as $row)
@foreach($row as $value)| {{ is_numeric($value) ? number_format((float)$value, 2) : $value }} | @endforeach
@empty
| No data available. |
@endforelse
@endif