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