mirror of
https://github.com/elisiariocouto/leggen.git
synced 2025-12-14 05:02:22 +00:00
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
import click
|
|
|
|
from leggen.main import cli
|
|
from leggen.utils.network import get
|
|
from leggen.utils.text import info, print_table
|
|
|
|
|
|
def print_transactions(
|
|
ctx: click.Context, account_info: dict, account_transactions: dict
|
|
):
|
|
info(f"Bank: {account_info['institution_id']}")
|
|
info(f"IBAN: {account_info.get('iban', 'N/A')}")
|
|
all_transactions = []
|
|
for transaction in account_transactions.get("booked", []):
|
|
transaction["TYPE"] = "booked"
|
|
all_transactions.append(transaction)
|
|
|
|
for transaction in account_transactions.get("pending", []):
|
|
transaction["TYPE"] = "pending"
|
|
all_transactions.append(transaction)
|
|
|
|
print_table(all_transactions)
|
|
|
|
|
|
@cli.command()
|
|
@click.option("-a", "--account", type=str, help="Account ID")
|
|
@click.pass_context
|
|
def transactions(ctx: click.Context, account: str):
|
|
"""
|
|
List transactions
|
|
|
|
By default, this command lists all transactions for all accounts.
|
|
|
|
If the --account option is used, it will only list transactions for that account.
|
|
"""
|
|
if account:
|
|
account_info = get(ctx, f"/accounts/{account}")
|
|
account_transactions = get(ctx, f"/accounts/{account}/transactions/").get(
|
|
"transactions", []
|
|
)
|
|
print_transactions(ctx, account_info, account_transactions)
|
|
else:
|
|
res = get(ctx, "/requisitions/")
|
|
accounts = set()
|
|
for r in res["results"]:
|
|
accounts.update(r.get("accounts", []))
|
|
for account in accounts:
|
|
account_details = get(ctx, f"/accounts/{account}")
|
|
account_transactions = get(ctx, f"/accounts/{account}/transactions/").get(
|
|
"transactions", []
|
|
)
|
|
print_transactions(ctx, account_details, account_transactions)
|