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