diff --git a/app/modules_app/invoices/export_excel.php b/app/modules_app/invoices/export_excel.php index 21d333c..643bf32 100644 --- a/app/modules_app/invoices/export_excel.php +++ b/app/modules_app/invoices/export_excel.php @@ -113,6 +113,20 @@ $dec = function($val) { return ($result !== false && $result !== null) ? $result : (string)$val; }; +// Robust download helper for QR codes +$downloadUrl = function($url) { + $data = @file_get_contents($url); + if ($data === false && function_exists('curl_init')) { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_TIMEOUT, 10); + $data = curl_exec($ch); + curl_close($ch); + } + return $data; +}; + // ══════════════════════════════════════════ // BUILD SPREADSHEET // ══════════════════════════════════════════ @@ -169,6 +183,25 @@ $summarySheet->getStyle("J1")->applyFromArray([ 'alignment' => ['horizontal' => Alignment::HORIZONTAL_LEFT, 'vertical' => Alignment::VERTICAL_CENTER], ]); +// --- Add QR Code to Summary Header --- +try { + $summaryUrl = "https://musadaq.intaleqapp.com/"; + $qrApiUrl = "https://api.qrserver.com/v1/create-qr-code/?size=100x100&data=" . urlencode($summaryUrl); + $qrData = $downloadUrl($qrApiUrl); + if ($qrData) { + $tmpQr = tempnam(sys_get_temp_dir(), 'qr_sum_'); + file_put_contents($tmpQr, $qrData); + $drawingQr = new Drawing(); + $drawingQr->setName('Musadaq QR'); + $drawingQr->setPath($tmpQr); + $drawingQr->setHeight(38); + $drawingQr->setCoordinates('I1'); + $drawingQr->setOffsetX(40); + $drawingQr->setOffsetY(5); + $drawingQr->setWorksheet($summarySheet); + } +} catch(\Exception $e) {} + // Summary Meta Info $companyNameFilter = 'جميع الشركات'; if ($companyId) { @@ -309,19 +342,23 @@ foreach ($invoices as $invIdx => $inv) { ]); // --- Add Verification QR Code --- - $verifyUrl = "https://musadaq.intaleqapp.com/index.php?route=v1/verify&id=" . $inv['id']; - $qrApiUrl = "https://api.qrserver.com/v1/create-qr-code/?size=100x100&data=" . urlencode($verifyUrl); - - // Download QR to temp file - $tmpQr = tempnam(sys_get_temp_dir(), 'qr_'); - file_put_contents($tmpQr, file_get_contents($qrApiUrl)); - - $drawingQr = new Drawing(); - $drawingQr->setName('Verification QR'); - $drawingQr->setPath($tmpQr); - $drawingQr->setHeight(70); - $drawingQr->setCoordinates('H' . ($invRow + 2)); // Place below the headers area - $drawingQr->setWorksheet($sheet); + try { + $verifyUrl = "https://musadaq.intaleqapp.com/index.php?route=v1/verify&id=" . $inv['id']; + $qrApiUrl = "https://api.qrserver.com/v1/create-qr-code/?size=100x100&data=" . urlencode($verifyUrl); + $qrData = $downloadUrl($qrApiUrl); + if ($qrData) { + $tmpQr = tempnam(sys_get_temp_dir(), 'qr_inv_'); + file_put_contents($tmpQr, $qrData); + $drawingQr = new Drawing(); + $drawingQr->setName('Verification QR'); + $drawingQr->setPath($tmpQr); + $drawingQr->setHeight(38); + $drawingQr->setCoordinates('H' . $invRow); + $drawingQr->setOffsetX(40); + $drawingQr->setOffsetY(5); + $drawingQr->setWorksheet($sheet); + } + } catch(\Exception $e) {} $invRow++;