diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index 255977773..fa383351e 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -193,6 +193,7 @@ "Zaehlertyp", "ZaehlertypSpezifikation", "ZusatzAttribut", + "Bankverbindung", "__version__", "__gh_version__", ] @@ -247,6 +248,7 @@ from .com.aufabschlagstaffelproort import AufAbschlagstaffelProOrt from .com.ausschreibungsdetail import Ausschreibungsdetail from .com.ausschreibungslos import Ausschreibungslos +from .com.bankverbindung import Bankverbindung from .com.betrag import Betrag from .com.com import COM from .com.dienstleistung import Dienstleistung diff --git a/src/bo4e/bo/geschaeftspartner.py b/src/bo4e/bo/geschaeftspartner.py index 992bb0650..f2a6d734b 100644 --- a/src/bo4e/bo/geschaeftspartner.py +++ b/src/bo4e/bo/geschaeftspartner.py @@ -8,6 +8,7 @@ from pydantic import Field +from ..com.bankverbindung import Bankverbindung from ..enum.typ import Typ from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt @@ -78,6 +79,10 @@ class Geschaeftspartner(Geschaeftsobjekt): #: Internetseite des Marktpartners website: Optional[str] = None #: Adresse des Geschäftspartners + bankverbindung: Optional[Bankverbindung] = None + #: Bankverbindung des Geschäftspartners + steuernummer: Optional[str] = None + #: Steuernummer des Geschäftspartners adresse: Optional["Adresse"] = None #: Todo: Add optional connection to marktteilnehmer as discussed in workshop #: not clear what is the best solution here - circular import marktteilnehmer? diff --git a/src/bo4e/com/bankverbindung.py b/src/bo4e/com/bankverbindung.py new file mode 100644 index 000000000..9aa47f7af --- /dev/null +++ b/src/bo4e/com/bankverbindung.py @@ -0,0 +1,38 @@ +""" +Contains Bankverbindung class and corresponding marshmallow schema for de-/serialization +""" + +# pylint: disable=too-few-public-methods, too-many-instance-attributes +# pylint: disable=no-name-in-module +from typing import Optional + +from ..utils import postprocess_docstring +from .com import COM + + +@postprocess_docstring +class Bankverbindung(COM): + """ + Eine Komponente zur Abbildung einer einzelner Bankverbindung + + .. raw:: html + + + + .. HINT:: + `Bankverbindung JSON Schema `_ + + """ + + iban: Optional[str] = None + #: International Bank Account Number = IBAN z.B.: DE07 1234 1234 1234 1234 12 + + kontoinhaber: Optional[str] = None + #: Juristische Person welche das Konto hält + + bankkennung: Optional[str] = None + #: Ein eindeutiger Code, wie z.B. BIC (Bank Identifier Code) oder SWIFT-Code, der eine bestimmte Bank bei + #: internationalen Transaktionen identifiziert (z.B. BIC: DEUTDEFF für die Deutsche Bank)." + + bankname: Optional[str] = None + #: Name der bank z.B. Deutsche Bank diff --git a/tests/test_bankverbindung.py b/tests/test_bankverbindung.py new file mode 100644 index 000000000..adb8be1b2 --- /dev/null +++ b/tests/test_bankverbindung.py @@ -0,0 +1,26 @@ +import pytest + +from bo4e import Bankverbindung +from tests.serialization_helper import assert_serialization_roundtrip + + +class TestBankverbindung: + @pytest.mark.parametrize( + "bankverbindung", + [ + pytest.param( + Bankverbindung( + iban="DE07123412341234123412", + kontoinhaber="Jürgen W.", + bankkennung="DEUTDEFF", + bankname="Deutsche Bank", + ), + id="maximal attributes", + ), + ], + ) + def test_serialization_roundtrip(self, bankverbindung: Bankverbindung) -> None: + """ + Test de-/serialisation of Ausschreibungslos + """ + assert_serialization_roundtrip(bankverbindung) diff --git a/tests/test_geschaeftspartner.py b/tests/test_geschaeftspartner.py index 786ad90af..7839e10e3 100644 --- a/tests/test_geschaeftspartner.py +++ b/tests/test_geschaeftspartner.py @@ -3,6 +3,7 @@ from bo4e import ( Adresse, Anrede, + Bankverbindung, Geschaeftspartner, Geschaeftspartnerrolle, Kontaktweg, @@ -27,6 +28,12 @@ class TestGeschaeftspartner: vorname="Hans", nachname="Müller-Schmidt", organisationstyp=Organisationstyp.UNTERNEHMEN, + bankverbindung=Bankverbindung( + iban="DE07123412341285723412", + kontoinhaber="Hans Müller-Schmidt", + bankkennung="DEUTDEFF", + bankname="Deutsche Bank", + ), handelsregisternummer="HRB 254466", amtsgericht="Amtsgericht München", kontaktwege=[Kontaktweg()], @@ -52,6 +59,12 @@ class TestGeschaeftspartner: kontaktwege=[Kontaktweg()], umsatzsteuer_id="AT12345", geschaeftspartnerrollen=[Geschaeftspartnerrolle.DIENSTLEISTER], + bankverbindung=Bankverbindung( + iban="DE07123412341234123412", + kontoinhaber="Jürgen W.", + bankkennung="DEUTDEFF", + bankname="Deutsche Bank", + ), adresse=Adresse( postleitzahl="1014", ort="Wien 1", strasse="Ballhausplatz", hausnummer="2", landescode=Landescode.AT # type: ignore[attr-defined] ),