bank_account: BankAccount

This commit is contained in:
Richard Kubíček
2025-01-16 13:05:54 +01:00
parent ef264c7bf3
commit c07a56b229

View File

@@ -0,0 +1,61 @@
from dataclasses import dataclass, asdict
from typing import Optional
from superfaktura.superfaktura_api import SuperFakturaAPI
class NoDefaultBankAccountException(Exception):
pass
@dataclass
class BankAccountModel:
account: Optional[str]
bank_code: Optional[str]
bank_name: Optional[str]
default: Optional[int]
iban: Optional[str]
show: Optional[int]
swift: Optional[str]
id: Optional[int]
def as_dict(self) -> dict:
data = asdict(self)
for key in list(data.keys()):
if data[key] is None:
del data[key]
return data
@staticmethod
def from_dict(data: dict) -> "BankAccountModel":
return BankAccountModel(
**{
k: v
for k, v in data.items()
if k in BankAccountModel.__dataclass_fields__
}
)
class BankAccount(SuperFakturaAPI):
def __init__(self):
super().__init__()
def list(self) -> dict:
url = "bank_accounts/index"
return self.get(url)
def default(self) -> Optional[BankAccountModel]:
accounts = self.list()["BankAccounts"]
for account in accounts:
if account["BankAccount"]["default"]:
return BankAccountModel.from_dict(account["BankAccount"])
raise NoDefaultBankAccountException("No default bank account found")
if __name__ == "__main__":
bank = BankAccount()
from pprint import pprint
pprint(bank.list())
pprint(bank.default())