{{-- Einstufung und Verteilung gehoeren zusammen: die eine ist die Eingabe, die andere das Ergebnis. Seit 07.09.2026 eine Seite. --}}
Einstufung der Filialen Verteilung bei Knappheit
@php $nf0 = fn ($v) => number_format((float) $v, 0, ',', '.'); $nf2 = fn ($v) => number_format((float) $v, 2, ',', '.'); $badge = fn ($k) => match ($k) { 'A' => 'bg-emerald-100 text-emerald-800', 'B' => 'bg-amber-100 text-amber-800', default => 'bg-gray-100 text-gray-600', }; @endphp
@if(session('success'))
{{ session('success') }}
@endif

Wie die Triage entscheidet

Reicht der Bestand eines Lieferanten nicht für alle Filialen, wird nach Rang = Tagesabsatz × Artikel-ABC × Filial-Faktor zugeteilt – von oben nach unten, bis nichts mehr da ist. Keine gleichmäßige Kürzung. Der Filial-Faktor bewertet die Kundschaft: A = Stammkundschaft (Faktor {{ $nf2($faktoren['A'] ?? 3) }} – ein fehlender Artikel kostet den Kunden samt allem, was er noch gekauft hätte), B = gemischt ({{ $nf2($faktoren['B'] ?? 1.5) }}), C = Laufkundschaft ({{ $nf2($faktoren['C'] ?? 1) }} – ein fehlender Artikel kostet einen Bon).

Die Einstufung ist Vorgabe der Geschäftsführung – Stammkundschaft ist an der Barkasse nicht messbar. Die fünf Gegenproben rechts sind Indizien aus den Verkaufsdaten (Terzile im Kettenvergleich: A-Indiz spricht für Stammkundschaft). Sie ändern die Einstufung nie automatisch; widersprechen vier von fünf, wird die Filiale zur Besprechung markiert.

Zusätzlich rechnet der Monatslauf (1. des Monats, triage:filialvorschlag) einen kombinierten Vorschlag aus den fünf Artikel-Indikatoren und den Bon-Kennzahlen der Kassen (Stück je Bon, Einartikel- und Großbon-Quote, 90 Tage). @if(!empty($vorschlag['stand'])) Letzter Stand: {{ \Illuminate\Support\Carbon::parse($vorschlag['stand'])->format('d.m.Y') }}{{ ($vorschlag['bon_verfuegbar'] ?? true) ? '' : ' (ohne Bon-Sicht – Offline-WaWi war nicht erreichbar)' }}. @else Noch kein Lauf erfolgt – manuell per php artisan triage:filialvorschlag. @endif Auch dieser Vorschlag ändert nie etwas von selbst.

@csrf
@foreach($auswertung as $zeile) @php $b = $zeile['branch']; $w = $zeile['werte']; $k = $zeile['klassen']; @endphp @endforeach
Filiale Verbrauch Konzentration Streuung Wochentakt Stk/Kauf Tendenz Vorschlag Einstufung
{{ $b->name }} {{ $nf0($w['verbrauch'] * 100) }} % {{ $k['verbrauch'] }} {{ $nf0($w['konzentration'] * 100) }} % {{ $k['konzentration'] }} {{ $nf2($w['stetigkeit']) }} {{ $k['stetigkeit'] }} {{ $nf2($w['wochentakt']) }} {{ $k['wochentakt'] }} {{ $nf2($w['vorratskauf']) }} {{ $k['vorratskauf'] }} {{ $zeile['tendenz'] }} @php $v = $vorschlag['filialen'][$b->id] ?? null; $effektiv = $zeile['vorgabe'] !== '' ? $zeile['vorgabe'] : 'C'; @endphp @if($v) {{ $v['vorschlag'] }} @if($v['vorschlag'] !== $effektiv) ≠ Vorgabe @endif @else – @endif @if($zeile['widersprueche'] >= 4) Besprechen – {{ $zeile['widersprueche'] }}/5 widersprechen @endif

Historie ab {{ \App\Models\SalesHistory::min('sale_date') }} – die Indizien werden mit wachsender Historie belastbarer. Änderungen wirken ab dem nächsten Nachschublauf.