feat: Wärmepumpenlizenz separat freischalten
Tests / test (push) Successful in 47s

This commit is contained in:
dh
2026-09-29 05:53:15 +00:00
parent cf2ce3aff4
commit ef708564d8
4 changed files with 110 additions and 10 deletions
+17 -9
View File
@@ -65,7 +65,7 @@ class Manager extends IPSModule implements ManagerSchnittstelle
'Name' => 'Verbraucher einstufig',
],
'{A31C9274-54F7-4BD2-9804-7AF23E86C4D1}' => [
'Katalog' => 'consumer_single',
'Katalog' => 'heat_pump',
'Name' => 'Waermepumpe',
],
'{0D94913C-0F31-4C29-A685-6EB4AE58E55D}' => [
@@ -1127,19 +1127,23 @@ class Manager extends IPSModule implements ManagerSchnittstelle
private function pruefeVerbraucherlizenzen(array $ids): void
{
[$mengen, $namen] = $this->verbraucherLizenzbelegung($ids);
$lease = $this->leseLizenzLease();
$pruefmengen = Lizenzpruefung::beruecksichtigeBestandslizenzFuerWaermepumpen(
$lease,
$mengen
);
try {
Lizenzpruefung::pruefeVerbrauchermengen($this->leseLizenzLease(), $mengen);
Lizenzpruefung::pruefeVerbrauchermengen($lease, $pruefmengen);
} catch (InvalidArgumentException $fehler) {
foreach ($mengen as $kennung => $verwendet) {
$lizenziert = Lizenzpruefung::berechtigungsMenge(
$this->leseLizenzLease(),
$kennung
);
foreach ($pruefmengen as $kennung => $verwendet) {
$lizenziert = Lizenzpruefung::berechtigungsMenge($lease, $kennung);
if ($verwendet > $lizenziert) {
$name = $namen[$kennung]
?? ($kennung === 'consumer_single' ? 'Waermepumpe (Bestandslizenz)' : $kennung);
throw new InvalidArgumentException(sprintf(
'%s: %d aktiviert, aber nur %d lizenziert. Bitte Auswahl reduzieren oder Lizenz erweitern.',
$namen[$kennung],
$name,
$verwendet,
$lizenziert
), 0, $fehler);
@@ -2329,7 +2333,11 @@ class Manager extends IPSModule implements ManagerSchnittstelle
[$mengen] = $this->verbraucherLizenzbelegung(
$this->konfigurierteAktiveVerbraucherIDs()
);
Lizenzpruefung::pruefeVerbrauchermengen($lease, $mengen);
$pruefmengen = Lizenzpruefung::beruecksichtigeBestandslizenzFuerWaermepumpen(
$lease,
$mengen
);
Lizenzpruefung::pruefeVerbrauchermengen($lease, $pruefmengen);
return true;
} catch (Throwable $fehler) {