mirror of
https://github.com/Eledio/superfaktura-client.git
synced 2025-11-01 08:28:25 +01:00
62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
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())
|