diff --git a/app/Services/QrStickerService.php b/app/Services/QrStickerService.php index edea14b..ab235c7 100644 --- a/app/Services/QrStickerService.php +++ b/app/Services/QrStickerService.php @@ -8,7 +8,6 @@ use chillerlan\QRCode\QRCode; use chillerlan\QRCode\QROptions; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; -use Illuminate\Support\Facades\View; class QrStickerService { @@ -17,6 +16,10 @@ class QrStickerService */ public function generateSticker(Order $order): array { + Log::info('Starting QR sticker generation', [ + 'order_uuid' => $order->uuid, + 'order_number' => $order->order_number, + ]); try { // Generate QR code URL $qrUrl = route('ops.order.show', ['token' => $order->qr_token]); @@ -29,7 +32,10 @@ class QrStickerService // 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); @@ -76,11 +82,6 @@ class QrStickerService /** * Generate A6 PDF sticker (105mm × 148mm) with QR code and readable info - * - * A6 dimensions: 105mm × 148mm landscape - * Margins: 5mm all around - * QR size: ~50mm × 50mm - * Text area: remaining space for order info */ private function generatePdf(Order $order, string $qrUrl): string { @@ -95,61 +96,185 @@ class QrStickerService $qrCode = new QRCode($options); $qrSvg = $qrCode->render($qrUrl); - // Determine order type and format label - $orderType = $order->type === 'standard' - ? 'STOCK ORDER' - : 'CUSTOM ORDER'; + // Determine order type + $orderType = $order->type === 'standard' ? 'STOCK ORDER' : 'CUSTOM ORDER'; - // Extract design name from first order item + // 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 (last word of name) + // Extract customer surname $customerName = $order->user?->name ?? ''; $nameParts = explode(' ', trim($customerName)); $customerSurname = end($nameParts); - // Prepare data for the view - $data = [ - 'order' => $order, - 'qrSvg' => $qrSvg, - 'orderType' => $orderType, - 'designName' => $designName, - 'customerSurname' => $customerSurname, - 'qrUrl' => $qrUrl, - 'generatedAt' => now()->format('Y-m-d H:i'), - ]; - - // Render the view to HTML first - try { - $viewPath = resource_path('views/stickers/qr-sticker.blade.php'); - if (!file_exists($viewPath)) { - throw new \Exception("View file not found at: {$viewPath}"); - } - - // Compile and render the view - $html = View::file($viewPath, $data)->render(); - } catch (\Exception $e) { - Log::error('Failed to render sticker view', [ - 'order_uuid' => $order->uuid, - 'error' => $e->getMessage(), - 'view_path' => $viewPath ?? 'unknown', - ]); - throw $e; + // Build HTML directly (no view file dependency) + $html = << + +
+ + + + +