diff --git a/Abrechnung/module.php b/Abrechnung/module.php index 5394be9..6a2128b 100644 --- a/Abrechnung/module.php +++ b/Abrechnung/module.php @@ -91,11 +91,50 @@ class Abrechnung extends IPSModule { parent::ApplyChanges(); $this->RegisterTariffVariableProfiles(); + $this->RegisterTariffWebhook(); $this->EnsureVisuTariffObjects(); $this->InitializeVisuTariffDefaults(); $this->UpdateTariffOverview(); } + private function RegisterTariffWebhook() + { + $webhook = $this->GetTariffWebhookPath(); + $ids = @IPS_GetInstanceListByModuleID('{015A6EB8-D6E5-4B93-B496-0D3F77AE9FE1}'); + if (empty($ids)) { + return; + } + + $hookID = $ids[0]; + $hooks = json_decode(IPS_GetProperty($hookID, 'Hooks'), true); + $hooks = is_array($hooks) ? $hooks : []; + $found = false; + + foreach ($hooks as $index => $hook) { + if (($hook['Hook'] ?? '') !== $webhook) { + continue; + } + $hooks[$index]['TargetID'] = $this->InstanceID; + $found = true; + break; + } + + if (!$found) { + $hooks[] = [ + 'Hook' => $webhook, + 'TargetID' => $this->InstanceID + ]; + } + + IPS_SetProperty($hookID, 'Hooks', json_encode($hooks)); + IPS_ApplyChanges($hookID); + } + + private function GetTariffWebhookPath() + { + return '/hook/belevo_abrechnung_tariffs_' . $this->InstanceID; + } + private function EnsureVisuTariffObjects() { $this->RegisterVariableString('VisuTariffOverview', 'Tarife bearbeiten', '~HTMLBox', 10); @@ -347,12 +386,11 @@ class Abrechnung extends IPSModule $typeOptions .= ''; } - $instanceID = (int)$this->InstanceID; - $payloadID = (int)$this->GetIDForIdent('VisuTariffPayload'); + $webhookPath = $this->GetTariffWebhookPath(); $status = $this->h(@GetValue($this->GetIDForIdent('VisuTariffStatus'))); $html = " -