loadMissing('qrCode', 'merchant'); // Only food menus feed a kitchen. if (($order->qrCode?->type) !== QrCode::TYPE_MENU || ! $order->merchant) { return; } $items = collect((array) $order->items) ->filter(fn ($i) => strtolower(trim((string) ($i['name'] ?? ''))) !== 'shipping') ->map(fn ($i) => [ 'name' => (string) ($i['name'] ?? ''), 'quantity' => max(1, (int) ($i['qty'] ?? 1)), 'unit_price_minor' => (int) round(((float) ($i['price_ghs'] ?? 0)) * 100), ]) ->filter(fn ($i) => $i['name'] !== '') ->values() ->all(); if ($items === []) { return; } try { Http::withToken($key)->acceptJson()->asJson()->timeout(8) ->post($url.'/kitchen/orders', [ 'owner' => (string) $order->merchant->public_id, 'reference' => (string) ($order->payment_reference ?: ('QO-'.$order->id)), 'customer_name' => $order->customer_name, 'items' => $items, ]); } catch (\Throwable $e) { report($e); } } }