diff --git a/Abrechnung/module.php b/Abrechnung/module.php index ef906e1..92fe751 100644 --- a/Abrechnung/module.php +++ b/Abrechnung/module.php @@ -106,35 +106,31 @@ public function GenerateInvoices() { $from = GetValue($this->GetIDForIdent('FromDate')); $to = GetValue($this->GetIDForIdent('ToDate')); - IPS_LogMessage('Abrechnung', 'Users Raw: ' . $this->ReadPropertyString('Users')); IPS_LogMessage('Abrechnung', '🕒 Starte GenerateInvoices()'); IPS_LogMessage('Abrechnung', 'Zeitraum von ' . date('d.m.Y H:i', $from) . ' bis ' . date('d.m.Y H:i', $to)); - if ($from >= $to) { - IPS_LogMessage('Abrechnung', '❌ Ungültiger Zeitraum: Start >= Ende'); - return false; - } - $users = json_decode($this->ReadPropertyString('Users'), true); $power = json_decode($this->ReadPropertyString('PowerMeters'), true); $water = json_decode($this->ReadPropertyString('WaterMeters'), true); $tariffs = json_decode($this->ReadPropertyString('Tariffs'), true); - if ($users === null) IPS_LogMessage('Abrechnung', '⚠️ Users konnte nicht geparst werden'); - if ($power === null) IPS_LogMessage('Abrechnung', '⚠️ PowerMeters konnte nicht geparst werden'); - if ($water === null) IPS_LogMessage('Abrechnung', '⚠️ WaterMeters konnte nicht geparst werden'); - if ($tariffs === null) IPS_LogMessage('Abrechnung', '⚠️ Tariffs konnte nicht geparst werden'); + IPS_LogMessage('Abrechnung', 'Benutzer gefunden: ' . count($users)); + IPS_LogMessage('Abrechnung', 'Stromzähler: ' . count($power) . ', Wasserzähler: ' . count($water) . ', Tarife: ' . count($tariffs)); - if (empty($users)) { - IPS_LogMessage('Abrechnung', '❌ Keine Benutzer definiert → Abbruch'); + // --- TEST TCPDF VERFÜGBAR? --- + if (!class_exists('TCPDF')) { + IPS_LogMessage('Abrechnung', '❌ TCPDF fehlt – prüfe libs/vendor/autoload.php'); return false; + } else { + IPS_LogMessage('Abrechnung', '✅ TCPDF-Klasse gefunden'); } - IPS_LogMessage('Abrechnung', '✅ Benutzer: ' . count($users) . ', Stromzähler: ' . count($power) . ', Wasserzähler: ' . count($water) . ', Tarife: ' . count($tariffs)); - - + // --- Jetzt starten wir den PDF-Teil --- + try { $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); + IPS_LogMessage('Abrechnung', '📄 TCPDF-Objekt erstellt'); + $pdf->SetCreator('IPSymcon Abrechnung'); $pdf->SetAuthor('Abrechnung Modul'); $pdf->SetTitle('Zählerabrechnung'); @@ -142,6 +138,22 @@ public function GenerateInvoices() $pdf->SetAutoPageBreak(true, 20); $pdf->SetFont('dejavusans', '', 10); + foreach ($users as $user) { + IPS_LogMessage('Abrechnung', '→ Erstelle Seite für Benutzer: ' . $user['name']); + $pdf->AddPage(); + $pdf->writeHTML("

Rechnung fĂĽr {$user['name']}

"); + $pdf->writeHTML("

{$user['address']}
{$user['city']}

"); + } + + $content = $pdf->Output('Abrechnung.pdf', 'S'); + IPS_LogMessage('Abrechnung', 'âś… PDF erstellt (' . strlen($content) . ' Bytes)'); + return $content; + + } catch (Throwable $e) { + IPS_LogMessage('Abrechnung', 'đź’Ą Exception in TCPDF: ' . $e->getMessage()); + return false; + } +} foreach ($users as $user) { $pdf->AddPage(); $pdf->writeHTML("

Rechnung fĂĽr {$user['name']}

");