Files
leggen/leggen/commands/balances.py
2024-02-29 17:15:52 +00:00

48 lines
1.4 KiB
Python

import click
from leggen.main import cli
from leggen.utils.network import get
from leggen.utils.text import datefmt, print_table
@cli.command()
@click.pass_context
def balances(ctx: click.Context):
"""
List balances of all connected accounts
"""
res = get(ctx, "/requisitions/")
accounts = set()
for r in res.get("results", []):
accounts.update(r.get("accounts", []))
all_balances = []
for account in accounts:
account_ballances = get(ctx, f"/accounts/{account}/balances/").get(
"balances", []
)
for balance in account_ballances:
balance_amount = balance["balanceAmount"]
amount = round(float(balance_amount["amount"]), 2)
symbol = (
""
if balance_amount["currency"] == "EUR"
else f" {balance_amount['currency']}"
)
amount_str = f"{amount}{symbol}"
date = (
datefmt(balance.get("lastChangeDateTime"))
if balance.get("lastChangeDateTime")
else ""
)
all_balances.append(
{
"Account": account,
"Amount": amount_str,
"Type": balance["balanceType"],
"Last change at": date,
}
)
print_table(all_balances)