From 10ee3829b5f99ab23a60bf707a06d7100a0fb33f Mon Sep 17 00:00:00 2001 From: konstantin Date: Mon, 26 Feb 2024 17:55:15 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20method=20to=20get=20a=20list?= =?UTF-8?q?=20of=20Ermittlungsauftraege=20with=20limit&offset=20(#3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain-specific-terms.txt | 3 + src/bssclient/client/bssclient.py | 41 +- src/bssclient/models/ermittlungsauftrag.py | 57 +++ src/bssclient/models/netzvertrag.py | 53 --- src/bssclient/models/prozess.py | 28 ++ .../list_of_1_ermittlungsauftraege.json | 116 ++++++ .../example_data/list_of_netzvertraege.json | 360 ------------------ .../example_data/single_netzvertrag.json | 218 ----------- unittests/test_ermittlungsauftraege.py | 26 ++ unittests/test_netzvertraege.py | 52 --- 10 files changed, 243 insertions(+), 711 deletions(-) create mode 100644 src/bssclient/models/ermittlungsauftrag.py delete mode 100644 src/bssclient/models/netzvertrag.py create mode 100644 src/bssclient/models/prozess.py create mode 100644 unittests/example_data/list_of_1_ermittlungsauftraege.json delete mode 100644 unittests/example_data/list_of_netzvertraege.json delete mode 100644 unittests/example_data/single_netzvertrag.json create mode 100644 unittests/test_ermittlungsauftraege.py delete mode 100644 unittests/test_netzvertraege.py diff --git a/domain-specific-terms.txt b/domain-specific-terms.txt index a3fe153..1c4b83f 100644 --- a/domain-specific-terms.txt +++ b/domain-specific-terms.txt @@ -3,3 +3,6 @@ openend adresse objekt oder +prozess +autor +titel diff --git a/src/bssclient/client/bssclient.py b/src/bssclient/client/bssclient.py index 53d2590..4109a34 100644 --- a/src/bssclient/client/bssclient.py +++ b/src/bssclient/client/bssclient.py @@ -8,14 +8,14 @@ from aiohttp import BasicAuth, ClientSession, ClientTimeout from bssclient.client.config import BssConfig -from bssclient.models.netzvertrag import Netzvertrag, _ListOfNetzvertraege +from bssclient.models.ermittlungsauftrag import Ermittlungsauftrag, _ListOfErmittlungsauftraege _logger = logging.getLogger(__name__) class BssClient: """ - an async wrapper around the TMDS API + an async wrapper around the BSS API """ def __init__(self, config: BssConfig): @@ -52,38 +52,23 @@ async def close_session(self): await self._session.close() self._session = None - async def get_netzvertraege_for_melo(self, melo_id: str) -> list[Netzvertrag]: + async def get_ermittlungsauftraege(self, limit: int = 0, offset: int = 0) -> list[Ermittlungsauftrag]: """ - provide a melo id, e.g. 'DE1234567890123456789012345678901' and get the corresponding netzvertrag + get all ermittlungsauftrage in the specified range """ - if not melo_id: - raise ValueError("You must not provide an empty melo_id") session = await self._get_session() - request_url = self._config.server_url / "api" / "Netzvertrag" / "find" % {"messlokation": melo_id} + request_url = ( + self._config.server_url + / "api" + / "Aufgabe" + / "ermittlungsauftraege" + % {"limit": limit, "offset": offset, "includeDetails": "true"} + ) request_uuid = uuid.uuid4() _logger.debug("[%s] requesting %s", str(request_uuid), request_url) async with session.get(request_url) as response: response.raise_for_status() # endpoint returns an empty list but no 404 _logger.debug("[%s] response status: %s", str(request_uuid), response.status) response_json = await response.json() - _list_of_netzvertraege = _ListOfNetzvertraege.model_validate(response_json) - return _list_of_netzvertraege.root - - async def get_netzvertrag_by_id(self, nv_id: uuid.UUID) -> Netzvertrag | None: - """ - provide a UUID, get the matching netzvertrag in return (or None, if 404) - """ - session = await self._get_session() - request_url = self._config.server_url / "api" / "Netzvertrag" / str(nv_id) - request_uuid = uuid.uuid4() - _logger.debug("[%s] requesting %s", str(request_uuid), request_url) - async with session.get(request_url) as response: - try: - if response.status == 404: - return None - response.raise_for_status() - finally: - _logger.debug("[%s] response status: %s", str(request_uuid), response.status) - response_json = await response.json() - result = Netzvertrag.model_validate(response_json) - return result + _list_of_ermittlungsauftraege = _ListOfErmittlungsauftraege.model_validate(response_json) + return _list_of_ermittlungsauftraege.root diff --git a/src/bssclient/models/ermittlungsauftrag.py b/src/bssclient/models/ermittlungsauftrag.py new file mode 100644 index 0000000..0d6cb43 --- /dev/null +++ b/src/bssclient/models/ermittlungsauftrag.py @@ -0,0 +1,57 @@ +""" +models for Ermittlungsauftrag/Investigation Order +""" + +from typing import Literal +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel + +from bssclient.models.prozess import Prozess + + +class Notiz(BaseModel): + """ + Notiz am Ermittlungsauftrag + """ + + autor: str + zeitpunkt: AwareDatetime | None = None + inhalt: str + timestamp: AwareDatetime + guid: UUID + + +class Ermittlungsauftrag(BaseModel): + """ + an investigation order + """ + + model_config = ConfigDict(extra="allow", populate_by_name=True) + id: UUID + flat_id: str = Field(alias="flatId") + """ + the external ID of the respective Wohneinheit + """ + marktloaktion_id: str = Field(alias="marktlokationId") + """ + malo id + """ + messlokation_id: str = Field(alias="messlokationId") + """ + melo id + """ + zaehlernummer: str = Field(alias="zaehlernummer") + vertrag_id: UUID = Field(alias="vertragId") + """ + ID of the respective netzvertrag + """ + lieferbeginn: AwareDatetime + lieferende: AwareDatetime | None + notizen: list[Notiz] + kategorie: Literal["Ermittlungsauftrag"] + prozess: Prozess + + +class _ListOfErmittlungsauftraege(RootModel[list[Ermittlungsauftrag]]): + pass diff --git a/src/bssclient/models/netzvertrag.py b/src/bssclient/models/netzvertrag.py deleted file mode 100644 index fbe5afc..0000000 --- a/src/bssclient/models/netzvertrag.py +++ /dev/null @@ -1,53 +0,0 @@ -""" -a Netzvertrag is a contract between a supplier and a grid operator -""" - -from enum import StrEnum -from uuid import UUID - -from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel - - -class Vertragsstatus(StrEnum): - """ - Abbildung einer Statusinformation für Verträge. - """ - - # copied instead of imported from bo4e because: https://github.com/bo4e/BO4E-python/issues/724 - IN_ARBEIT = "IN_ARBEIT" #: in Arbeit - UEBERMITTELT = "UEBERMITTELT" #: übermittelt - ANGENOMMEN = "ANGENOMMEN" #: angenommen - AKTIV = "AKTIV" #: aktiv - ABGELEHNT = "ABGELEHNT" #: abgelehnt - WIDERRUFEN = "WIDERRUFEN" #: widerrufen - STORNIERT = "STORNIERT" #: storniert - GEKUENDIGT = "GEKUENDIGT" #: gekündigt - BEENDET = "BEENDET" #: beendet - - -class Bo4eVertrag(BaseModel): - """ - a bo4e vertrag (inside the Netzvertrag) - """ - - model_config = ConfigDict(extra="allow", populate_by_name=True) - vertragsnummer: str - vertragsbeginn: AwareDatetime - vertragsende: AwareDatetime | None = None - vertragstatus: Vertragsstatus - # note that in TMDS / BO4E.net the property is called "vertragstatus" but in Python 'vertragsstatus' - # https://github.com/Hochfrequenz/BO4E-dotnet/issues/417 - - -class Netzvertrag(BaseModel): - """ - a TMDS netzvertrag - """ - - model_config = ConfigDict(extra="allow", populate_by_name=True) - id: UUID - bo_model: Bo4eVertrag | None = Field(alias="boModel", default=None) - - -class _ListOfNetzvertraege(RootModel[list[Netzvertrag]]): - pass diff --git a/src/bssclient/models/prozess.py b/src/bssclient/models/prozess.py new file mode 100644 index 0000000..86f08ae --- /dev/null +++ b/src/bssclient/models/prozess.py @@ -0,0 +1,28 @@ +""" +models for BSS Prozess +""" + +from uuid import UUID + +from pydantic import BaseModel, Field + + +class Prozess(BaseModel): + """ + a bss prozess + """ + + id: UUID + status: str + status_text: str = Field(alias="statusText") + typ: str + ausloeser: str + externe_id: str = Field(alias="externeId") + marktlokation: str + ide_referenz: str = Field(alias="ideReferenz") + transaktionsgrund: str + ausloeser_daten: str = Field(alias="ausloeserDaten") + antwort_status: str = Field(alias="antwortStatus") + einheit: str + messlokation: str + zaehlernummer: str diff --git a/unittests/example_data/list_of_1_ermittlungsauftraege.json b/unittests/example_data/list_of_1_ermittlungsauftraege.json new file mode 100644 index 0000000..8386fe0 --- /dev/null +++ b/unittests/example_data/list_of_1_ermittlungsauftraege.json @@ -0,0 +1,116 @@ +[ + { + "einheitId": "1c6a4f15-7b1d-4566-a0a1-877389306060", + "flatId": "40444339", + "lagezusatz": "Part.", + "geschaeftspartner": { + "boTyp": "GESCHAEFTSPARTNER", + "versionStruktur": "1", + "timestamp": "2024-02-20T08:30:48.374243", + "externeReferenzen": null, + "guid": "98692222-57ec-4dba-ba74-651bba9768ab", + "anrede": null, + "title": null, + "name1": "Mein Versorger GmbH", + "name2": null, + "name3": "Ersatzversorgung", + "gewerbekennzeichnung": true, + "hrnummer": null, + "amtsgericht": null, + "kontaktweg": null, + "umsatzsteuerId": null, + "glaeubigerId": null, + "eMailAdresse": null, + "website": null, + "geschaeftspartnerrolle": null, + "partneradresse": null, + "grundlageZurVerringerungDerUmlagenNachEnfg": null + }, + "marktlokationId": "52671494807", + "messlokationId": "DE00011122233344455566677788899900012", + "zaehlernummer": "12345678", + "vertragId": "8d074ec4-37f3-466d-9083-75e148153b96", + "lieferbeginn": "2023-10-31T23:00:00+00:00", + "lieferende": null, + "lieferadresse": { + "timestamp": "2021-10-11T10:02:09.153356+00:00", + "guid": "087a198e-1f8c-45bd-a04c-3410c4b88211", + "postleitzahl": "12117", + "ort": "Neustadt", + "strasse": "Neue Str.", + "hausnummer": "98", + "postfach": null, + "adresszusatz": null, + "coErgaenzung": null, + "landescode": "DE", + "ortsteil": "Schönefeld", + "versionStruktur": 1 + }, + "notizen": [ + { + "autor": "System", + "zeitpunkt": "2024-02-20T08:30:48.317648+00:00", + "inhalt": "Der Ermittlungsauftrag wurde erstellt und geht in die Wartezeit über.", + "timestamp": "2024-02-20T08:30:48.37542+00:00", + "guid": "98d3c039-fe24-400f-bb76-dbb752e5cbc8", + "historisch": true + }, + { + "autor": "System", + "zeitpunkt": "2024-02-20T08:46:23.692438+00:00", + "inhalt": "Der zugehörige Eigentümer 10012345 wurde ermittelt und für die vorliegende Einheit angemeldet.", + "timestamp": "2024-02-20T08:46:23.728174+00:00", + "guid": "f5031b1b-8201-4abf-9e69-201bfff28f48" + } + ], + "verwalterName": null, + "verwalterMobil": null, + "verwalterId": "00000000-0000-0000-0000-000000000000", + "id": "6f15832e-27f7-414f-92f3-db9f8724488c", + "agentId": null, + "prozess": { + "id": "1afe5dd2-e79d-45ac-9849-2bdea4036b18", + "status": "Beendet", + "statusText": "Prozess wurde automatisch beendet", + "typ": "Leerstand", + "ausloeser": "Dei Mudder ihr Prozess", + "externeId": "EJ00102020304050KMLKSDMLAKSMDS", + "marktlokation": "52671494807", + "ideReferenz": "EJ00102020304050KMLKSDMLAKSMDS", + "transaktionsgrund": "Z36", + "ausloeserDaten": "{\"ExterneID\":\"EJ00102020304050KMLKSDMLAKSMDS\",\"stammdaten\":[{\"boTyp\":\"MARKTLOKATION\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"marktlokationsId\":\"52671494807\",\"sparte\":4,\"energierichtung\":null,\"bilanzierungsmethode\":null,\"verbrauchsart\":null,\"unterbrechbar\":null,\"netzebene\":null,\"netzbetreiberCodeNr\":null,\"gebietTyp\":null,\"netzgebietNr\":null,\"bilanzierungsgebiet\":null,\"grundversorgerCodeNr\":null,\"gasqualitaet\":null,\"lokationsadresse\":{\"postleitzahl\":\"12117\",\"ort\":\"Neustadt\",\"strasse\":\"Neue Str.\",\"hausnummer\":\"98\",\"postfach\":null,\"adresszusatz\":null,\"coErgaenzung\":null,\"landescode\":61,\"ortsteil\":\"Südstadt\"},\"geoadresse\":null,\"katasterinformation\":null,\"marktrollen\":null,\"regelzone\":null,\"marktgebiet\":null,\"zeitreihentyp\":null,\"zaehlwerke\":[{\"zaehlwerkId\":null,\"bezeichnung\":null,\"richtung\":null,\"obisKennzahl\":null,\"wandlerfaktor\":null,\"einheit\":null,\"kennzahl\":null,\"schwachlastfaehig\":null,\"verwendungszwecke\":[],\"verbrauchsart\":null,\"unterbrechbarkeit\":null,\"waermenutzung\":null,\"konzessionsabgabe\":null,\"steuerbefreit\":null,\"vorkommastelle\":null,\"nachkommastelle\":null,\"abrechnungsrelevant\":null,\"anzahlAblesungen\":1,\"zaehlzeiten\":null,\"konfiguration\":null}],\"zaehlwerkeBeteiligteMarktrolle\":null,\"verbrauchsmenge\":null,\"messlokationen\":null,\"zugehoerigeMesslokationen\":null,\"messtechnischeEinordnung\":null,\"netznutzungsabrechnungsdaten\":null,\"sperrstatus\":0,\"messprodukte\":null,\"konfigurationsprodukte\":null},{\"boTyp\":\"VERTRAG\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"vertragsnummer\":\"52671494807\",\"beschreibung\":null,\"vertragsart\":0,\"vertragstatus\":null,\"sparte\":4,\"vertragsbeginn\":\"2023-10-31T23:00:00+00:00\",\"vertragsende\":null,\"vertragspartner1\":null,\"vertragspartner2\":{\"boTyp\":\"GESCHAEFTSPARTNER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"anrede\":null,\"title\":null,\"name1\":\"Mein Versorger GmbH\",\"name2\":null,\"name3\":\"Ersatzversorgung\",\"gewerbekennzeichnung\":true,\"hrnummer\":null,\"amtsgericht\":null,\"kontaktweg\":null,\"umsatzsteuerId\":null,\"glaeubigerId\":null,\"eMailAdresse\":null,\"website\":null,\"geschaeftspartnerrolle\":null,\"partneradresse\":{\"postleitzahl\":\"82031\",\"ort\":\"Neustadt\",\"strasse\":\"Teststr.\",\"hausnummer\":\"37\",\"postfach\":null,\"adresszusatz\":null,\"coErgaenzung\":null,\"landescode\":61,\"ortsteil\":\"Neustädter Altstadt\"},\"grundlageZurVerringerungDerUmlagenNachEnfg\":null},\"unterzeichnervp1\":null,\"unterzeichnervp2\":null,\"vertragskonditionen\":{\"beschreibung\":null,\"anzahlAbschlaege\":null,\"vertragslaufzeit\":null,\"kuendigungsfrist\":null,\"vertragsverlaengerung\":null,\"abschlagszyklus\":null,\"startAbrechnungsjahr\":null,\"geplanteTurnusablesung\":{\"einheit\":null,\"dauer\":null,\"startdatum\":\"2024-01-14T23:00:00+00:00\",\"enddatum\":\"2024-02-07T23:00:00+00:00\",\"startzeitpunkt\":\"2024-01-14T23:00:00+00:00\",\"endzeitpunkt\":\"2024-02-07T23:00:00+00:00\"},\"turnusablesungIntervall\":12,\"netznutzungsabrechnung\":null,\"netznutzungsabrechnungIntervall\":null,\"haushaltskunde\":true,\"netznutzungsvertrag\":1,\"netznutzungszahler\":1,\"netznutzungsabrechnungsvariante\":0,\"netznutzungsabrechnungsgrundlage\":null,\"beinhaltetSingulaerGenutzteBetriebsmittel\":null},\"vertragsteile\":null,\"gemeinderabatt\":0.00,\"korrespondenzpartner\":null},{\"boTyp\":\"ZAEHLER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"zaehlernummer\":\"12345678\",\"sparte\":4,\"zaehlerauspraegung\":null,\"zaehlertyp\":13,\"tarifart\":null,\"zaehlerkonstante\":1.0,\"eichungBis\":null,\"letzteEichung\":null,\"zaehlwerke\":[{\"zaehlwerkId\":null,\"bezeichnung\":\"1.00000\",\"richtung\":null,\"obisKennzahl\":\"8-0:1.0.0*375\",\"wandlerfaktor\":null,\"einheit\":null,\"kennzahl\":null,\"schwachlastfaehig\":null,\"verwendungszwecke\":null,\"verbrauchsart\":null,\"unterbrechbarkeit\":null,\"waermenutzung\":null,\"konzessionsabgabe\":null,\"steuerbefreit\":null,\"vorkommastelle\":5,\"nachkommastelle\":3,\"abrechnungsrelevant\":null,\"anzahlAblesungen\":1,\"zaehlzeiten\":null,\"konfiguration\":null}],\"gateway\":null,\"fernschaltung\":null,\"messwerterfassung\":1,\"zaehlertypspezifikation\":null,\"befestigungsart\":null,\"zaehlergroesse\":41,\"geraete\":null},{\"boTyp\":\"MESSLOKATION\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"messlokationsId\":\"DE00011122233344455566677788899900012\",\"sparte\":4,\"netzebeneMessung\":null,\"messgebietNr\":null,\"grundzustaendigerMSBCodeNr\":null,\"grundzustaendigerMSBIMCodeNr\":null,\"grundzustaendigerMDLCodeNr\":null,\"messadresse\":null,\"geoadresse\":null,\"katasterinformation\":null,\"geraete\":null,\"messdienstleistung\":null,\"messlokationszaehler\":null,\"bilanzierungsmethode\":null,\"abrechnungmessstellenbetriebnna\":null,\"marktrollen\":[{\"rollencodenummer\":null,\"code\":\"M34ENG\",\"marktrolle\":2,\"weiterverpflichtet\":null},{\"rollencodenummer\":null,\"code\":\"M34ENG\",\"marktrolle\":14,\"weiterverpflichtet\":null}],\"verlustfaktor\":null,\"zaehlwerke\":null,\"messprodukte\":null},{\"boTyp\":\"ANSPRECHPARTNER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"anrede\":null,\"inviduelleAnrede\":null,\"titel\":null,\"vorname\":null,\"nachname\":\"Mein Versorger GmbH\",\"eMailAdresse\":null,\"kommentar\":\"Ersatzversorgung\",\"geschaeftspartner\":null,\"adresse\":{\"postleitzahl\":\"82031\",\"ort\":\"Neustadt\",\"strasse\":\"Teststr.\",\"hausnummer\":\"37\",\"postfach\":null,\"adresszusatz\":null,\"coErgaenzung\":null,\"landescode\":61,\"ortsteil\":\"Neustädter Altstadt\"},\"rufnummern\":null,\"zustaendigkeit\":[{\"jobtitel\":null,\"abteilung\":null,\"themengebiet\":\"MSCONS\"}],\"gewerbekennzeichnung\":{\"ValueKind\":5}},{\"boTyp\":\"ANSPRECHPARTNER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"anrede\":null,\"inviduelleAnrede\":null,\"titel\":null,\"vorname\":null,\"nachname\":\"Mein Versorger GmbH\",\"eMailAdresse\":null,\"kommentar\":\"Ersatzversorgung\",\"geschaeftspartner\":null,\"adresse\":{\"postleitzahl\":\"82031\",\"ort\":\"Neustadt\",\"strasse\":\"Teststr.\",\"hausnummer\":\"37\",\"postfach\":null,\"adresszusatz\":null,\"coErgaenzung\":null,\"landescode\":61,\"ortsteil\":\"Neustädter Altstadt\"},\"rufnummern\":null,\"zustaendigkeit\":[{\"jobtitel\":null,\"abteilung\":null,\"themengebiet\":\"LIEFERANTENWECHSEL\"}],\"gewerbekennzeichnung\":{\"ValueKind\":5}},{\"boTyp\":\"BILANZIERUNG\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"marktlokationsId\":null,\"lastprofile\":null,\"bilanzierungsbeginn\":\"2023-11-30T23:00:00+00:00\",\"bilanzierungsende\":null,\"bilanzkreis\":\"BE_WASSER\",\"jahresverbrauchsprognose\":{\"wert\":0.0,\"einheit\":2000},\"temperaturarbeit\":null,\"kundenwert\":null,\"verbrauchsaufteilung\":null,\"zeitreihentyp\":null,\"aggregationsverantwortung\":null,\"prognosegrundlage\":1,\"detailsPrognosegrundlage\":null,\"wahlrechtPrognosegrundlage\":null,\"fallgruppenzuordnung\":null,\"prioritaet\":null,\"grundWahlrechtPrognosegrundlage\":null,\"abwicklungsmodell\":null},{\"boTyp\":\"MARKTTEILNEHMER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"anrede\":null,\"title\":null,\"name1\":null,\"name2\":null,\"name3\":null,\"gewerbekennzeichnung\":true,\"hrnummer\":null,\"amtsgericht\":null,\"kontaktweg\":null,\"umsatzsteuerId\":null,\"glaeubigerId\":null,\"eMailAdresse\":null,\"website\":null,\"geschaeftspartnerrolle\":null,\"partneradresse\":null,\"grundlageZurVerringerungDerUmlagenNachEnfg\":null,\"marktrolle\":null,\"rollencodenummer\":\"N34ENG\",\"rollencodetyp\":9,\"makoadresse\":null,\"ansprechpartner\":null},{\"boTyp\":\"MARKTTEILNEHMER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"anrede\":null,\"title\":null,\"name1\":null,\"name2\":null,\"name3\":null,\"gewerbekennzeichnung\":true,\"hrnummer\":null,\"amtsgericht\":null,\"kontaktweg\":null,\"umsatzsteuerId\":null,\"glaeubigerId\":null,\"eMailAdresse\":null,\"website\":null,\"geschaeftspartnerrolle\":null,\"partneradresse\":null,\"grundlageZurVerringerungDerUmlagenNachEnfg\":null,\"marktrolle\":null,\"rollencodenummer\":\"9988776655443\",\"rollencodetyp\":9,\"makoadresse\":null,\"ansprechpartner\":null}],\"transaktionsdaten\":{\"sparte\":\"WASSER\",\"vorgangsnummer\":\"EJ00102020304050KMLKSDMLAKSMDS\",\"transaktionsgrund\":\"Z36\",\"vertragsbeginn\":\"2023-10-31T23:00:00Z\",\"prozessdatum\":\"2023-10-31T23:00:00Z\",\"nächsteNetznutzungsabrechnung\":\"2024\",\"pruefidentifikator\":\"11013\",\"netznutzungsabrechnungsintervall\":\"12\",\"datenaustauschreferenz\":\"DKEMALKDMELEK1\",\"absender\":\"bo4e://Marktteilnehmer/N34ENG\",\"empfaenger\":\"bo4e://Marktteilnehmer/9988776655443\",\"dokumentennummer\":\"DKEMALKDMELEK1\",\"kategorie\":\"E01\",\"nachrichtendatum\":\"2023-11-08T03:01:00Z\",\"nachrichtenReferenznummer\":\"DKEMALKDMELEK1\"},\"links\":{\"bo4e://Messlokation/DE00011122233344455566677788899900012/Messlokationszaehler\":[\"bo4e://zaehler/12345678\"],\"bo4e://Ansprechpartner/Name und Adresse für die Ablesekarte/Messlokation\":[\"bo4e://messlokation/DE00011122233344455566677788899900012\"]}}", + "datumErzeugt": "2024-02-20T08:30:45.232244+00:00", + "datumGeaendert": "2024-02-20T08:30:45.36299+00:00", + "datumBeendet": null, + "antwortStatus": "E15", + "einheit": "40444339", + "messlokation": "DE00011122233344455566677788899900012", + "zaehlernummer": "12345678", + "adresse": null + }, + "verwandteAufgaben": [], + "status": "Beendet", + "statusGrund": "Vermieter angemeldet", + "bearbeiter": "System", + "text": "Leerstand wartet auf Eigentümeridentifikation.", + "datumErzeugt": "2024-02-20T08:30:98.300278+00:00", + "datumGeaendert": "2024-02-20T08:30:48.062698+00:00", + "datumAblauf": "2024-02-20T08:45:98.300328+00:00", + "datumMaximaleFrist": "2023-12-11T23:00:00+00:00", + "kategorie": "Ermittlungsauftrag", + "aufgabenDaten": [ + { + "id": "86c50937-052e-49f6-b4d3-ad80dc272b37", + "name": "Messlokation", + "wert": "{\"boTyp\":\"MESSLOKATION\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"messlokationsId\":\"DE00011122233344455566677788899900012\",\"sparte\":\"WASSER\",\"netzebeneMessung\":null,\"messgebietNr\":null,\"grundzustaendigerMSBCodeNr\":null,\"grundzustaendigerMSBIMCodeNr\":null,\"grundzustaendigerMDLCodeNr\":null,\"messadresse\":null,\"geoadresse\":null,\"katasterinformation\":null,\"geraete\":null,\"messdienstleistung\":null,\"messlokationszaehler\":[{\"boTyp\":\"ZAEHLER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"zaehlernummer\":\"12345678\",\"sparte\":\"WASSER\",\"zaehlerauspraegung\":null,\"zaehlertyp\":\"WASSERZAEHLER\",\"tarifart\":null,\"zaehlerkonstante\":1.0,\"eichungBis\":null,\"letzteEichung\":null,\"zaehlwerke\":[{\"zaehlwerkId\":\"0\",\"bezeichnung\":\"\",\"richtung\":null,\"obisKennzahl\":\"8-0:1.0.0*375\",\"wandlerfaktor\":null,\"einheit\":null,\"kennzahl\":null,\"schwachlastfaehig\":null,\"verwendungszwecke\":null,\"verbrauchsart\":null,\"unterbrechbarkeit\":null,\"waermenutzung\":null,\"konzessionsabgabe\":null,\"steuerbefreit\":null,\"vorkommastelle\":5,\"nachkommastelle\":3,\"abrechnungsrelevant\":null,\"anzahlAblesungen\":1,\"zaehlzeiten\":null,\"konfiguration\":null}],\"gateway\":null,\"fernschaltung\":null,\"messwerterfassung\":\"MANUELL_AUSGELESENE\",\"zaehlertypspezifikation\":null,\"befestigungsart\":null,\"zaehlergroesse\":\"WASSER_WZ01\",\"geraete\":null}],\"bilanzierungsmethode\":null,\"abrechnungmessstellenbetriebnna\":null,\"marktrollen\":[{\"rollencodenummer\":null,\"code\":\"M34ENG\",\"marktrolle\":\"MSB\",\"weiterverpflichtet\":null},{\"rollencodenummer\":null,\"code\":\"M34ENG\",\"marktrolle\":\"GMSB\",\"weiterverpflichtet\":null}],\"verlustfaktor\":null,\"zaehlwerke\":null,\"messprodukte\":null}", + "timestamp": "2024-02-20T08:30:48.062698+00:00" + }, + { + "id": "a8c63c35-1373-456f-9617-2c914fc10a9d", + "name": "Marktlokation", + "wert": "{\"boTyp\":\"MARKTLOKATION\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"marktlokationsId\":\"52671494807\",\"sparte\":\"WASSER\",\"energierichtung\":null,\"bilanzierungsmethode\":\"SLP\",\"verbrauchsart\":null,\"unterbrechbar\":null,\"netzebene\":null,\"netzbetreiberCodeNr\":null,\"gebietTyp\":null,\"netzgebietNr\":null,\"bilanzierungsgebiet\":null,\"grundversorgerCodeNr\":null,\"gasqualitaet\":null,\"lokationsadresse\":{\"postleitzahl\":\"12117\",\"ort\":\"Neustadt\",\"strasse\":\"Neue Str.\",\"hausnummer\":\"98\",\"postfach\":null,\"adresszusatz\":null,\"coErgaenzung\":null,\"landescode\":\"DE\",\"ortsteil\":\"Südstadt\"},\"geoadresse\":null,\"katasterinformation\":null,\"marktrollen\":null,\"regelzone\":null,\"marktgebiet\":null,\"zeitreihentyp\":null,\"zaehlwerke\":[{\"zaehlwerkId\":null,\"bezeichnung\":null,\"richtung\":null,\"obisKennzahl\":null,\"wandlerfaktor\":null,\"einheit\":null,\"kennzahl\":null,\"schwachlastfaehig\":null,\"verwendungszwecke\":[],\"verbrauchsart\":null,\"unterbrechbarkeit\":null,\"waermenutzung\":null,\"konzessionsabgabe\":null,\"steuerbefreit\":null,\"vorkommastelle\":null,\"nachkommastelle\":null,\"abrechnungsrelevant\":null,\"anzahlAblesungen\":1,\"zaehlzeiten\":null,\"konfiguration\":null}],\"zaehlwerkeBeteiligteMarktrolle\":null,\"verbrauchsmenge\":[{\"startdatum\":null,\"enddatum\":null,\"type\":\"VERANSCHLAGTEJAHRESMENGE\",\"tarifstufe\":null,\"wertermittlungsverfahren\":null,\"messwertstatus\":null,\"statuszusatzinformationen\":null,\"obiskennzahl\":\"\",\"wert\":0.0,\"einheit\":\"KWH\",\"nutzungszeitpunkt\":null,\"ausfuehrungszeitpunkt\":null}],\"messlokationen\":[{\"boTyp\":\"MESSLOKATION\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"messlokationsId\":\"DE00011122233344455566677788899900012\",\"sparte\":\"WASSER\",\"netzebeneMessung\":null,\"messgebietNr\":null,\"grundzustaendigerMSBCodeNr\":null,\"grundzustaendigerMSBIMCodeNr\":null,\"grundzustaendigerMDLCodeNr\":null,\"messadresse\":null,\"geoadresse\":null,\"katasterinformation\":null,\"geraete\":null,\"messdienstleistung\":null,\"messlokationszaehler\":[{\"boTyp\":\"ZAEHLER\",\"versionStruktur\":\"1\",\"externeReferenzen\":null,\"zaehlernummer\":\"12345678\",\"sparte\":\"WASSER\",\"zaehlerauspraegung\":null,\"zaehlertyp\":\"WASSERZAEHLER\",\"tarifart\":null,\"zaehlerkonstante\":1.0,\"eichungBis\":null,\"letzteEichung\":null,\"zaehlwerke\":[{\"zaehlwerkId\":\"0\",\"bezeichnung\":\"\",\"richtung\":null,\"obisKennzahl\":\"8-0:1.0.0*375\",\"wandlerfaktor\":null,\"einheit\":null,\"kennzahl\":null,\"schwachlastfaehig\":null,\"verwendungszwecke\":null,\"verbrauchsart\":null,\"unterbrechbarkeit\":null,\"waermenutzung\":null,\"konzessionsabgabe\":null,\"steuerbefreit\":null,\"vorkommastelle\":5,\"nachkommastelle\":3,\"abrechnungsrelevant\":null,\"anzahlAblesungen\":1,\"zaehlzeiten\":null,\"konfiguration\":null}],\"gateway\":null,\"fernschaltung\":null,\"messwerterfassung\":\"MANUELL_AUSGELESENE\",\"zaehlertypspezifikation\":null,\"befestigungsart\":null,\"zaehlergroesse\":\"WASSER_WZ01\",\"geraete\":null}],\"bilanzierungsmethode\":null,\"abrechnungmessstellenbetriebnna\":null,\"marktrollen\":[{\"rollencodenummer\":null,\"code\":\"M34ENG\",\"marktrolle\":\"MSB\",\"weiterverpflichtet\":null},{\"rollencodenummer\":null,\"code\":\"M34ENG\",\"marktrolle\":\"GMSB\",\"weiterverpflichtet\":null}],\"verlustfaktor\":null,\"zaehlwerke\":null,\"messprodukte\":null}],\"zugehoerigeMesslokationen\":null,\"messtechnischeEinordnung\":null,\"netznutzungsabrechnungsdaten\":null,\"sperrstatus\":\"ENTSPERRT\",\"messprodukte\":null,\"konfigurationsprodukte\":null}", + "timestamp": "2024-02-20T08:30:48.062698+00:00" + } + ] + } +] diff --git a/unittests/example_data/list_of_netzvertraege.json b/unittests/example_data/list_of_netzvertraege.json deleted file mode 100644 index e827eb2..0000000 --- a/unittests/example_data/list_of_netzvertraege.json +++ /dev/null @@ -1,360 +0,0 @@ -[ - { - "id": "3e15bf73-ea1b-4f50-8f18-3288074a4fec", - "externeId": "Prozess-c50241b3-28c0-4afe-886d-83611b72353d", - "datumErzeugt": "2022-05-19T13:16:24.221693+00:00", - "datumGeaendert": "2022-05-19T13:16:24.221693+00:00", - "boModel": { - "boTyp": "VERTRAG", - "versionStruktur": "1", - "timestamp": "2022-05-19T13:16:24.254447Z", - "guid": "489cc971-80b7-4514-b383-7e84813b8c79", - "vertragsnummer": "97149628801", - "beschreibung": "Grund- oder Ersatzversorgung", - "vertragsart": "ENERGIELIEFERVERTRAG", - "vertragstatus": "AKTIV", - "sparte": "STROM", - "vertragsbeginn": "2022-03-31T22:00:00+00:00", - "vertragspartner1": { - "boTyp": "GESCHAEFTSPARTNER", - "versionStruktur": "1", - "timestamp": "2022-05-19T13:16:24.254447Z", - "guid": "952e3bfc-0b93-49c2-b9c1-c15df3ab1c43", - "gewerbekennzeichnung": true - }, - "vertragspartner2": { - "boTyp": "GESCHAEFTSPARTNER", - "versionStruktur": "1", - "timestamp": "2022-05-19T13:16:24.254447Z", - "guid": "a0ac90e2-b75f-4c02-87ff-aa41f1996179", - "name1": "Mein Versorger GmbH", - "name3": "Ersatzversorgung", - "gewerbekennzeichnung": true - }, - "vertragskonditionen": { - "timestamp": "2022-05-19T13:16:24.254447+00:00", - "guid": "25d50e16-ce49-4555-87d6-c13f030193d0", - "anzahlAbschlaege": 12, - "geplanteTurnusablesung": { - "startdatum": "2023-03-31T22:00:00+00:00", - "startzeitpunkt": "2023-03-31T22:00:00+00:00", - "timestamp": "2022-05-19T13:16:24.254447+00:00", - "guid": "dd1511cd-abf3-410b-8f88-df62dc41d9e9" - }, - "turnusablesungIntervall": 12, - "haushaltskunde": true, - "netznutzungsvertrag": "LIEFERANTEN_NB", - "netznutzungszahler": "LIEFERANT", - "netznutzungsabrechnungsvariante": "ARBEITSPREIS_GRUNDPREIS", - "netznutzungsabrechnungsgrundlage": "LIEFERSCHEIN", - "beinhaltetSingulaerGenutzteBetriebsmittel": false - }, - "vertragsteile": [ - { - "vertragsteilbeginn": "2022-03-31T22:00:00+00:00", - "lokation": "11XSWXXXXXXXXXXXX", - "timestamp": "2022-05-19T13:16:24.254447+00:00", - "guid": "4633e8d0-e27e-411c-b87b-0f4fe640beed" - } - ], - "gemeinderabatt": 0.00 - }, - "marktlokation": { - "id": "97149628801", - "datumErzeugt": "2021-10-11T10:24:45.708929+00:00", - "datumGeaendert": "2022-05-19T13:16:29.870823+00:00", - "boModel": { - "boTyp": "MARKTLOKATION", - "versionStruktur": "1", - "marktlokationsId": "97149628801", - "sparte": "STROM", - "energierichtung": "AUSSP", - "bilanzierungsmethode": "SLP", - "verbrauchsart": "KL", - "netzebene": "NSP", - "bilanzierungsgebiet": "11YN10000762-01E", - "marktrollen": [], - "regelzone": "10YDE-EON------1", - "zeitreihentyp": "SLS", - "zaehlwerke": [], - "messtechnischeEinordnung": "KME_MME", - "netznutzungsabrechnungsdaten": [] - } - }, - "messlokation": { - "id": "DE0011122233344455566677788899900", - "datumErzeugt": "2021-10-11T10:20:38.290072+00:00", - "datumGeaendert": "2022-05-19T13:16:29.965741+00:00", - "boModel": { - "boTyp": "MESSLOKATION", - "versionStruktur": "1", - "messlokationsId": "DE0011122233344455566677788899900", - "sparte": "STROM", - "netzebeneMessung": "NSP", - "abrechnungmessstellenbetriebnna": true - }, - "messlokationPatches": [ - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-17T08:36:12.382819Z", - "von": "2022-04-30T22:00:00+00:00", - "bis": "9999-12-31T23:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "patch": { - "rootElement": null - }, - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-09T06:59:22.807366Z", - "von": "0001-01-01T00:00:00+00:00", - "bis": "2022-01-14T22:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "patch": { - "rootElement": null - }, - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-09T06:59:22.807366Z", - "von": "2022-01-14T23:00:00+00:00", - "bis": "2022-03-31T21:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-19T13:16:30.03099Z", - "von": "2022-03-31T22:00:00+00:00", - "bis": "2022-04-30T21:59:59.999999+00:00" - } - ], - "zaehler": [ - { - "von": "2001-01-01T00:00:00+00:00", - "bis": "9999-12-31T23:59:59.999999+00:00", - "entityId": "28597fbf-d318-4f7d-8a80-461b3f9c2589", - "ownerId": "DE0011122233344455566677788899900", - "entity": { - "id": "28597fbf-d318-4f7d-8a80-461b3f9c2589", - "externeId": "000000000002222222", - "boModel": { - "boTyp": "ZAEHLER", - "versionStruktur": "1", - "timestamp": "2021-10-11T11:01:31.724821Z", - "guid": "c88f8553-777b-4d9a-af7c-16b791072a4f", - "zaehlernummer": "1ESY1234567890", - "sparte": "STROM", - "zaehlerauspraegung": "EINRICHTUNGSZAEHLER", - "zaehlertyp": "DREHSTROMZAEHLER", - "tarifart": "EINTARIF", - "zaehlerkonstante": 1.0, - "zaehlwerke": [ - { - "timestamp": "2021-10-11T11:01:31.724821+00:00", - "guid": "f5c0723b-6b6e-4c1a-95aa-b5ab75b6ee23", - "zaehlwerkId": "Zaehlwerk_001", - "bezeichnung": "Zaehlwerk", - "richtung": "AUSSP", - "obisKennzahl": "1-1:1.8.0", - "wandlerfaktor": 0.0, - "einheit": "KWH", - "schwachlastfaehig": "NICHT_SCHWACHLASTFAEHIG", - "unterbrechbarkeit": "UV", - "vorkommastelle": 6, - "nachkommastelle": 0, - "abrechnungsrelevant": true, - "Id": null, - "ExterneId": "001", - "zwfaktor": 1.0 - } - ], - "fernschaltung": "NICHT_VORHANDEN", - "messwerterfassung": "MANUELL_AUSGELESENE", - "geraetenummer": "1ESY1234567890", - "geraetereferenz": null, - "geraetetyp": "Zähler" - }, - "einbaudatum": "2018-08-15T00:00:00+00:00", - "sperrzustand": "ENTSPERRT" - }, - "timestamp": "2021-10-11T11:14:19.510894Z", - "start": "2001-01-01T00:00:00Z" - } - ], - "einheit": { - "id": "d5f1e6c6-a943-4eaa-b465-1970a2582582", - "externeId": "42345789", - "lagezusatz": "5.Etg.", - "objekt": { - "id": "0b542183-1d14-4e95-bde9-184d4feae268", - "externeId": "10078155", - "adresse": { - "id": "d38e8d8e-095c-4458-8d99-e7f9ee5c45a0", - "externeId": "0009933882", - "datumGeaendert": "2023-08-04T08:27:07.019946+00:00", - "boModel": { - "timestamp": "2021-10-11T10:01:50.275637+00:00", - "guid": "4aa20331-ffdf-4fe2-a008-0129ccc1c0d7", - "postleitzahl": "88021", - "ort": "Neustadt", - "strasse": "Musterstraße", - "hausnummer": "5", - "landescode": "DE", - "ortsteil": "Nordstadt", - "co_ergaenzung": null, - "versionStruktur": 1.0 - }, - "anschlussobjekte": [] - } - } - } - }, - "vertragsPatches": [], - "marktnachrichten": [] - }, - { - "id": "90cf6817-bd97-41b2-a75c-914c3834333c", - "datumErzeugt": "2024-01-03T13:50:41.9851437+00:00", - "datumGeaendert": "2024-01-03T13:50:41.9851462+00:00", - "messlokation": { - "id": "DE0011122233344455566677788899900", - "datumErzeugt": "2021-10-11T10:20:38.290072+00:00", - "datumGeaendert": "2022-05-19T13:16:29.965741+00:00", - "boModel": { - "boTyp": "MESSLOKATION", - "versionStruktur": "1", - "messlokationsId": "DE0011122233344455566677788899900", - "sparte": "STROM", - "netzebeneMessung": "NSP", - "abrechnungmessstellenbetriebnna": true - }, - "messlokationPatches": [ - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-17T08:36:12.382819Z", - "von": "2022-04-30T22:00:00+00:00", - "bis": "9999-12-31T23:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "patch": { - "rootElement": null - }, - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-09T06:59:22.807366Z", - "von": "0001-01-01T00:00:00+00:00", - "bis": "2022-01-14T22:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "patch": { - "rootElement": null - }, - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-09T06:59:22.807366Z", - "von": "2022-01-14T23:00:00+00:00", - "bis": "2022-03-31T21:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-19T13:16:30.03099Z", - "von": "2022-03-31T22:00:00+00:00", - "bis": "2022-04-30T21:59:59.999999+00:00" - } - ], - "zaehler": [ - { - "von": "2001-01-01T00:00:00+00:00", - "bis": "9999-12-31T23:59:59.999999+00:00", - "entityId": "28597fbf-d318-4f7d-8a80-461b3f9c2589", - "ownerId": "DE0011122233344455566677788899900", - "entity": { - "id": "28597fbf-d318-4f7d-8a80-461b3f9c2589", - "externeId": "000000000002222222", - "boModel": { - "boTyp": "ZAEHLER", - "versionStruktur": "1", - "timestamp": "2021-10-11T11:01:31.724821Z", - "guid": "c88f8553-777b-4d9a-af7c-16b791072a4f", - "zaehlernummer": "1ESY1234567890", - "sparte": "STROM", - "zaehlerauspraegung": "EINRICHTUNGSZAEHLER", - "zaehlertyp": "DREHSTROMZAEHLER", - "tarifart": "EINTARIF", - "zaehlerkonstante": 1.0, - "zaehlwerke": [ - { - "timestamp": "2021-10-11T11:01:31.724821+00:00", - "guid": "f5c0723b-6b6e-4c1a-95aa-b5ab75b6ee23", - "zaehlwerkId": "Zaehlwerk_001", - "bezeichnung": "Zaehlwerk", - "richtung": "AUSSP", - "obisKennzahl": "1-1:1.8.0", - "wandlerfaktor": 0.0, - "einheit": "KWH", - "schwachlastfaehig": "NICHT_SCHWACHLASTFAEHIG", - "unterbrechbarkeit": "UV", - "vorkommastelle": 6, - "nachkommastelle": 0, - "abrechnungsrelevant": true, - "Id": null, - "ExterneId": "001", - "zwfaktor": 1.0 - } - ], - "fernschaltung": "NICHT_VORHANDEN", - "messwerterfassung": "MANUELL_AUSGELESENE", - "geraetenummer": "1ESY1234567890", - "geraetereferenz": null, - "geraetetyp": "Zähler" - }, - "einbaudatum": "2018-08-15T00:00:00+00:00", - "sperrzustand": "ENTSPERRT" - }, - "timestamp": "2021-10-11T11:14:19.510894Z", - "start": "2001-01-01T00:00:00Z" - } - ], - "einheit": { - "id": "d5f1e6c6-a943-4eaa-b465-1970a2582582", - "externeId": "42345789", - "lagezusatz": "5.Etg.", - "objekt": { - "id": "0b542183-1d14-4e95-bde9-184d4feae268", - "externeId": "10078155", - "adresse": { - "id": "d38e8d8e-095c-4458-8d99-e7f9ee5c45a0", - "externeId": "0009933882", - "datumGeaendert": "2023-08-04T08:27:07.019946+00:00", - "boModel": { - "timestamp": "2021-10-11T10:01:50.275637+00:00", - "guid": "4aa20331-ffdf-4fe2-a008-0129ccc1c0d7", - "postleitzahl": "88021", - "ort": "Neustadt", - "strasse": "Musterstraße", - "hausnummer": "5", - "landescode": "DE", - "ortsteil": "Nordstadt", - "co_ergaenzung": null, - "versionStruktur": 1.0 - }, - "anschlussobjekte": [] - } - } - } - }, - "vertragsPatches": [], - "marktnachrichten": [] - } -] diff --git a/unittests/example_data/single_netzvertrag.json b/unittests/example_data/single_netzvertrag.json deleted file mode 100644 index 1f30aa7..0000000 --- a/unittests/example_data/single_netzvertrag.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "id": "3e15bf73-ea1b-4f50-8f18-3288074a4fec", - "externeId": "Prozess-c50241b3-28c0-4afe-886d-83611b72353d", - "datumErzeugt": "2022-05-19T13:16:24.221693+00:00", - "datumGeaendert": "2022-05-19T13:16:24.221693+00:00", - "boModel": { - "boTyp": "VERTRAG", - "versionStruktur": "1", - "timestamp": "2022-05-19T13:16:24.254447Z", - "guid": "489cc971-80b7-4514-b383-7e84813b8c79", - "vertragsnummer": "97149628801", - "beschreibung": "Grund- oder Ersatzversorgung", - "vertragsart": "ENERGIELIEFERVERTRAG", - "vertragstatus": "AKTIV", - "sparte": "STROM", - "vertragsbeginn": "2022-03-31T22:00:00+00:00", - "vertragspartner1": { - "boTyp": "GESCHAEFTSPARTNER", - "versionStruktur": "1", - "timestamp": "2022-05-19T13:16:24.254447Z", - "guid": "952e3bfc-0b93-49c2-b9c1-c15df3ab1c43", - "gewerbekennzeichnung": true - }, - "vertragspartner2": { - "boTyp": "GESCHAEFTSPARTNER", - "versionStruktur": "1", - "timestamp": "2022-05-19T13:16:24.254447Z", - "guid": "a0ac90e2-b75f-4c02-87ff-aa41f1996179", - "name1": "Mein Versorger GmbH", - "name3": "Ersatzversorgung", - "gewerbekennzeichnung": true - }, - "vertragskonditionen": { - "timestamp": "2022-05-19T13:16:24.254447+00:00", - "guid": "25d50e16-ce49-4555-87d6-c13f030193d0", - "anzahlAbschlaege": 12, - "geplanteTurnusablesung": { - "startdatum": "2023-03-31T22:00:00+00:00", - "startzeitpunkt": "2023-03-31T22:00:00+00:00", - "timestamp": "2022-05-19T13:16:24.254447+00:00", - "guid": "dd1511cd-abf3-410b-8f88-df62dc41d9e9" - }, - "turnusablesungIntervall": 12, - "haushaltskunde": true, - "netznutzungsvertrag": "LIEFERANTEN_NB", - "netznutzungszahler": "LIEFERANT", - "netznutzungsabrechnungsvariante": "ARBEITSPREIS_GRUNDPREIS", - "netznutzungsabrechnungsgrundlage": "LIEFERSCHEIN", - "beinhaltetSingulaerGenutzteBetriebsmittel": false - }, - "vertragsteile": [ - { - "vertragsteilbeginn": "2022-03-31T22:00:00+00:00", - "lokation": "11XSWXXXXXXXXXXXX", - "timestamp": "2022-05-19T13:16:24.254447+00:00", - "guid": "4633e8d0-e27e-411c-b87b-0f4fe640beed" - } - ], - "gemeinderabatt": 0.00 - }, - "marktlokation": { - "id": "97149628801", - "datumErzeugt": "2021-10-11T10:24:45.708929+00:00", - "datumGeaendert": "2022-05-19T13:16:29.870823+00:00", - "boModel": { - "boTyp": "MARKTLOKATION", - "versionStruktur": "1", - "marktlokationsId": "97149628801", - "sparte": "STROM", - "energierichtung": "AUSSP", - "bilanzierungsmethode": "SLP", - "verbrauchsart": "KL", - "netzebene": "NSP", - "bilanzierungsgebiet": "11YN10000762-01E", - "marktrollen": [], - "regelzone": "10YDE-EON------1", - "zeitreihentyp": "SLS", - "zaehlwerke": [], - "messtechnischeEinordnung": "KME_MME", - "netznutzungsabrechnungsdaten": [] - } - }, - "messlokation": { - "id": "DE0011122233344455566677788899900", - "datumErzeugt": "2021-10-11T10:20:38.290072+00:00", - "datumGeaendert": "2022-05-19T13:16:29.965741+00:00", - "boModel": { - "boTyp": "MESSLOKATION", - "versionStruktur": "1", - "messlokationsId": "DE0011122233344455566677788899900", - "sparte": "STROM", - "netzebeneMessung": "NSP", - "abrechnungmessstellenbetriebnna": true - }, - "messlokationPatches": [ - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-17T08:36:12.382819Z", - "von": "2022-04-30T22:00:00+00:00", - "bis": "9999-12-31T23:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "patch": { - "rootElement": null - }, - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-09T06:59:22.807366Z", - "von": "0001-01-01T00:00:00+00:00", - "bis": "2022-01-14T22:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "patch": { - "rootElement": null - }, - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-09T06:59:22.807366Z", - "von": "2022-01-14T23:00:00+00:00", - "bis": "2022-03-31T21:59:59.999999+00:00" - }, - { - "openEnd": "9999-12-31T23:59:59.9999999+00:00", - "ownerId": "DE0011122233344455566677788899900", - "entityName": "Messlokation", - "timestamp": "2022-05-19T13:16:30.03099Z", - "von": "2022-03-31T22:00:00+00:00", - "bis": "2022-04-30T21:59:59.999999+00:00" - } - ], - "zaehler": [ - { - "von": "2001-01-01T00:00:00+00:00", - "bis": "9999-12-31T23:59:59.999999+00:00", - "entityId": "28597fbf-d318-4f7d-8a80-461b3f9c2589", - "ownerId": "DE0011122233344455566677788899900", - "entity": { - "id": "28597fbf-d318-4f7d-8a80-461b3f9c2589", - "externeId": "000000000002222222", - "boModel": { - "boTyp": "ZAEHLER", - "versionStruktur": "1", - "timestamp": "2021-10-11T11:01:31.724821Z", - "guid": "c88f8553-777b-4d9a-af7c-16b791072a4f", - "zaehlernummer": "1ESY1234567890", - "sparte": "STROM", - "zaehlerauspraegung": "EINRICHTUNGSZAEHLER", - "zaehlertyp": "DREHSTROMZAEHLER", - "tarifart": "EINTARIF", - "zaehlerkonstante": 1.0, - "zaehlwerke": [ - { - "timestamp": "2021-10-11T11:01:31.724821+00:00", - "guid": "f5c0723b-6b6e-4c1a-95aa-b5ab75b6ee23", - "zaehlwerkId": "Zaehlwerk_001", - "bezeichnung": "Zaehlwerk", - "richtung": "AUSSP", - "obisKennzahl": "1-1:1.8.0", - "wandlerfaktor": 0.0, - "einheit": "KWH", - "schwachlastfaehig": "NICHT_SCHWACHLASTFAEHIG", - "unterbrechbarkeit": "UV", - "vorkommastelle": 6, - "nachkommastelle": 0, - "abrechnungsrelevant": true, - "Id": null, - "ExterneId": "001", - "zwfaktor": 1.0 - } - ], - "fernschaltung": "NICHT_VORHANDEN", - "messwerterfassung": "MANUELL_AUSGELESENE", - "geraetenummer": "1ESY1234567890", - "geraetereferenz": null, - "geraetetyp": "Zähler" - }, - "einbaudatum": "2018-08-15T00:00:00+00:00", - "sperrzustand": "ENTSPERRT" - }, - "timestamp": "2021-10-11T11:14:19.510894Z", - "start": "2001-01-01T00:00:00Z" - } - ], - "einheit": { - "id": "d5f1e6c6-a943-4eaa-b465-1970a2582582", - "externeId": "42345789", - "lagezusatz": "5.Etg.", - "objekt": { - "id": "0b542183-1d14-4e95-bde9-184d4feae268", - "externeId": "10078155", - "adresse": { - "id": "d38e8d8e-095c-4458-8d99-e7f9ee5c45a0", - "externeId": "0009933882", - "datumGeaendert": "2023-08-04T08:27:07.019946+00:00", - "boModel": { - "timestamp": "2021-10-11T10:01:50.275637+00:00", - "guid": "4aa20331-ffdf-4fe2-a008-0129ccc1c0d7", - "postleitzahl": "88021", - "ort": "Neustadt", - "strasse": "Musterstraße", - "hausnummer": "5", - "landescode": "DE", - "ortsteil": "Nordstadt", - "co_ergaenzung": null, - "versionStruktur": 1.0 - }, - "anschlussobjekte": [] - } - } - } - }, - "vertragsPatches": [], - "marktnachrichten": [] -} diff --git a/unittests/test_ermittlungsauftraege.py b/unittests/test_ermittlungsauftraege.py new file mode 100644 index 0000000..6715bfb --- /dev/null +++ b/unittests/test_ermittlungsauftraege.py @@ -0,0 +1,26 @@ +import json +from pathlib import Path + +from aioresponses import aioresponses + +from bssclient.models.ermittlungsauftrag import Ermittlungsauftrag + + +class TestGetErmittlungsauftraege: + """ + A class with pytest unit tests. + """ + + async def test_get_ermittlungsauftraege(self, bss_client_with_default_auth): + ermittlungsauftraege_json_file = Path(__file__).parent / "example_data" / "list_of_1_ermittlungsauftraege.json" + with open(ermittlungsauftraege_json_file, "r", encoding="utf-8") as infile: + ermittlungsauftraege = json.load(infile) + client, bss_config = bss_client_with_default_auth + with aioresponses() as mocked_tmds: + mocked_get_url = ( + f"{bss_config.server_url}api/Aufgabe/ermittlungsauftraege?includeDetails=true&limit=1&offset=0" + ) + mocked_tmds.get(mocked_get_url, status=200, payload=ermittlungsauftraege) + actual = await client.get_ermittlungsauftraege(limit=1) + assert isinstance(actual, list) + assert all(isinstance(x, Ermittlungsauftrag) for x in actual) diff --git a/unittests/test_netzvertraege.py b/unittests/test_netzvertraege.py deleted file mode 100644 index 5759617..0000000 --- a/unittests/test_netzvertraege.py +++ /dev/null @@ -1,52 +0,0 @@ -import json -import uuid -from pathlib import Path - -from aioresponses import aioresponses - -from bssclient.models.netzvertrag import Bo4eVertrag, Netzvertrag, Vertragsstatus - - -class TestGetNetzvertraege: - """ - A class with pytest unit tests. - """ - - async def test_get_netzvertrag_by_id(self, bss_client_with_default_auth): - netzvertrag_json_file = Path(__file__).parent / "example_data" / "single_netzvertrag.json" - with open(netzvertrag_json_file, "r", encoding="utf-8") as infile: - netzvertrag_json = json.load(infile) - nv_id = uuid.UUID("3e15bf73-ea1b-4f50-8f18-3288074a4fec") - client, tmds_config = bss_client_with_default_auth - with aioresponses() as mocked_tmds: - mocked_get_url = f"{tmds_config.server_url}api/Netzvertrag/{nv_id}" - mocked_tmds.get(mocked_get_url, status=200, payload=netzvertrag_json) - actual = await client.get_netzvertrag_by_id(nv_id) - assert isinstance(actual, Netzvertrag) - - async def test_get_netzvertraege_by_melo(self, bss_client_with_default_auth): - netzvertraege_json_file = Path(__file__).parent / "example_data" / "list_of_netzvertraege.json" - with open(netzvertraege_json_file, "r", encoding="utf-8") as infile: - netzvertraege_json = json.load(infile) - melo_id = "DE0011122233344455566677788899900" - client, tmds_config = bss_client_with_default_auth - with aioresponses() as mocked_tmds: - mocked_get_url = f"{tmds_config.server_url}api/Netzvertrag/find?messlokation={melo_id}" - mocked_tmds.get(mocked_get_url, status=200, payload=netzvertraege_json) - actual = await client.get_netzvertraege_for_melo(melo_id) - assert isinstance(actual, list) - assert all(isinstance(x, Netzvertrag) for x in actual) - assert actual[0].bo_model.vertragsbeginn is not None - assert isinstance(actual[0].bo_model.vertragstatus, Vertragsstatus) - assert any(actual[0].model_extra), "Unmapped properties should be stored in model_extra (Netzvertrag)" - assert any(actual[0].bo_model.model_extra), "Unmapped properties should be stored in model_extra (Bo4eVertrag)" - - def test_netzvertrag_can_be_instantiated_using_field_names(self): - dummy_bo4e_vertrag = Bo4eVertrag.construct() - nv = Netzvertrag(bo_model=dummy_bo4e_vertrag, id=uuid.uuid4()) - assert nv.bo_model is not None - - def test_netzvertrag_can_be_instantiated_using_alias(self): - dummy_bo4e_vertrag = Bo4eVertrag.construct() - nv = Netzvertrag(boModel=dummy_bo4e_vertrag, id=uuid.uuid4()) - assert nv.bo_model is not None