mirror of
				https://github.com/Eledio/superfaktura-client.git
				synced 2025-10-31 08:22:32 +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())
 |