@extends('layouts.app') @section('title', 'Bar Reports') @section('content')

Bar Reports

Best-sellers, consumption, stock variance and wastage for the bar.@if (str_starts_with($area, 'section:')) Showing {{ $areaOptions[$area] ?? 'one counter' }} — sales figures are per counter; stock variance and wastage are recorded per store, not per counter.@endif

@can('data.costs') @endcan
@if ($bestSellers->isNotEmpty())

Top sellers by revenue

@endif

Best-selling drinks

Bottle, glass and shot pours appear as separate line items here since each is its own menu product.

@forelse ($bestSellers as $name => $row) @empty @endforelse
ItemQty soldRevenue
{{ $name }}{{ $row['qty'] }}{{ number_format($row['revenue'], 0) }}
No sales in this range.

Consumption (units moved)

@forelse ($consumption->sortDesc() as $name => $qty) @empty @endforelse
ProductQty consumed
{{ $name }}{{ number_format($qty, 2) }}
No stock movement in this range.

Wastage ({{ $wastage->count() }} entries)

@forelse ($wastage as $entry) @empty @endforelse
ProductQtyReason
{{ $entry->product->name }}{{ number_format(abs($entry->quantity), 2) }}{{ $entry->reason ?? '—' }}
No wastage recorded in this range.

Stock variance (completed stock takes)

@forelse ($variance as $v) @empty @endforelse
ProductExpectedActualVariance
{{ $v->product->name }} {{ number_format($v->expected_quantity, 2) }} {{ number_format($v->actual_quantity, 2) }} {{ number_format($v->variance, 2) }}
No completed stock take covering the bar in this range.

Complimentary drinks ({{ $complimentaryItems->count() }})

@forelse ($complimentaryItems->groupBy(fn($i) => $i->product->name) as $name => $group) @empty @endforelse @if ($complimentaryItems->isNotEmpty()) @endif
ItemQtyValue forgone
{{ $name }}{{ $group->sum('quantity') }}{{ number_format($group->sum(fn($i) => $i->quantity * $i->product->selling_price), 0) }}
No complimentary drinks in this range.
Total forgone{{ number_format($complimentaryValue, 0) }}
@endsection