diff --git a/Abrechnung/module.php b/Abrechnung/module.php index cc9f37c..5394be9 100644 --- a/Abrechnung/module.php +++ b/Abrechnung/module.php @@ -69,12 +69,14 @@ class Abrechnung extends IPSModule $this->RegisterVariableInteger('VisuTariffEnd', 'Tarif Enddatum', '~UnixTimestamp', 13); $this->RegisterVariableFloat('VisuTariffPrice', 'Tarif Rp/Einheit', 'BELEVO.TariffPrice', 14); $this->RegisterVariableString('VisuTariffStatus', 'Tarif Status', '', 15); + $this->RegisterVariableString('VisuTariffPayload', 'Tarif Payload', '', 16); $this->EnableAction('FromDate'); $this->EnableAction('ToDate'); $this->EnableAction('VisuTariffType'); $this->EnableAction('VisuTariffStart'); $this->EnableAction('VisuTariffEnd'); $this->EnableAction('VisuTariffPrice'); + $this->EnableAction('VisuTariffPayload'); $this->RegisterScript( 'StartBilling', @@ -102,13 +104,15 @@ class Abrechnung extends IPSModule $this->RegisterVariableInteger('VisuTariffEnd', 'Tarif Enddatum', '~UnixTimestamp', 13); $this->RegisterVariableFloat('VisuTariffPrice', 'Tarif Rp/Einheit', 'BELEVO.TariffPrice', 14); $this->RegisterVariableString('VisuTariffStatus', 'Tarif Status', '', 15); + $this->RegisterVariableString('VisuTariffPayload', 'Tarif Payload', '', 16); $this->EnableAction('VisuTariffType'); $this->EnableAction('VisuTariffStart'); $this->EnableAction('VisuTariffEnd'); $this->EnableAction('VisuTariffPrice'); + $this->EnableAction('VisuTariffPayload'); - foreach (['VisuTariffType', 'VisuTariffStart', 'VisuTariffEnd', 'VisuTariffPrice', 'VisuTariffStatus', 'SaveVisuTariff', 'DeleteVisuTariff'] as $ident) { + foreach (['VisuTariffType', 'VisuTariffStart', 'VisuTariffEnd', 'VisuTariffPrice', 'VisuTariffStatus', 'VisuTariffPayload', 'SaveVisuTariff', 'DeleteVisuTariff'] as $ident) { $this->HideObjectByIdent($ident); } } @@ -344,6 +348,7 @@ class Abrechnung extends IPSModule } $instanceID = (int)$this->InstanceID; + $payloadID = (int)$this->GetIDForIdent('VisuTariffPayload'); $status = $this->h(@GetValue($this->GetIDForIdent('VisuTariffStatus'))); $html = " @@ -410,14 +415,17 @@ root.querySelector('[data-action=save]').onclick=function(){ rows.push({unit_type:type,start:start,end:end,price:price}); } }); + var payload=JSON.stringify(rows); status.textContent='Speichern...'; - fetch('/api/',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({jsonrpc:'2.0',method:'IPS_RequestAction',params:[" . $instanceID . ",'SaveTariffTable',JSON.stringify(rows)],id:Date.now()})}) - .then(function(r){return r.json();}) - .then(function(j){ - if(j.error){throw new Error(j.error.message||'API-Fehler');} - status.textContent=(typeof j.result==='string'&&j.result)?j.result:'Gespeichert.'; - }) - .catch(function(e){status.textContent='Fehler: '+e.message;}); + if(typeof requestAction==='function'){ + requestAction(" . $payloadID . ",payload); + status.textContent='Speichern gesendet.'; + }else if(window.parent&&typeof window.parent.requestAction==='function'){ + window.parent.requestAction(" . $payloadID . ",payload); + status.textContent='Speichern gesendet.'; + }else{ + status.textContent='Fehler: requestAction nicht verfügbar.'; + } }; })(); @@ -523,6 +531,19 @@ root.querySelector('[data-action=save]').onclick=function(){ SetValue($this->GetIDForIdent($Ident), $Value); break; + case 'VisuTariffPayload': + SetValue($this->GetIDForIdent('VisuTariffPayload'), (string)$Value); + try { + $message = $this->SaveTariffTableFromPayload($Value); + SetValue($this->GetIDForIdent('VisuTariffStatus'), $message); + echo $message; + } catch (Throwable $e) { + $message = 'Fehler beim Speichern der Tarifliste: ' . $e->getMessage(); + SetValue($this->GetIDForIdent('VisuTariffStatus'), $message); + echo $message; + } + break; + case 'SaveVisuTariff': try { $message = $this->SaveVisuTariffFromVariables();