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

{{ $order->referenz() ?: 'Bestellung ' . $order->id }}

{{ $order->branch?->name ?? 'Zentrallager' }} · {{ $order->lieferantName() }} · {{ $order->order_date?->format('d.m.Y') }} @if($order->sent_at) · übertragen {{ $order->sent_at->format('H:i') }} Uhr @endif @if($order->sent_by) · {{ $order->sent_by }} @endif

@php $stil = match ($order->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', }; @endphp {{ match ($order->status) { 'sent' => 'gesendet', 'failed' => 'fehlgeschlagen', 'draft' => 'Entwurf', default => $order->status } }}
{{-- Der Weg der Ware durch beide Warenwirtschaften. Steht vor der Antwort des Gegenuebers, weil die Frage "wo ist die Ware" haeufiger ist als "was hat die Schnittstelle geantwortet". --}} @if(! empty($verlauf['schritte']))

Verlauf

{{ $verlauf['stand'] === 'abgeschlossen' ? 'abgeschlossen' : $verlauf['stand_titel'] }}
@if(! empty($verlauf['fehler']))
@foreach($verlauf['fehler'] as $f)
{{ $f }}
@endforeach
Die betroffenen Schritte stehen deshalb auf „offen" – das heißt hier nicht, dass nichts passiert ist.
@endif
    @foreach($verlauf['schritte'] as $i => $s) @php $farbe = $s['erledigt'] ? 'bg-emerald-500' : (($s['teilweise'] ?? false) ? 'bg-amber-400' : 'bg-gray-300'); $letzter = $i === count($verlauf['schritte']) - 1; @endphp {{-- Zwei Spalten statt einer Flex-Zeile mit Abstaenden: so klebt nichts aneinander, auch wenn eine Utility-Klasse im Build fehlt. --}}
  1. @unless($letzter) @endunless
    {{ $s['titel'] }} @if($s['zeitpunkt'])  · {{ $s['zeitpunkt'] }} @endif  · {{ $s['system'] }}
    @if($s['text'])
    {{ $s['text'] }}
    @endif @if(! empty($s['warnung']))
    {{ $s['warnung'] }}
    @endif
  2. @endforeach

Verbunden werden die drei Systeme über unsere Bestellnummer ({{ $order->referenz() }}): sie steht im Online-Auftrag als externe Nummer und in der Filial-Wawi als eigene Bestellnummer, weil der Ameise-Import sie aus der CSV übernimmt. Ohne sie ließen sich die Belege nicht zusammenbringen – die Systeme teilen sonst keinen Schlüssel. @unless($verlauf['eigene_gruppe']) Auftrag, Lieferschein und Versand entfallen hier: dieser Lieferant liefert direkt an die Filiale. @endunless

@endif @if($order->response)

Antwort des Gegenübers

{{ $order->response }}
@if($order->status === 'failed')

Fehlgeschlagen – die Vorschläge sind offen geblieben und können erneut gesendet werden. Steht oben, dass der Auftragskopf angelegt wurde, liegt in der Wawi ein leerer Beleg, der dort gelöscht werden sollte.

@endif
@endif @php $anschrift = $order->payload['order']['Shipmentaddress'] ?? null; @endphp @if($anschrift)

Gesendete Lieferanschrift

{{ $anschrift['Company'] ?? '' }}
{{ $anschrift['Street'] ?? '' }}
{{ $anschrift['PostalCode'] ?? '' }} {{ $anschrift['City'] ?? '' }} ({{ $anschrift['CountryIso'] ?? '' }})
@endif @php // Zwei Formate: Riccardo (JTL-Auftragspositionen) und ExTrade // (neutrales Bestellformat). Beide auf eine Anzeige bringen. $zeilen = collect($order->payload['lineItems'] ?? $order->payload['positions'] ?? []) ->map(fn ($p) => [ 'sku' => $p['SKU'] ?? $p['sku'] ?? '', 'name' => $p['Name'] ?? $p['name'] ?? '', 'menge' => $p['Quantity'] ?? $p['quantity'] ?? 0, ]); @endphp

Übertragene Positionen

{{ $zeilen->count() }} Positionen · {{ number_format((float) $order->units, 0, ',', '.') }} Stück

@foreach($zeilen as $z) @endforeach
Artikelnummer Artikel Menge
{{ $z['sku'] }} {{ $z['name'] }} {{ (int) $z['menge'] }}

Offline-Wawi

@if(\App\Http\Controllers\Admin\SupplierOrderController::istRiccardo($order))

Die Lieferantenbestellung für den Ameise-Import wird beim Anlegen automatisch auf der Storage Box abgelegt. Hier lässt sie sich nachträglich erzeugen – aus den übertragenen Positionen, nicht aus dem heutigen Rechenstand.

CSV herunterladen
@csrf
@else

Nur Riccardo-Bestellungen haben diesen Weg – ExTrade und Niko liefern direkt an die Filiale.

@endif
Zurück zur Übersicht