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']}
-
-
- | Zähler |
- Typ |
- Startzeit |
- Endzeit |
- Zählerstand Start |
- Zählerstand Ende |
- Verbrauch |
- Tarif (Rp) |
- Kosten (CHF) |
-
- ";
+ $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ähler |
+ Typ |
+ Startzeit |
+ Endzeit |
+ Zählerstart |
+ Zählerende |
+ Verbrauch |
+ Tarif (Rp) |
+ Kosten (CHF) |
+
{$stromRows}
+
+ | 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 .= "
+
+ | Zähler |
+ Typ |
+ Startzeit |
+ Endzeit |
+ Zählerstart |
+ Zählerende |
+ Verbrauch |
+ Tarif (Rp) |
+ Kosten (CHF) |
+
{$nebenRows}
+
+ | 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);
}