diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py
index cfd217cc1..987f65378 100644
--- a/src/bo4e/__init__.py
+++ b/src/bo4e/__init__.py
@@ -40,6 +40,7 @@
"ComTyp",
"Dienstleistung",
"Dienstleistungstyp",
+ "DynamischePreiszeitreihe",
"EMobilitaetsart",
"EinheitsPreisposition",
"Energieherkunft",
@@ -117,6 +118,8 @@
"Preisstaffel",
"Preisstatus",
"Preistyp",
+ "Preiszeitreihe",
+ "Preiszeitreihenwert",
"Profilart",
"Profiltyp",
"Profilverfahren",
@@ -212,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
@@ -277,6 +281,8 @@
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
from .com.regionspreis import Regionspreis
diff --git a/src/bo4e/bo/dynamischepreiszeitreihe.py b/src/bo4e/bo/dynamischepreiszeitreihe.py
new file mode 100644
index 000000000..a91a66c33
--- /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 ..enum.botyp import BoTyp
+from ..utils import postprocess_docstring
+from .geschaeftsobjekt import Geschaeftsobjekt
+
+if TYPE_CHECKING:
+ from ..com.preiszeitreihe import Preiszeitreihe
+ from .marktlokation import Marktlokation
+ from .zaehler import Zaehler
+
+
+@postprocess_docstring
+class DynamischePreiszeitreihe(Geschaeftsobjekt):
+ """
+ Abbildung einer dynamischen Preiszeitreihe.
+
+ .. raw:: html
+
+
+
+ .. HINT::
+ `DynamischePreiszeitreihe JSON Schema `_
+
+ """
+
+ typ: Annotated[Literal[BoTyp.DYNAMISCHEPREISZEITREIHE], Field(alias="_typ")] = BoTyp.DYNAMISCHEPREISZEITREIHE
+
+ 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/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/com/preiszeitreihenwert.py b/src/bo4e/com/preiszeitreihenwert.py
new file mode 100644
index 000000000..583ac07b9
--- /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 .menge import Menge
+ from .preis import Preis
+ from .zeitraum import Zeitraum
+
+
+@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/botyp.py b/src/bo4e/enum/botyp.py
index 796274b3f..47c048383 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"
+ DYNAMISCHEPREISZEITREIHE = "DYNAMISCHEPREISZEITREIHE"
ENERGIEMENGE = "ENERGIEMENGE"
FREMDKOSTEN = "FREMDKOSTEN"
GERAET = "GERAET"
diff --git a/src/bo4e/enum/comtyp.py b/src/bo4e/enum/comtyp.py
index 29abed106..c611a30cd 100644
--- a/src/bo4e/enum/comtyp.py
+++ b/src/bo4e/enum/comtyp.py
@@ -41,6 +41,8 @@ class ComTyp(StrEnum):
PREISGARANTIE = "PREISGARANTIE"
PREISPOSITION = "PREISPOSITION"
PREISSTAFFEL = "PREISSTAFFEL"
+ PREISZEITREIHE = "PREISZEITREIHE"
+ PREISZEITREIHENWERT = "PREISZEITREIHENWERT"
RECHNUNGSPOSITION = "RECHNUNGSPOSITION"
REGIONSOPERATION = "REGIONSOPERATION"
REGIONSPREIS = "REGIONSPREIS"
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_dynamische_preiszeitreihe.py b/tests/test_dynamische_preiszeitreihe.py
new file mode 100644
index 000000000..dce8c5207
--- /dev/null
+++ b/tests/test_dynamische_preiszeitreihe.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)
diff --git a/tests/test_preiszeitreihe.py b/tests/test_preiszeitreihe.py
new file mode 100644
index 000000000..ca33c28bc
--- /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,
+ werte=[Preiszeitreihenwert()],
+ )
+ ),
+ ],
+ )
+ def test_serialization_roundtrip(self, preiszeitreihe: Preiszeitreihe) -> None:
+ """
+ Test de-/serialisation of Preiszeitreihe
+ """
+ assert_serialization_roundtrip(preiszeitreihe)
diff --git a/tests/test_preiszeitreihenwert.py b/tests/test_preiszeitreihenwert.py
new file mode 100644
index 000000000..14f3e5d43
--- /dev/null
+++ b/tests/test_preiszeitreihenwert.py
@@ -0,0 +1,24 @@
+import pytest
+
+from bo4e import Menge, Preis, Preiszeitreihenwert, 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)