From c3f60dec6601b4b49fbdc20de6d6a633b81392a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=A4fliger?= Date: Wed, 5 Nov 2025 13:44:31 +0100 Subject: [PATCH] no message --- Abrechnung/module.php | 150 ++++++++++++++++++++++++++++++++---------- 1 file changed, 114 insertions(+), 36 deletions(-) diff --git a/Abrechnung/module.php b/Abrechnung/module.php index bc1d1c8..c8a8dd2 100644 --- a/Abrechnung/module.php +++ b/Abrechnung/module.php @@ -127,45 +127,123 @@ 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(); + foreach ($users as $user) { + IPS_LogMessage('Abrechnung', '→ Erstelle Seite für Benutzer: ' . $user['name']); + $pdf->AddPage(); - // 🔽 Hier fügst du den neuen HTML-Block ein: - $html = " -

Rechnung für {$user['name']}

-

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

- - - - - - - - - - - - - "; + $html = " +

Rechnung für {$user['name']}

+

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

+

Abrechnungszeitraum: " . date('d.m.Y', $from) . " – " . date('d.m.Y', $to) . "

+ "; - $total = 0.0; - foreach ($power as $m) { - if ($m['user_id'] != $user['id']) continue; - $cost = $this->AddMeterToPDFRow($m, $tariffs, $from, $to, 'Strombezug'); - $html .= $cost['row']; - $total += $cost['value']; + $stromRows = ''; + $stromTotal = 0.0; + $stromTariffsUsed = []; + + $nebenRows = ''; + $nebenTotal = 0.0; + $nebenTariffsUsed = []; + + // --- Stromkosten --- + foreach ($power as $m) { + if ($m['user_id'] != $user['id']) continue; + $res = $this->AddMeterToPDFRow($m, $tariffs, $from, $to, 'Strombezug'); + $stromRows .= $res['row']; + $stromTotal += $res['value']; + + // relevante Tarife sammeln + foreach ($tariffs as $t) { + if (strtolower($t['unit_type']) == 'strombezug') { + $s = is_numeric($t['start']) ? date('d.m.Y', $t['start']) : date('d.m.Y', strtotime($t['start'])); + $e = is_numeric($t['end']) ? date('d.m.Y', $t['end']) : date('d.m.Y', strtotime($t['end'])); + $stromTariffsUsed[$s . ' - ' . $e] = number_format(floatval($t['price']), 2); + } + } + } + + // --- Nebenkosten (Wasser/Wärme) --- + foreach ($water as $m) { + if ($m['user_id'] != $user['id']) continue; + $type = $m['meter_type'] ?? 'Warmwasser'; + $res = $this->AddMeterToPDFRow($m, $tariffs, $from, $to, $type); + $nebenRows .= $res['row']; + $nebenTotal += $res['value']; + + // relevante Tarife sammeln + foreach ($tariffs as $t) { + if (in_array(strtolower($t['unit_type']), ['warmwasser', 'kaltwasser', 'wärme'])) { + $s = is_numeric($t['start']) ? date('d.m.Y', $t['start']) : date('d.m.Y', strtotime($t['start'])); + $e = is_numeric($t['end']) ? date('d.m.Y', $t['end']) : date('d.m.Y', strtotime($t['end'])); + $nebenTariffsUsed[$s . ' - ' . $e] = number_format(floatval($t['price']), 2); + } + } + } + + // Tabellenstil mit Linien + $tableStyle = "border-collapse:collapse;width:100%;font-size:8px;"; + $cellStyle = "border:0.3px solid #999;padding:2px;"; + + // ---------- Stromkosten ---------- + $html .= "

⚡ Stromkosten

"; + $html .= "
ZählerTypStartzeitEndzeitZählerstand StartZählerstand EndeVerbrauchTarif (Rp)Kosten (CHF)
+ + + + + + + + + + + {$stromRows} + + + +
ZählerTypStartzeitEndzeitZählerstartZählerendeVerbrauchTarif (Rp)Kosten (CHF)
Total Stromkosten:" . number_format($stromTotal, 2) . "
"; + + if (!empty($stromTariffsUsed)) { + $html .= "

Angewendete Tarife:
"; + foreach ($stromTariffsUsed as $period => $price) { + $html .= "  {$period}: {$price} Rp/kWh
"; + } + $html .= "

"; + } + + // ---------- Nebenkosten ---------- + $html .= "

💧 Nebenkosten (Wasser & Wärme)

"; + $html .= " + + + + + + + + + + + {$nebenRows} + + + +
ZählerTypStartzeitEndzeitZählerstartZählerendeVerbrauchTarif (Rp)Kosten (CHF)
Total Nebenkosten:" . number_format($nebenTotal, 2) . "
"; + + if (!empty($nebenTariffsUsed)) { + $html .= "

Angewendete Tarife:
"; + foreach ($nebenTariffsUsed as $period => $price) { + $html .= "  {$period}: {$price} Rp/m³ oder kWh
"; + } + $html .= "

"; + } + + // ---------- Gesamttotal ---------- + $gesamtTotal = $stromTotal + $nebenTotal; + $html .= "

💰 Gesamttotal: " . number_format($gesamtTotal, 2) . " CHF

"; + + $pdf->writeHTML($html); } - foreach ($water as $m) { - if ($m['user_id'] != $user['id']) continue; - $type = $m['meter_type'] ?? 'Warmwasser'; - $cost = $this->AddMeterToPDFRow($m, $tariffs, $from, $to, $type); - $html .= $cost['row']; - $total += $cost['value']; - } - - $html .= "

Gesamtsumme: " . number_format($total, 2) . " CHF

"; - $pdf->writeHTML($html); }