Files
superfaktura-client/superfaktura/bank_account.py
Richard Kubíček 2eedefec83 Revert "Auxiliary commit to revert individual files from 73da343c610420f68792306d5fcdd46f1c86edb8"
This reverts commit e925cf182acf7c18cfd27351e72baed328d43e2c.
2025-03-04 13:06:22 +01:00

112 lines
3.3 KiB
Python

"""
Bank Account Module.
This module provides classes and functions for working with bank accounts in the SuperFaktura API.
It allows for retrieving, creating, updating, and deleting bank accounts.
Classes:
- BankAccountModel: Dataclass representing a bank account.
- BankAccount: Class for interacting with bank accounts.
Exceptions:
- NoDefaultBankAccountException: Exception for when no default bank account is found.
Functions:
- (none)
Usage:
>>> import superfaktura.bank_account
>>> # Create an instance of BankAccount
>>> bank = superfaktura.bank_account.BankAccount()
>>> # Retrieve a list of bank accounts
>>> accounts = bank.list()
>>> # Get the default bank account
>>> default_account = bank.default()
>>> # Create or update a bank account
>>> data = {"account": "1234567890", "bank_code": "1234567890", "default": True}
>>> bank.post(data)
"""
from dataclasses import dataclass, asdict
from typing import Optional
from superfaktura.superfaktura_api import SuperFakturaAPI
class NoDefaultBankAccountException(Exception):
"""Exception for when no default bank account is found."""
@dataclass
class BankAccountModel:
"""Dataclass representing a bank account."""
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:
"""Returns a dictionary representation of the BankAccountModel."""
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":
"""Creates a BankAccountModel from a dictionary."""
return BankAccountModel(
**{k: v for k, v in data.items() if k in BankAccountModel.__annotations__}
)
class BankAccount(SuperFakturaAPI):
"""
Bank Account Class.
This class provides methods for interacting with bank accounts in the SuperFaktura API.
It allows for retrieving, creating, updating, and deleting bank accounts.
Methods:
- list: Retrieves a list of bank accounts.
- default: Retrieves the default bank account.
- post: Creates or updates a bank account.
Usage:
>>> bank = BankAccount()
>>> accounts = bank.list()
>>> default_account = bank.default()
>>> data = {"account": "1234567890", "bank_code": "1234567890", "default": True}
>>> bank.post(data)
"""
def __init__(self):
super().__init__()
def list(self) -> dict:
"""Retrieves a list of bank accounts."""
url = "bank_accounts/index"
return self.get(url)
def default(self) -> Optional[BankAccountModel]:
"""Retrieves the default bank account."""
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())