mirror of
https://github.com/Eledio/superfaktura-client.git
synced 2025-11-01 00:18:25 +01:00
bank_account: BankAccount
This commit is contained in:
61
superfaktura/bank_account.py
Normal file
61
superfaktura/bank_account.py
Normal 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())
|
||||||
Reference in New Issue
Block a user