@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif

Der ganze Vorgang an einer Stelle: bestellt → bestätigt → nach JTL importiert. Gesendete Positionen verschwinden aus der Bestellübersicht (sie stehen dann auf submitted), hier bleiben sie nachvollziehbar. Fehlversuche stehen bewusst mit drin: scheitert eine Übertragung erst bei den Positionen, liegt in der Wawi ein leerer Beleg, den jemand löschen muss.

@foreach([ ['Übertragungen', $summary['gesamt'], 'text-gray-900'], ['erfolgreich', $summary['gesendet'], 'text-emerald-700'], ['fehlgeschlagen', $summary['fehler'], $summary['fehler'] > 0 ? 'text-red-700' : 'text-gray-400'], ['ohne Bestätigung', $summary['ohne_ab'], $summary['ohne_ab'] > 0 ? 'text-amber-700' : 'text-gray-400'], ] as [$label, $wert, $farbe])

{{ $label }}

{{ number_format($wert, 0, ',', '.') }}

@endforeach
@forelse($orders as $o) @empty @endforelse
Datum Referenz Ziel Lieferant Pos. Stück Status Bestätigung Von
{{ $o->order_date?->format('d.m.Y') }} {{ $o->sent_at?->format('H:i') ?: $o->created_at->format('H:i') }} {{ $o->referenz() ?: '–' }} {{ $o->branch?->name ?? 'Zentrallager' }} {{ $o->lieferantName() }} {{ $o->positions }} {{ number_format((float) $o->units, 0, ',', '.') }} @php $stil = match ($o->status) { 'sent' => 'bg-emerald-50 text-emerald-700 ring-emerald-200', 'failed' => 'bg-red-50 text-red-700 ring-red-200', default => 'bg-gray-100 text-gray-600 ring-gray-200', }; $text = match ($o->status) { 'sent' => 'gesendet', 'failed' => 'fehlgeschlagen', 'draft' => 'Entwurf', default => $o->status, }; @endphp {{ $text }} @if($o->confirmation) {{ $o->confirmation->confirmed_at?->format('d.m.Y') ?? 'liegt vor' }} @if($o->confirmation->deviations > 0) · {{ $o->confirmation->deviations }} Abweichungen @endif @elseif($o->status === 'sent') fehlt @if($apiBereit)
@csrf
@endif @else – @endif
{{ $o->sent_by }}
Es wurde noch nichts übertragen.
{{ $orders->links() }} {{-- Der Weg fuer AB, die als Datei kommen. Er gehoert hierher, weil er denselben Vorgang fortsetzt - vorher lag er auf einer eigenen Seite. --}}

Auftragsbestätigung einlesen

Datei des Lieferanten hochladen (CSV). Die Spalten werden über Synonyme erkannt – „Artikelnummer" oder „SKU", „bestätigte Menge" oder „Menge". Wird eine Pflichtspalte nicht gefunden, sagt die Suite das im Klartext, statt still das Falsche zu tun.

@csrf
@error('datei')

{{ $message }}

@enderror
@if($ohneBestellung->isNotEmpty())

Bestätigungen ohne zugeordnete Bestellung

Eingelesen, aber keiner Bestellung dieser Suite zuzuordnen – etwa zu einer von Hand ausgelösten Bestellung. Sie sind nicht verloren, aber auch nicht Teil eines Vorgangs.

@foreach($ohneBestellung as $ab) @endforeach
{{ $ab->confirmed_at?->format('d.m.Y') ?? '–' }} {{ $ab->reference ?: $ab->supplier_reference ?: '–' }} {{ $ab->branch?->name ?? 'Zentrallager' }} {{ $ab->positions }} Pos {{ $ab->source }}
@endif