diff --git a/Abrechnung/module.php b/Abrechnung/module.php index 6b50596..36c46af 100644 --- a/Abrechnung/module.php +++ b/Abrechnung/module.php @@ -49,31 +49,56 @@ class Abrechnung extends IPSModule } } - public function RequestAction($Ident, $Value) - { - IPS_LogMessage('Abrechnung', "RequestAction: $Ident"); +public function RequestAction($Ident, $Value) +{ + IPS_LogMessage('Abrechnung', "RequestAction: $Ident"); - switch ($Ident) { - case 'FromDate': - case 'ToDate': - SetValue($this->GetIDForIdent($Ident), $Value); - break; + switch ($Ident) { + case 'FromDate': + case 'ToDate': + SetValue($this->GetIDForIdent($Ident), $Value); + break; - case 'StartBilling': + case 'StartBilling': + IPS_LogMessage('Abrechnung', 'Starte Abrechnung...'); + try { $pdfContent = $this->GenerateInvoices(); - if ($pdfContent) { - $mediaID = $this->GetIDForIdent('InvoicePDF'); - IPS_SetMediaContent($mediaID, base64_encode($pdfContent)); - SetValue($this->GetIDForIdent('LastResult'), 'Abrechnung vom ' . date('d.m.Y H:i')); - IPS_LogMessage('Abrechnung', '✅ Abrechnung erfolgreich gespeichert'); - echo "✅ PDF erfolgreich erstellt."; - } else { - IPS_LogMessage('Abrechnung', '❌ Fehler bei PDF-Erstellung'); - echo "❌ Fehler bei der PDF-Erstellung"; + if ($pdfContent === false) { + IPS_LogMessage('Abrechnung', '❌ GenerateInvoices() lieferte false zurück'); + echo "❌ Fehler bei der PDF-Erstellung (GenerateInvoices)"; + return; } - break; - } + if ($pdfContent === null) { + IPS_LogMessage('Abrechnung', '❌ GenerateInvoices() gab null zurück'); + echo "❌ Fehler bei der PDF-Erstellung (leer)"; + return; + } + if (strlen($pdfContent) < 100) { + IPS_LogMessage('Abrechnung', '❌ PDF-Inhalt zu kurz: ' . strlen($pdfContent)); + echo "❌ Fehler bei der PDF-Erstellung (leeres PDF)"; + return; + } + + $mediaID = $this->GetIDForIdent('InvoicePDF'); + if (!$mediaID) { + IPS_LogMessage('Abrechnung', '❌ Media-ID nicht gefunden'); + echo "❌ Kein Media-Objekt vorhanden"; + return; + } + + IPS_SetMediaContent($mediaID, base64_encode($pdfContent)); + SetValue($this->GetIDForIdent('LastResult'), 'Abrechnung vom ' . date('d.m.Y H:i')); + IPS_LogMessage('Abrechnung', '✅ Abrechnung erfolgreich gespeichert (' . strlen($pdfContent) . ' Bytes)'); + echo "✅ PDF erfolgreich erstellt."; + + } catch (Throwable $e) { + IPS_LogMessage('Abrechnung', '💥 Exception in StartBilling: ' . $e->getMessage()); + echo "❌ Ausnahmefehler: " . $e->getMessage(); + } + break; } +} + // ====================== PDF-Logik ======================