From 39c87b3121fe2677c5a88043518c682a8d26f9c6 Mon Sep 17 00:00:00 2001 From: Fstei Date: Mon, 9 Sep 2024 11:59:43 +0200 Subject: [PATCH 1/7] Add Bankverbindung --- src/bo4e/__init__.py | 2 ++ src/bo4e/com/bankverbindung.py | 42 ++++++++++++++++++++++++++++++++++ tests/test_bankverbindung.py | 26 +++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 src/bo4e/com/bankverbindung.py create mode 100644 tests/test_bankverbindung.py 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/com/bankverbindung.py b/src/bo4e/com/bankverbindung.py new file mode 100644 index 000000000..2df40e8b0 --- /dev/null +++ b/src/bo4e/com/bankverbindung.py @@ -0,0 +1,42 @@ +""" +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 TYPE_CHECKING, Optional + +from ..utils import postprocess_docstring +from .com import COM + +if TYPE_CHECKING: + from ..enum.preismodell import Preismodell + from ..enum.rechnungslegung import Rechnungslegung + from ..enum.sparte import Sparte + from ..enum.vertragsform import Vertragsform + from .ausschreibungsdetail import Ausschreibungsdetail + from .menge import Menge + from .zeitraum import Zeitraum + + +@postprocess_docstring +class Bankverbindung(COM): + """ + Eine Komponente zur Abbildung einer einzelner Bankverbindung + + .. raw:: html + + + + .. HINT:: + `Bankverbindung JSON Schema `_ + + """ + + iban: Optional[str] = None + + kontoinhaber: Optional[str] = None + + bankkennung: Optional[str] = None + + bankname: Optional[str] = None diff --git a/tests/test_bankverbindung.py b/tests/test_bankverbindung.py new file mode 100644 index 000000000..d8d00e564 --- /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="foo-ban", + kontoinhaber="Jürgen W.", + bankkennung="1234Geiz5678", + bankname="Geiz&Geiziger", + ), + id="maximal attributes", + ), + ], + ) + def test_serialization_roundtrip(self, bankverbindung: Bankverbindung) -> None: + """ + Test de-/serialisation of Ausschreibungslos + """ + assert_serialization_roundtrip(bankverbindung) From fd63324391d063e72cbf6181189d5b6ccbbfdc26 Mon Sep 17 00:00:00 2001 From: Fstei Date: Mon, 9 Sep 2024 13:49:32 +0200 Subject: [PATCH 2/7] ka --- src/bo4e/com/bankverbindung.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/bo4e/com/bankverbindung.py b/src/bo4e/com/bankverbindung.py index 2df40e8b0..134110fce 100644 --- a/src/bo4e/com/bankverbindung.py +++ b/src/bo4e/com/bankverbindung.py @@ -4,20 +4,11 @@ # pylint: disable=too-few-public-methods, too-many-instance-attributes # pylint: disable=no-name-in-module -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..utils import postprocess_docstring from .com import COM -if TYPE_CHECKING: - from ..enum.preismodell import Preismodell - from ..enum.rechnungslegung import Rechnungslegung - from ..enum.sparte import Sparte - from ..enum.vertragsform import Vertragsform - from .ausschreibungsdetail import Ausschreibungsdetail - from .menge import Menge - from .zeitraum import Zeitraum - @postprocess_docstring class Bankverbindung(COM): @@ -34,9 +25,14 @@ class Bankverbindung(COM): """ iban: Optional[str] = None + # International Bank Account Number = IBAN for example: DE07 1234 1234 1234 1234 12 kontoinhaber: Optional[str] = None + # individual or entity in whose name a bank account is registered and who has legal rights over it bankkennung: Optional[str] = None + # A unique code, such as a BIC (Bank Identifier Code) or SWIFT code, that identifies a specific bank in + # international transactions (e.g., BIC: DEUTDEFF for Deutsche Bank) bankname: Optional[str] = None + # name of the bank e.g. Deutsche Bank From cc2f3065fb85e55ec9a2112624f56d6076b47825 Mon Sep 17 00:00:00 2001 From: Fstei Date: Mon, 9 Sep 2024 13:51:07 +0200 Subject: [PATCH 3/7] test --- tests/test_bankverbindung.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_bankverbindung.py b/tests/test_bankverbindung.py index d8d00e564..adb8be1b2 100644 --- a/tests/test_bankverbindung.py +++ b/tests/test_bankverbindung.py @@ -10,10 +10,10 @@ class TestBankverbindung: [ pytest.param( Bankverbindung( - iban="foo-ban", + iban="DE07123412341234123412", kontoinhaber="Jürgen W.", - bankkennung="1234Geiz5678", - bankname="Geiz&Geiziger", + bankkennung="DEUTDEFF", + bankname="Deutsche Bank", ), id="maximal attributes", ), From 648d26fa522e80c690e599930217ccaec57e60ec Mon Sep 17 00:00:00 2001 From: Fstei Date: Mon, 9 Sep 2024 15:09:05 +0200 Subject: [PATCH 4/7] ka --- src/bo4e/com/bankverbindung.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bo4e/com/bankverbindung.py b/src/bo4e/com/bankverbindung.py index 134110fce..9aa47f7af 100644 --- a/src/bo4e/com/bankverbindung.py +++ b/src/bo4e/com/bankverbindung.py @@ -25,14 +25,14 @@ class Bankverbindung(COM): """ iban: Optional[str] = None - # International Bank Account Number = IBAN for example: DE07 1234 1234 1234 1234 12 + #: International Bank Account Number = IBAN z.B.: DE07 1234 1234 1234 1234 12 kontoinhaber: Optional[str] = None - # individual or entity in whose name a bank account is registered and who has legal rights over it + #: Juristische Person welche das Konto hält bankkennung: Optional[str] = None - # A unique code, such as a BIC (Bank Identifier Code) or SWIFT code, that identifies a specific bank in - # international transactions (e.g., BIC: DEUTDEFF for Deutsche Bank) + #: 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 of the bank e.g. Deutsche Bank + #: Name der bank z.B. Deutsche Bank From 5cff34ee195470e8acfe08dd8b2f18bbb4b37443 Mon Sep 17 00:00:00 2001 From: Fstei Date: Mon, 9 Sep 2024 15:11:11 +0200 Subject: [PATCH 5/7] fa1 --- src/bo4e/bo/geschaeftspartner.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/bo4e/bo/geschaeftspartner.py b/src/bo4e/bo/geschaeftspartner.py index 992bb0650..b57dabe7c 100644 --- a/src/bo4e/bo/geschaeftspartner.py +++ b/src/bo4e/bo/geschaeftspartner.py @@ -8,6 +8,7 @@ from pydantic import Field +from .. 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? From 4d33fd6df80dce3f7ecf8e13070e0c1ba118da4d Mon Sep 17 00:00:00 2001 From: Fstei Date: Mon, 9 Sep 2024 15:23:28 +0200 Subject: [PATCH 6/7] fix --- src/bo4e/bo/geschaeftspartner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bo4e/bo/geschaeftspartner.py b/src/bo4e/bo/geschaeftspartner.py index b57dabe7c..f2a6d734b 100644 --- a/src/bo4e/bo/geschaeftspartner.py +++ b/src/bo4e/bo/geschaeftspartner.py @@ -8,7 +8,7 @@ from pydantic import Field -from .. import Bankverbindung +from ..com.bankverbindung import Bankverbindung from ..enum.typ import Typ from ..utils import postprocess_docstring from .geschaeftsobjekt import Geschaeftsobjekt From 9c81f0cb671a577dfe084ca2a12540d98e2e186f Mon Sep 17 00:00:00 2001 From: Fstei Date: Tue, 10 Sep 2024 10:40:08 +0200 Subject: [PATCH 7/7] improve test --- tests/test_geschaeftspartner.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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] ),