Update: 2026-05-15 15:30:00
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user