Source code for bo4e.bo.angebot

"""
Contains Angebot class and corresponding marshmallow schema for de-/serialization
"""

from datetime import datetime

# pylint: disable=too-few-public-methods, too-many-instance-attributes
# pylint: disable=no-name-in-module
from typing import Optional

from pydantic import conlist, constr

from bo4e.bo.ansprechpartner import Ansprechpartner
from bo4e.bo.geschaeftsobjekt import Geschaeftsobjekt
from bo4e.bo.geschaeftspartner import Geschaeftspartner
from bo4e.com.angebotsvariante import Angebotsvariante
from bo4e.enum.botyp import BoTyp
from bo4e.enum.sparte import Sparte


[docs]class Angebot(Geschaeftsobjekt): """ Mit diesem BO kann ein Versorgungsangebot zur Strom- oder Gasversorgung oder die Teilnahme an einer Ausschreibung übertragen werden. Es können verschiedene Varianten enthalten sein (z.B. ein- und mehrjährige Laufzeit). Innerhalb jeder Variante können Teile enthalten sein, die jeweils für eine oder mehrere Marktlokationen erstellt werden. .. raw:: html <object data="../_static/images/bo4e/bo/Angebot.svg" type="image/svg+xml"></object> .. HINT:: `Angebot JSON Schema <https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/Hochfrequenz/BO4E-python/main/json_schemas/bo/Angebot.json>`_ """ bo_typ: BoTyp = BoTyp.ANGEBOT # required attributes #: Eindeutige Nummer des Angebotes angebotsnummer: constr(strict=True, regex=r"^\d+$") # type: ignore[valid-type] #: Erstellungsdatum des Angebots angebotsdatum: datetime #: Sparte, für die das Angebot abgegeben wird (Strom/Gas) sparte: Sparte #: Ersteller des Angebots angebotsgeber: Geschaeftspartner #: Empfänger des Angebots angebotsnehmer: Geschaeftspartner varianten: conlist(Angebotsvariante, min_items=1) # type: ignore[valid-type] """ Eine oder mehrere Varianten des Angebots mit den Angebotsteilen; Ein Angebot besteht mindestens aus einer Variante.""" # optional attributes anfragereferenz: Optional[str] = None """ Referenz auf eine Anfrage oder Ausschreibung; Kann dem Empfänger des Angebotes bei Zuordnung des Angebotes zur Anfrage bzw. Ausschreibung helfen.""" #: Bis zu diesem Zeitpunkt (Tag/Uhrzeit) inklusive gilt das Angebot bindefrist: Optional[datetime] = None #: Person, die als Angebotsnehmer das Angebot angenommen hat unterzeichner_angebotsnehmer: Optional[Ansprechpartner] = None #: Person, die als Angebotsgeber das Angebots ausgestellt hat unterzeichner_angebotsgeber: Optional[Ansprechpartner] = None