From 4aa25fb6e31be671712d90d7cb1c428d3aa20f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=A4fliger?= Date: Wed, 5 Nov 2025 14:19:06 +0100 Subject: [PATCH] no message --- Abrechnung/module.php | 76 +++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/Abrechnung/module.php b/Abrechnung/module.php index 7d91974..b9344ae 100644 --- a/Abrechnung/module.php +++ b/Abrechnung/module.php @@ -302,7 +302,7 @@ private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type) date_default_timezone_set('Europe/Zurich'); - // 🔹 Filtere relevante Tarife nach Typ + // 🔹 Passende Tarife nach Typ filtern $filteredTariffs = array_filter($tariffs, function ($t) use ($type) { return strtolower(trim($t['unit_type'] ?? '')) === strtolower(trim($type)); }); @@ -312,7 +312,7 @@ private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type) return ['row' => '', 'value' => 0]; } - // 🔹 Normiere Zeiträume + // 🔹 Zeitstempel konvertieren und sortieren foreach ($filteredTariffs as &$t) { $t['start_ts'] = $this->toUnixTs($t['start'], false); $t['end_ts'] = $this->toUnixTs($t['end'], true); @@ -323,7 +323,6 @@ private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type) $currentStart = $from; while ($currentStart < $to) { - // 🔹 Aktiven Tarif suchen $activeTariff = null; foreach ($filteredTariffs as $t) { if (($t['start_ts'] ?? 0) <= $currentStart && $currentStart <= ($t['end_ts'] ?? 0)) { @@ -343,35 +342,32 @@ private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type) $tariffEnd = intval($activeTariff['end_ts']); $tariffPrice = floatval($activeTariff['price']); - $tariffLabel = number_format($tariffPrice, 2, ',', ''); - // 🔹 Werte aus Archiv lesen - $startValue = $this->GetValueAt($varId, $currentStart, true); - $segmentEnd = ($tariffEnd < $to) ? $tariffEnd : $to; - $endValue = $this->GetValueAt($varId, $segmentEnd, true); + $startValue = $this->GetValueAt($varId, $currentStart, true); + $segmentEnd = ($tariffEnd < $to) ? $tariffEnd : $to; + $endValue = $this->GetValueAt($varId, $segmentEnd, true); if ($startValue === null || $endValue === null) break; - $verbrauch = max(0, $endValue - $startValue); - $kosten = round(($tariffPrice / 100) * $verbrauch, 2); - $totalCost += $kosten; + $verbrauch = max(0, $endValue - $startValue); + $kosten = round(($tariffPrice / 100) * $verbrauch, 2); + $totalCost += $kosten; - // 🔹 Kurze Datumsangaben $startDate = date('d.m.Y', $currentStart); $endDate = date('d.m.Y', $segmentEnd); - // 🔹 Tabellenzeile mit sichtbaren Linien + // 🧾 TCPDF-kompatible Tabellenzeile (sichtbare Linien) $rows .= " - - {$meter['name']} - {$type} - {$startDate} - {$endDate} - " . number_format($startValue, 2) . " - " . number_format($endValue, 2) . " - " . number_format($verbrauch, 2) . " - " . $tariffLabel . " - " . number_format($kosten, 2) . " + + {$meter['name']} + {$type} + {$startDate} + {$endDate} + " . number_format($startValue, 2) . " + " . number_format($endValue, 2) . " + " . number_format($verbrauch, 2) . " + " . number_format($tariffPrice, 2) . " + " . number_format($kosten, 2) . " "; if ($tariffEnd < $to) { @@ -381,26 +377,36 @@ private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type) } } - // 🔹 Fallback – kein Segment gefunden + // Fallback (keine Segmente) if ($rows === '') { $startVal = $this->GetValueAt($varId, $from, false); $endVal = $this->GetValueAt($varId, $to, true); $verbrauch = max(0, $endVal - $startVal); $rows = " - - {$meter['name']} - {$type} - " . date('d.m.Y', $from) . " - " . date('d.m.Y', $to) . " - " . number_format($startVal, 2) . " - " . number_format($endVal, 2) . " - " . number_format($verbrauch, 2) . " - 0.00 - 0.00 + + {$meter['name']} + {$type} + " . date('d.m.Y', $from) . " + " . date('d.m.Y', $to) . " + " . number_format($startVal, 2) . " + " . number_format($endVal, 2) . " + " . number_format($verbrauch, 2) . " + 0.00 + 0.00 "; } - return ['row' => $rows, 'value' => $totalCost]; + // 🧾 Totalsumme in separater, deutlich sichtbarer Zeile + $rows .= " + + Total {$type}: + " . number_format($totalCost, 2) . " + "; + + // Komplett in eine sichtbare Tabelle einbetten (damit TCPDF Linien rendert) + $table = "{$rows}
"; + + return ['row' => $table, 'value' => $totalCost]; }