Update: 2026-05-15 15:30:00

This commit is contained in:
Hamza-Ayed
2026-05-15 15:30:00 +03:00
parent 3eecb2f602
commit 9ecc03adb1

View File

@@ -161,15 +161,20 @@ $summarySheet->setTitle('الملخص الإجمالي');
$summarySheet->setRightToLeft(true); $summarySheet->setRightToLeft(true);
// --- SUMMARY HEADER --- // --- SUMMARY HEADER ---
$summarySheet->mergeCells("A1:J1"); // We use A1 for Logo, B1:I1 for Title, J1 for Link/QR to avoid merge issues in some viewers
$summarySheet->setCellValue("A1", 'مُـصَـادَق — ملخص الفواتير الإجمالي'); $summarySheet->setCellValue("B1", 'مُـصَـادَق — ملخص الفواتير الإجمالي');
$summarySheet->getStyle("A1")->applyFromArray([ $summarySheet->mergeCells("B1:I1");
$summarySheet->getStyle("B1:I1")->applyFromArray([
'font' => ['bold' => true, 'size' => 16, 'color' => ['argb' => 'FF' . $headerFont]], 'font' => ['bold' => true, 'size' => 16, 'color' => ['argb' => 'FF' . $headerFont]],
'fill' => ['fillType' => Fill::FILL_SOLID, 'startColor' => ['argb' => 'FF' . $headerBg]], 'fill' => ['fillType' => Fill::FILL_SOLID, 'startColor' => ['argb' => 'FF' . $headerBg]],
'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER, 'vertical' => Alignment::VERTICAL_CENTER], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER, 'vertical' => Alignment::VERTICAL_CENTER],
]); ]);
$summarySheet->getRowDimension(1)->setRowHeight(45); $summarySheet->getRowDimension(1)->setRowHeight(45);
// Style A1 and J1 background to match the header
$summarySheet->getStyle("A1")->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF' . $headerBg);
$summarySheet->getStyle("J1")->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF' . $headerBg);
// --- Add Logo --- // --- Add Logo ---
try { try {
if (file_exists($logoPath)) { if (file_exists($logoPath)) {
@@ -178,7 +183,7 @@ try {
$logoSummary->setPath($logoPath); $logoSummary->setPath($logoPath);
$logoSummary->setHeight(38); $logoSummary->setHeight(38);
$logoSummary->setCoordinates('A1'); $logoSummary->setCoordinates('A1');
$logoSummary->setOffsetX(15); $logoSummary->setOffsetX(5);
$logoSummary->setOffsetY(5); $logoSummary->setOffsetY(5);
$logoSummary->setWorksheet($summarySheet); $logoSummary->setWorksheet($summarySheet);
} }
@@ -204,8 +209,8 @@ try {
$drawingQr->setName('Musadaq QR'); $drawingQr->setName('Musadaq QR');
$drawingQr->setPath($tmpQr); $drawingQr->setPath($tmpQr);
$drawingQr->setHeight(38); $drawingQr->setHeight(38);
$drawingQr->setCoordinates('I1'); $drawingQr->setCoordinates('J1');
$drawingQr->setOffsetX(40); $drawingQr->setOffsetX(5);
$drawingQr->setOffsetY(5); $drawingQr->setOffsetY(5);
$drawingQr->setWorksheet($summarySheet); $drawingQr->setWorksheet($summarySheet);
} }
@@ -323,15 +328,20 @@ foreach ($invoices as $invIdx => $inv) {
$invRow = 1; $invRow = 1;
// ── INVOICE HEADER ────────────────────────── // ── INVOICE HEADER ──────────────────────────
$sheet->mergeCells("A{$invRow}:I{$invRow}"); // We use A for Logo, B:H for Title, I for QR to avoid merge issues
$sheet->setCellValue("A{$invRow}", 'مُـصَـادَق — تقرير فاتورة مشتريات'); $sheet->setCellValue("B{$invRow}", 'مُـصَـادَق — تقرير فاتورة مشتريات');
$sheet->getStyle("A{$invRow}")->applyFromArray([ $sheet->mergeCells("B{$invRow}:H{$invRow}");
$sheet->getStyle("B{$invRow}:H{$invRow}")->applyFromArray([
'font' => ['bold' => true, 'size' => 16, 'color' => ['argb' => 'FF' . $headerFont]], 'font' => ['bold' => true, 'size' => 16, 'color' => ['argb' => 'FF' . $headerFont]],
'fill' => ['fillType' => Fill::FILL_SOLID, 'startColor' => ['argb' => 'FF' . $headerBg]], 'fill' => ['fillType' => Fill::FILL_SOLID, 'startColor' => ['argb' => 'FF' . $headerBg]],
'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER, 'vertical' => Alignment::VERTICAL_CENTER], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER, 'vertical' => Alignment::VERTICAL_CENTER],
]); ]);
$sheet->getRowDimension($invRow)->setRowHeight(45); $sheet->getRowDimension($invRow)->setRowHeight(45);
// Background color for side cells
$sheet->getStyle("A{$invRow}")->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF' . $headerBg);
$sheet->getStyle("I{$invRow}")->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF' . $headerBg);
// --- Add Logo --- // --- Add Logo ---
try { try {
if (file_exists($logoPath)) { if (file_exists($logoPath)) {
@@ -340,18 +350,19 @@ foreach ($invoices as $invIdx => $inv) {
$logoInv->setPath($logoPath); $logoInv->setPath($logoPath);
$logoInv->setHeight(38); $logoInv->setHeight(38);
$logoInv->setCoordinates('A' . $invRow); $logoInv->setCoordinates('A' . $invRow);
$logoInv->setOffsetX(15); $logoInv->setOffsetX(5);
$logoInv->setOffsetY(5); $logoInv->setOffsetY(5);
$logoInv->setWorksheet($sheet); $logoInv->setWorksheet($sheet);
} }
} catch(\Exception $e) { error_log('Logo Invoice Error: ' . $e->getMessage()); } } catch(\Exception $e) { error_log('Logo Invoice Error: ' . $e->getMessage()); }
// --- Add Clickable Website Link --- // --- Add Clickable Website Link ---
// We'll move the link slightly down or put it in I1 with the QR
$sheet->setCellValue("I" . $invRow, 'musadaq.intaleqapp.com'); $sheet->setCellValue("I" . $invRow, 'musadaq.intaleqapp.com');
$sheet->getCell("I" . $invRow)->getHyperlink()->setUrl('https://musadaq.intaleqapp.com/'); $sheet->getCell("I" . $invRow)->getHyperlink()->setUrl('https://musadaq.intaleqapp.com/');
$sheet->getStyle("I" . $invRow)->applyFromArray([ $sheet->getStyle("I" . $invRow)->applyFromArray([
'font' => ['color' => ['argb' => 'FFFFFFFF'], 'underline' => true, 'size' => 9], 'font' => ['color' => ['argb' => 'FFFFFFFF'], 'underline' => true, 'size' => 8],
'alignment' => ['horizontal' => Alignment::HORIZONTAL_LEFT, 'vertical' => Alignment::VERTICAL_CENTER], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_LEFT, 'vertical' => Alignment::VERTICAL_TOP],
]); ]);
// --- Add Verification QR Code --- // --- Add Verification QR Code ---
@@ -366,8 +377,8 @@ foreach ($invoices as $invIdx => $inv) {
$drawingQr->setName('Verification QR'); $drawingQr->setName('Verification QR');
$drawingQr->setPath($tmpQr); $drawingQr->setPath($tmpQr);
$drawingQr->setHeight(38); $drawingQr->setHeight(38);
$drawingQr->setCoordinates('H' . $invRow); $drawingQr->setCoordinates('I' . $invRow);
$drawingQr->setOffsetX(40); $drawingQr->setOffsetX(5);
$drawingQr->setOffsetY(5); $drawingQr->setOffsetY(5);
$drawingQr->setWorksheet($sheet); $drawingQr->setWorksheet($sheet);
} }