From f83e0973a71517f41e3cc638da6270e21f9c244c Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 10:33:49 +0200 Subject: [PATCH 01/12] =?UTF-8?q?COM=20Preiszeitreihenwert=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bo4e/com/preiszeitreihenwert.py | 40 +++++++++++++++++++++++++++++ src/bo4e/enum/comtyp.py | 1 + 2 files changed, 41 insertions(+) create mode 100644 src/bo4e/com/preiszeitreihenwert.py diff --git a/src/bo4e/com/preiszeitreihenwert.py b/src/bo4e/com/preiszeitreihenwert.py new file mode 100644 index 000000000..66fcc31f9 --- /dev/null +++ b/src/bo4e/com/preiszeitreihenwert.py @@ -0,0 +1,40 @@ +""" +Contains Preiszeitreihenwert +""" + +from typing import TYPE_CHECKING, Annotated, Literal, Optional + +from pydantic import Field + +from ..enum.comtyp import ComTyp +from ..utils import postprocess_docstring +from .com import COM + +if TYPE_CHECKING: + from .zeitraum import Zeitraum + from .preis import Preis + from .menge import Menge + + +@postprocess_docstring +class Preiszeitreihenwert(COM): + """ + Gibt einen Wert und Preis zu einer Zeitreihe an + + .. raw:: html + + + + .. HINT:: + `Preiszeitreihenwert JSON Schema `_ + + """ + + typ: Annotated[Literal[ComTyp.PREISZEITREIHENWERT], Field(alias="_typ")] = ComTyp.PREISZEITREIHENWERT + + zeitraum: Optional["Zeitraum"] = None + """Zeitraum des Preiszeitreihenwerts""" + preis: Optional["Preis"] = None + """Preis des Preiszeitreihenwerts""" + menge: Optional["Menge"] = None + """Menge des Preiszeitreihenwerts""" diff --git a/src/bo4e/enum/comtyp.py b/src/bo4e/enum/comtyp.py index 29abed106..1c0f01e12 100644 --- a/src/bo4e/enum/comtyp.py +++ b/src/bo4e/enum/comtyp.py @@ -41,6 +41,7 @@ class ComTyp(StrEnum): PREISGARANTIE = "PREISGARANTIE" PREISPOSITION = "PREISPOSITION" PREISSTAFFEL = "PREISSTAFFEL" + PREISZEITREIHENWERT = "PREISZEITREIHENWERT" RECHNUNGSPOSITION = "RECHNUNGSPOSITION" REGIONSOPERATION = "REGIONSOPERATION" REGIONSPREIS = "REGIONSPREIS" From c3b1a5ae3a309fd0912645d3689dc21bfa348397 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 10:35:59 +0200 Subject: [PATCH 02/12] Fix TYPE_CHECKING imports --- src/bo4e/com/preiszeitreihenwert.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bo4e/com/preiszeitreihenwert.py b/src/bo4e/com/preiszeitreihenwert.py index 66fcc31f9..583ac07b9 100644 --- a/src/bo4e/com/preiszeitreihenwert.py +++ b/src/bo4e/com/preiszeitreihenwert.py @@ -11,9 +11,9 @@ from .com import COM if TYPE_CHECKING: - from .zeitraum import Zeitraum - from .preis import Preis from .menge import Menge + from .preis import Preis + from .zeitraum import Zeitraum @postprocess_docstring From 64fa7e359368dbb5d9656002ec142b63d6b68a68 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 10:42:18 +0200 Subject: [PATCH 03/12] =?UTF-8?q?Preiszeitreihenwert=20roundtrip=20Test=20?= =?UTF-8?q?erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bo4e/__init__.py | 2 ++ tests/test_preiszeitreihenwert.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 tests/test_preiszeitreihenwert.py diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index cfd217cc1..8a423af98 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -115,6 +115,7 @@ "Preisposition", "Preisreferenz", "Preisstaffel", + "Preiszeitreihenwert", "Preisstatus", "Preistyp", "Profilart", @@ -277,6 +278,7 @@ from .com.preisgarantie import Preisgarantie from .com.preisposition import Preisposition from .com.preisstaffel import Preisstaffel +from .com.preiszeitreihenwert import Preiszeitreihenwert from .com.rechnungsposition import Rechnungsposition from .com.regionsoperation import Regionsoperation from .com.regionspreis import Regionspreis diff --git a/tests/test_preiszeitreihenwert.py b/tests/test_preiszeitreihenwert.py new file mode 100644 index 000000000..772969659 --- /dev/null +++ b/tests/test_preiszeitreihenwert.py @@ -0,0 +1,30 @@ +import pytest + +from bo4e import ( + Menge, + Preis, + Preiszeitreihenwert, + Zeitraum +) +from com import zeitraum +from tests.serialization_helper import assert_serialization_roundtrip + + +class TestPreiszeitreihenwert: + @pytest.mark.parametrize( + "preiszeitreihenwert", + [ + pytest.param( + Preiszeitreihenwert( + zeitraum=Zeitraum(), + preis=Preis(), + menge=Menge(), + ) + ), + ], + ) + def test_serialization_roundtrip(self, preiszeitreihenwert: Preiszeitreihenwert) -> None: + """ + Test de-/serialisation of Preiszeitreihenwert + """ + assert_serialization_roundtrip(preiszeitreihenwert) From 1d65cb0e4b00936e2564ec1df63ed5a88af0067a Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 10:43:41 +0200 Subject: [PATCH 04/12] Fix alphabetical order --- src/bo4e/__init__.py | 2 +- tests/test_preiszeitreihenwert.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index 8a423af98..59784291d 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -115,9 +115,9 @@ "Preisposition", "Preisreferenz", "Preisstaffel", - "Preiszeitreihenwert", "Preisstatus", "Preistyp", + "Preiszeitreihenwert", "Profilart", "Profiltyp", "Profilverfahren", diff --git a/tests/test_preiszeitreihenwert.py b/tests/test_preiszeitreihenwert.py index 772969659..1ab1ec485 100644 --- a/tests/test_preiszeitreihenwert.py +++ b/tests/test_preiszeitreihenwert.py @@ -6,7 +6,6 @@ Preiszeitreihenwert, Zeitraum ) -from com import zeitraum from tests.serialization_helper import assert_serialization_roundtrip From b0be0bbbe6226cba18448662a2e5824f08b58976 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 10:46:03 +0200 Subject: [PATCH 05/12] linting --- tests/test_preiszeitreihenwert.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/test_preiszeitreihenwert.py b/tests/test_preiszeitreihenwert.py index 1ab1ec485..14f3e5d43 100644 --- a/tests/test_preiszeitreihenwert.py +++ b/tests/test_preiszeitreihenwert.py @@ -1,11 +1,6 @@ import pytest -from bo4e import ( - Menge, - Preis, - Preiszeitreihenwert, - Zeitraum -) +from bo4e import Menge, Preis, Preiszeitreihenwert, Zeitraum from tests.serialization_helper import assert_serialization_roundtrip From aaebaf33997179826591e73f4dcec1548b9630e7 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 11:36:09 +0200 Subject: [PATCH 06/12] Add COM Preiszeitreihe --- src/bo4e/__init__.py | 2 ++ src/bo4e/com/preiszeitreihe.py | 42 ++++++++++++++++++++++++++++++++++ src/bo4e/enum/comtyp.py | 1 + src/bo4e/enum/preistyp.py | 2 ++ tests/test_preiszeitreihe.py | 25 ++++++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 src/bo4e/com/preiszeitreihe.py create mode 100644 tests/test_preiszeitreihe.py diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index 59784291d..0ea681415 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -117,6 +117,7 @@ "Preisstaffel", "Preisstatus", "Preistyp", + "Preiszeitreihe", "Preiszeitreihenwert", "Profilart", "Profiltyp", @@ -278,6 +279,7 @@ from .com.preisgarantie import Preisgarantie from .com.preisposition import Preisposition from .com.preisstaffel import Preisstaffel +from .com.preiszeitreihe import Preiszeitreihe from .com.preiszeitreihenwert import Preiszeitreihenwert from .com.rechnungsposition import Rechnungsposition from .com.regionsoperation import Regionsoperation diff --git a/src/bo4e/com/preiszeitreihe.py b/src/bo4e/com/preiszeitreihe.py new file mode 100644 index 000000000..f3a52adc7 --- /dev/null +++ b/src/bo4e/com/preiszeitreihe.py @@ -0,0 +1,42 @@ +""" +Contains Preiszeitreihe +""" + +from typing import TYPE_CHECKING, Annotated, Literal, Optional + +from pydantic import Field + +from ..enum.comtyp import ComTyp +from ..utils import postprocess_docstring +from .com import COM + +if TYPE_CHECKING: + from ..enum.preistyp import Preistyp + from .preiszeitreihenwert import Preiszeitreihenwert + + +@postprocess_docstring +class Preiszeitreihe(COM): + """ + + Gibt Bezeichnung und Preisart zu einer Preiszeitreihe an + + .. raw:: html + + + + .. HINT:: + `Preiszeitreihe JSON Schema `_ + + """ + + typ: Annotated[Literal[ComTyp.PREISZEITREIHE], Field(alias="_typ")] = ComTyp.PREISZEITREIHE + + preiszeitreihe_id: str | None = None + """Identifier der Preiszeitreihe""" + bezeichnung: str | None = None + """Bezeichnung der Preiszeitreihe""" + preistyp: Optional["Preistyp"] = None + """Angabe des Preistyps""" + werte: list["Preiszeitreihenwert"] | None = None + """Liste der Preiszeitreihenwerte, die die Preiszeitreihe bilden""" diff --git a/src/bo4e/enum/comtyp.py b/src/bo4e/enum/comtyp.py index 1c0f01e12..c611a30cd 100644 --- a/src/bo4e/enum/comtyp.py +++ b/src/bo4e/enum/comtyp.py @@ -41,6 +41,7 @@ class ComTyp(StrEnum): PREISGARANTIE = "PREISGARANTIE" PREISPOSITION = "PREISPOSITION" PREISSTAFFEL = "PREISSTAFFEL" + PREISZEITREIHE = "PREISZEITREIHE" PREISZEITREIHENWERT = "PREISZEITREIHENWERT" RECHNUNGSPOSITION = "RECHNUNGSPOSITION" REGIONSOPERATION = "REGIONSOPERATION" diff --git a/src/bo4e/enum/preistyp.py b/src/bo4e/enum/preistyp.py index 12602c9a0..31bc7725a 100644 --- a/src/bo4e/enum/preistyp.py +++ b/src/bo4e/enum/preistyp.py @@ -27,3 +27,5 @@ class Preistyp(StrEnum): """Entgelt für MSB (Entgelt für Einbau, Betrieb und Wartung der Messtechnik)""" PROVISION = "PROVISION" """Provision""" + GESAMTPREIS_BRUTTO = "GESAMTPREIS_BRUTTO" + """Brutto Gesamtpreis""" diff --git a/tests/test_preiszeitreihe.py b/tests/test_preiszeitreihe.py new file mode 100644 index 000000000..142460571 --- /dev/null +++ b/tests/test_preiszeitreihe.py @@ -0,0 +1,25 @@ +import pytest + +from bo4e import Preiszeitreihe, Preiszeitreihenwert, Preistyp +from tests.serialization_helper import assert_serialization_roundtrip + + +class TestPreiszeitreihe: + @pytest.mark.parametrize( + "preiszeitreihe", + [ + pytest.param( + Preiszeitreihe( + preiszeitreihe_id="1-2-3", + bezeichnung="Bezeichnung", + preistyp=Preistyp.GESAMTPREIS_BRUTTO, + preiszeitreihenwerte=[Preiszeitreihenwert()], + ) + ), + ], + ) + def test_serialization_roundtrip(self, preiszeitreihe: Preiszeitreihe) -> None: + """ + Test de-/serialisation of Preiszeitreihe + """ + assert_serialization_roundtrip(preiszeitreihe) From ded668e9a9356a97d251a3a53f5729774ec39a41 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 11:39:33 +0200 Subject: [PATCH 07/12] Testfix --- tests/test_preiszeitreihe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_preiszeitreihe.py b/tests/test_preiszeitreihe.py index 142460571..ca33c28bc 100644 --- a/tests/test_preiszeitreihe.py +++ b/tests/test_preiszeitreihe.py @@ -13,7 +13,7 @@ class TestPreiszeitreihe: preiszeitreihe_id="1-2-3", bezeichnung="Bezeichnung", preistyp=Preistyp.GESAMTPREIS_BRUTTO, - preiszeitreihenwerte=[Preiszeitreihenwert()], + werte=[Preiszeitreihenwert()], ) ), ], From 2517460d6371b5ffd9f1f4137c8f250ac64528e2 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 11:55:53 +0200 Subject: [PATCH 08/12] Added BO DynamischePreiszeitreihe --- src/bo4e/__init__.py | 2 ++ src/bo4e/bo/dynamischepreiszeitreihe.py | 40 +++++++++++++++++++++++++ src/bo4e/enum/botyp.py | 1 + tests/test_dynamischepreiszeitreihe.py | 24 +++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 src/bo4e/bo/dynamischepreiszeitreihe.py create mode 100644 tests/test_dynamischepreiszeitreihe.py diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index 0ea681415..987f65378 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -40,6 +40,7 @@ "ComTyp", "Dienstleistung", "Dienstleistungstyp", + "DynamischePreiszeitreihe", "EMobilitaetsart", "EinheitsPreisposition", "Energieherkunft", @@ -214,6 +215,7 @@ from .bo.ausschreibung import Ausschreibung from .bo.bilanzierung import Bilanzierung from .bo.buendelvertrag import Buendelvertrag +from .bo.dynamischepreiszeitreihe import DynamischePreiszeitreihe from .bo.energiemenge import Energiemenge from .bo.fremdkosten import Fremdkosten from .bo.geraet import Geraet diff --git a/src/bo4e/bo/dynamischepreiszeitreihe.py b/src/bo4e/bo/dynamischepreiszeitreihe.py new file mode 100644 index 000000000..5adb74de0 --- /dev/null +++ b/src/bo4e/bo/dynamischepreiszeitreihe.py @@ -0,0 +1,40 @@ +""" +Contains DynamischePreiszeitreihe class +""" + +from typing import TYPE_CHECKING, Annotated, Literal, Optional + +from pydantic import Field + +from bo4e import Geschaeftsobjekt +from ..enum.botyp import BoTyp +from ..utils import postprocess_docstring + +if TYPE_CHECKING: + from .marktlokation import Marktlokation + from .zaehler import Zaehler + from ..com.preiszeitreihe import Preiszeitreihe + + +@postprocess_docstring +class DynamischePreiszeitreihe(Geschaeftsobjekt): + """ + Abbildung einer dynamischen Preiszeitreihe. + + .. raw:: html + + + + .. HINT:: + `DynamischePreiszeitreihe JSON Schema `_ + + """ + + typ: Annotated[Literal[BoTyp.DYNAMISCHE_PREISZEITREIHE], Field(alias="_typ")] = BoTyp.DYNAMISCHE_PREISZEITREIHE + + marktlokation: Optional["Marktlokation"] = None + """Marktlokation der dynamischen Preiszeitreihe""" + zaehler: Optional["Zaehler"] = None + """Zaehler der dynamischen Preiszeitreihe""" + preiszeitreihen: list["Preiszeitreihe"] | None = None + """Werte der Preiszeitreihe""" diff --git a/src/bo4e/enum/botyp.py b/src/bo4e/enum/botyp.py index 796274b3f..f457cc5e7 100644 --- a/src/bo4e/enum/botyp.py +++ b/src/bo4e/enum/botyp.py @@ -15,6 +15,7 @@ class BoTyp(StrEnum): AUSSCHREIBUNG = "AUSSCHREIBUNG" BILANZIERUNG = "BILANZIERUNG" BUENDELVERTRAG = "BUENDELVERTRAG" + DYNAMISCHE_PREISZEITREIHE = "DYNAMISCHE_PREISZEITREIHE" ENERGIEMENGE = "ENERGIEMENGE" FREMDKOSTEN = "FREMDKOSTEN" GERAET = "GERAET" diff --git a/tests/test_dynamischepreiszeitreihe.py b/tests/test_dynamischepreiszeitreihe.py new file mode 100644 index 000000000..dce8c5207 --- /dev/null +++ b/tests/test_dynamischepreiszeitreihe.py @@ -0,0 +1,24 @@ +import pytest + +from bo4e import DynamischePreiszeitreihe, Marktlokation, Preiszeitreihe, Zaehler +from tests.serialization_helper import assert_serialization_roundtrip + + +class TestPreiszeitreihe: + @pytest.mark.parametrize( + "dynamische_preiszeitreihe", + [ + pytest.param( + DynamischePreiszeitreihe( + marktlokation=Marktlokation(), + zaehler=Zaehler(), + preiszeitreihen=[Preiszeitreihe()], + ) + ), + ], + ) + def test_serialization_roundtrip(self, dynamische_preiszeitreihe: DynamischePreiszeitreihe) -> None: + """ + Test de-/serialisation of Preiszeitreihe + """ + assert_serialization_roundtrip(dynamische_preiszeitreihe) From 6fc2b5777c7f839f2486b9b269014ac4ea22655b Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 11:59:30 +0200 Subject: [PATCH 09/12] Fix Linting --- src/bo4e/bo/dynamischepreiszeitreihe.py | 2 +- ...ischepreiszeitreihe.py => test_dynamische_preiszeitreihe.py} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tests/{test_dynamischepreiszeitreihe.py => test_dynamische_preiszeitreihe.py} (100%) diff --git a/src/bo4e/bo/dynamischepreiszeitreihe.py b/src/bo4e/bo/dynamischepreiszeitreihe.py index 5adb74de0..bd7f964b9 100644 --- a/src/bo4e/bo/dynamischepreiszeitreihe.py +++ b/src/bo4e/bo/dynamischepreiszeitreihe.py @@ -11,9 +11,9 @@ from ..utils import postprocess_docstring if TYPE_CHECKING: + from ..com.preiszeitreihe import Preiszeitreihe from .marktlokation import Marktlokation from .zaehler import Zaehler - from ..com.preiszeitreihe import Preiszeitreihe @postprocess_docstring diff --git a/tests/test_dynamischepreiszeitreihe.py b/tests/test_dynamische_preiszeitreihe.py similarity index 100% rename from tests/test_dynamischepreiszeitreihe.py rename to tests/test_dynamische_preiszeitreihe.py From 461b3deb462e81bde7fbfe60ce69487ae300e74b Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 12:01:22 +0200 Subject: [PATCH 10/12] Fix Linting --- src/bo4e/bo/dynamischepreiszeitreihe.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bo4e/bo/dynamischepreiszeitreihe.py b/src/bo4e/bo/dynamischepreiszeitreihe.py index bd7f964b9..5e10fd0d6 100644 --- a/src/bo4e/bo/dynamischepreiszeitreihe.py +++ b/src/bo4e/bo/dynamischepreiszeitreihe.py @@ -7,6 +7,7 @@ from pydantic import Field from bo4e import Geschaeftsobjekt + from ..enum.botyp import BoTyp from ..utils import postprocess_docstring From b28530cfef6804149534802ea6ad62b0310f609a Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 12:05:23 +0200 Subject: [PATCH 11/12] Fix import --- src/bo4e/bo/dynamischepreiszeitreihe.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/bo4e/bo/dynamischepreiszeitreihe.py b/src/bo4e/bo/dynamischepreiszeitreihe.py index 5e10fd0d6..bd2132e07 100644 --- a/src/bo4e/bo/dynamischepreiszeitreihe.py +++ b/src/bo4e/bo/dynamischepreiszeitreihe.py @@ -6,10 +6,9 @@ from pydantic import Field -from bo4e import Geschaeftsobjekt - from ..enum.botyp import BoTyp from ..utils import postprocess_docstring +from .geschaeftsobjekt import Geschaeftsobjekt if TYPE_CHECKING: from ..com.preiszeitreihe import Preiszeitreihe From b5e10f38a2eac082c11e5803d8ae329881b7d687 Mon Sep 17 00:00:00 2001 From: Simon Blank Date: Wed, 9 Sep 2026 12:09:02 +0200 Subject: [PATCH 12/12] Fix BOTyp --- src/bo4e/bo/dynamischepreiszeitreihe.py | 2 +- src/bo4e/enum/botyp.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bo4e/bo/dynamischepreiszeitreihe.py b/src/bo4e/bo/dynamischepreiszeitreihe.py index bd2132e07..a91a66c33 100644 --- a/src/bo4e/bo/dynamischepreiszeitreihe.py +++ b/src/bo4e/bo/dynamischepreiszeitreihe.py @@ -30,7 +30,7 @@ class DynamischePreiszeitreihe(Geschaeftsobjekt): """ - typ: Annotated[Literal[BoTyp.DYNAMISCHE_PREISZEITREIHE], Field(alias="_typ")] = BoTyp.DYNAMISCHE_PREISZEITREIHE + typ: Annotated[Literal[BoTyp.DYNAMISCHEPREISZEITREIHE], Field(alias="_typ")] = BoTyp.DYNAMISCHEPREISZEITREIHE marktlokation: Optional["Marktlokation"] = None """Marktlokation der dynamischen Preiszeitreihe""" diff --git a/src/bo4e/enum/botyp.py b/src/bo4e/enum/botyp.py index f457cc5e7..47c048383 100644 --- a/src/bo4e/enum/botyp.py +++ b/src/bo4e/enum/botyp.py @@ -15,7 +15,7 @@ class BoTyp(StrEnum): AUSSCHREIBUNG = "AUSSCHREIBUNG" BILANZIERUNG = "BILANZIERUNG" BUENDELVERTRAG = "BUENDELVERTRAG" - DYNAMISCHE_PREISZEITREIHE = "DYNAMISCHE_PREISZEITREIHE" + DYNAMISCHEPREISZEITREIHE = "DYNAMISCHEPREISZEITREIHE" ENERGIEMENGE = "ENERGIEMENGE" FREMDKOSTEN = "FREMDKOSTEN" GERAET = "GERAET"