no message

This commit is contained in:
2025-12-12 08:54:06 +01:00
parent b68db49f72
commit 6650164acc

View File

@@ -398,69 +398,99 @@ class Abrechnung extends IPSModule
}
private function GetCalculatedPowerCosts($userId)
{
$html = "
<table border='1' cellspacing='0' cellpadding='2' width='100%' style='font-size:4px;'>
<tr style='background-color:#808080;'>
<th>ID</th>
<th>Import</th>
<th>Export</th>
<th>ZEV-Haus</th>
<th>Netz-Haus</th>
<th>Solar-Netz</th>
<th>Solar-ZEV</th>
<th>Kauf-Solar</th>
<th>Kauf-Netz</th>
<th>Verkauf-Netz</th>
<th>Verkauf-ZEV</th>
<th>Total CHF</th>
</tr>";
private function GetCalculatedPowerCosts($userId)
{
$html = "
<style>
table.powercost {
width: 100%;
border-collapse: collapse;
font-size: 10px;
}
table.powercost th {
background-color: #444;
color: white;
padding: 4px;
text-align: center;
font-weight: bold;
border: 1px solid #777;
}
table.powercost td {
padding: 3px 4px;
border: 1px solid #ccc;
}
.row-even { background-color: #f7f7f7; }
.row-odd { background-color: #ffffff; }
.row-empty { background-color: #e0e0e0; height: 5px; }
.total-row {
background-color: #ddd;
font-weight: bold;
}
</style>
if (empty($this->powerCostCache) || !isset($this->powerCostCache[$userId])) {
$html .= "<tr><td colspan='11' align='center'>Keine Stromzähler für diesen Benutzer</td></tr></table><br>";
return ['html' => $html, 'sum' => 0.0];
<table class='powercost'>
<tr>
<th>ID</th>
<th>Import (kWh)</th>
<th>Export (kWh)</th>
<th>ZEV-Haus (kWh)</th>
<th>Netz-Haus (kWh)</th>
<th>Solar-Netz (kWh)</th>
<th>Solar-ZEV (kWh)</th>
<th>Kauf Solar (CHF)</th>
<th>Kauf Netz (CHF)</th>
<th>Verkauf Netz (CHF)</th>
<th>Verkauf ZEV (CHF)</th>
<th>Total CHF</th>
</tr>";
if (empty($this->powerCostCache) || !isset($this->powerCostCache[$userId])) {
$html .= "<tr><td colspan='12' align='center'>Keine Stromzähler für diesen Benutzer</td></tr></table>";
return ['html' => $html, 'sum' => 0.0];
}
$sum = 0.0;
$rowIndex = 0;
foreach ($this->powerCostCache[$userId] as $name => $a) {
$subtotal = $a['cost_grid'] + $a['cost_solar'] - ($a['rev_feedin'] + $a['rev_zev']);
$sum += $subtotal;
$rowClass = ($rowIndex % 2 === 0) ? "row-even" : "row-odd";
$rowIndex++;
// Datenzeile
$html .= "<tr class='{$rowClass}'>
<td>{$a['name']}</td>
<td align='right'>" . number_format($a['imp'], 3) . "</td>
<td align='right'>" . number_format($a['exp'], 3) . "</td>
<td align='right'>" . number_format($a['solar_bezug'], 3) . "</td>
<td align='right'>" . number_format($a['netz_bezug'], 3) . "</td>
<td align='right'>" . number_format($a['solareinspeisung'], 3) . "</td>
<td align='right'>" . number_format($a['solarverkauf'], 3) . "</td>
<td align='right'>" . number_format($a['cost_solar'], 2) . "</td>
<td align='right'>" . number_format($a['cost_grid'], 2) . "</td>
<td align='right'>" . number_format($a['rev_feedin'], 2) . "</td>
<td align='right'>" . number_format($a['rev_zev'], 2) . "</td>
<td align='right'>" . number_format($subtotal, 2) . "</td>
</tr>";
// Leerzeile zwischen Zählern
$html .= "<tr class='row-empty'><td colspan='12'></td></tr>";
}
// Totalzeile
$html .= "
<tr class='total-row'>
<td colspan='11' align='right'><b>Total</b></td>
<td align='right'><b>" . number_format($sum, 2) . "</b></td>
</tr>
</table>";
return ['html' => $html, 'sum' => $sum];
}
$sum = 0.0;
foreach ($this->powerCostCache[$userId] as $name => $a) {
$subtotal = $a['cost_grid'] + $a['cost_solar'] - ($a['rev_feedin']+$a['rev_zev']);
$sum += $subtotal;
$html .= "<tr>
<td>{$a['name']}</td>
<td align='right'>" . number_format($a['imp'], 3) . " kWh</td>
<td align='right'>" . number_format($a['exp'], 3) . " kWh</td>
<td align='right'>" . number_format($a['solar_bezug'], 3) . " kWh</td>
<td align='right'>" . number_format($a['netz_bezug'], 3) . " kWh</td>
<td align='right'>" . number_format($a['solareinspeisung'], 3) . " kWh</td>
<td align='right'>" . number_format($a['solarverkauf'], 3) . " kWh</td>
<td align='right'>CHF " . number_format($a['cost_solar'], 2) . ".-</td>
<td align='right'>CHF " . number_format($a['cost_grid'], 2) . ".-</td>
<td align='right'>CHF " . number_format($a['rev_feedin'], 2) . ".-</td>
<td align='right'>CHF " . number_format($a['rev_zev'], 2) . ".-</td>
<td align='right'>CHF " . number_format($subtotal, 2) . ".-</td>
</tr>";
}
$html .= "<tr style='background-color:#f9f9f9; font-weight:bold;'>
<td colspan='25' align='right'><b>Total</b></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'></td>
<td align='right'><b>CHF " . number_format($sum, 2) . ".-</b></td>
</tr>";
return ['html' => $html, 'sum' => $sum];
}
// ====================== Nebenkosten Wasser/Wärme ======================
private function CalculateAdditionalCosts($waterMeters, $tariffs, $userId, $from, $to)