diff --git a/Abrechnung/module.php b/Abrechnung/module.php index 858e616..0496c51 100644 --- a/Abrechnung/module.php +++ b/Abrechnung/module.php @@ -307,10 +307,25 @@ private function AddMeterToPDFRow($meter, $tariffs, $from, $to, $type) } // 2️⃣ Zeitstempel konvertieren und sortieren - foreach ($filteredTariffs as &$t) { + foreach ($filteredTariffs as &$t) {// --- Fix: falls Start/End als verschachteltes JSON vorliegen --- + if (is_string($t['start']) && str_starts_with(trim($t['start']), '{')) { + $startObj = json_decode($t['start'], true); + if (is_array($startObj)) { + $t['start'] = sprintf('%04d-%02d-%02d 00:00:00', $startObj['year'], $startObj['month'], $startObj['day']); + } + } + if (is_string($t['end']) && str_starts_with(trim($t['end']), '{')) { + $endObj = json_decode($t['end'], true); + if (is_array($endObj)) { + $t['end'] = sprintf('%04d-%02d-%02d 23:59:59', $endObj['year'], $endObj['month'], $endObj['day']); + } + } + + // --- danach wie bisher --- $t['start_ts'] = is_numeric($t['start']) ? intval($t['start']) : strtotime($t['start']); $t['end_ts'] = is_numeric($t['end']) ? intval($t['end']) : strtotime($t['end']); + if (!$t['start_ts'] || !$t['end_ts']) { IPS_LogMessage('Abrechnung', "⚠ Ungültiger Tarifzeitraum in Tarifdefinition: " . json_encode($t)); } else {