$order->uuid, 'order_number' => $order->order_number, ]); try { // Generate QR code URL $qrUrl = route('ops.order.show', ['token' => $order->qr_token]); Log::debug('Generating QR sticker', [ 'order_uuid' => $order->uuid, 'order_number' => $order->order_number, 'qr_url' => $qrUrl, ]); // Generate SVG (for web display) $svgPath = $this->generateSvg($order, $qrUrl); Log::info('SVG QR code generated', [ 'order_uuid' => $order->uuid, 'svg_path' => $svgPath, ]); // Generate A6 PDF (for printing) $pdfPath = $this->generatePdf($order, $qrUrl); Log::info('QR sticker generated successfully', [ 'order_uuid' => $order->uuid, 'svg_path' => $svgPath, 'pdf_path' => $pdfPath, ]); return [ 'svg_path' => $svgPath, 'pdf_path' => $pdfPath, ]; } catch (\Exception $e) { Log::error('Failed to generate QR sticker', [ 'order_uuid' => $order->uuid, 'error' => $e->getMessage(), ]); throw $e; } } /** * Generate SVG QR code for web display */ private function generateSvg(Order $order, string $qrUrl): string { $options = new QROptions([ 'outputType' => QRCode::OUTPUT_MARKUP_SVG, 'eccLevel' => QRCode::ECC_H, 'scale' => 3, 'imageBase64' => false, ]); $qrCode = new QRCode($options); $qrSvg = $qrCode->render($qrUrl); $path = "qr-codes/{$order->uuid}.svg"; Storage::disk('public')->put($path, $qrSvg); return $path; } /** * Generate A6 PDF sticker (105mm × 148mm) with QR code and readable info */ private function generatePdf(Order $order, string $qrUrl): string { // Generate QR code as SVG, then convert to data URI $options = new QROptions([ 'outputType' => QRCode::OUTPUT_MARKUP_SVG, 'eccLevel' => QRCode::ECC_H, 'scale' => 4, 'imageBase64' => false, ]); $qrCode = new QRCode($options); $qrSvg = $qrCode->render($qrUrl); // Convert SVG to data URI for embedding in HTML $qrDataUri = 'data:image/svg+xml;base64,' . base64_encode($qrSvg); // Determine order type $orderType = $order->type === 'standard' ? 'STOCK ORDER' : 'CUSTOM ORDER'; // Extract design name $designName = ''; if ($order->items && $order->items->count() > 0) { $firstItem = $order->items->first(); $designName = $firstItem->product?->name ?? $firstItem->name ?? 'Custom Design'; } // Extract customer surname $customerName = $order->user?->name ?? ''; $nameParts = explode(' ', trim($customerName)); $customerSurname = end($nameParts); // Build HTML with proper SVG embedding (avoid heredoc issues) $html = '