Update: 2026-05-15 15:06:01
This commit is contained in:
@@ -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 ---
|
||||
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);
|
||||
|
||||
// Download QR to temp file
|
||||
$tmpQr = tempnam(sys_get_temp_dir(), 'qr_');
|
||||
file_put_contents($tmpQr, file_get_contents($qrApiUrl));
|
||||
|
||||
$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(70);
|
||||
$drawingQr->setCoordinates('H' . ($invRow + 2)); // Place below the headers area
|
||||
$drawingQr->setHeight(38);
|
||||
$drawingQr->setCoordinates('H' . $invRow);
|
||||
$drawingQr->setOffsetX(40);
|
||||
$drawingQr->setOffsetY(5);
|
||||
$drawingQr->setWorksheet($sheet);
|
||||
}
|
||||
} catch(\Exception $e) {}
|
||||
|
||||
$invRow++;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user