From 63e6beb711e098a14010d375eb216753e945753a Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Fri, 27 Dec 2024 15:58:38 +0100 Subject: [PATCH] Styling --- crypto_tax/__init__.py | 2 +- crypto_tax/__main__.py | 2 +- crypto_tax/output_excel.py | 39 +++++++++++++++++++++++++++++++------- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/crypto_tax/__init__.py b/crypto_tax/__init__.py index d301b48..47a661c 100644 --- a/crypto_tax/__init__.py +++ b/crypto_tax/__init__.py @@ -47,7 +47,7 @@ def compute_fifo(transfers: list) -> TaxReport: if True: prices_bought_for[MPC] = deque() # TODO: - prices_bought_for[MPC].append(BoughtAndNotYetSold(AssetAmount(MPC, Decimal(40)), datetime.datetime(2024, 4,1,1,1,1,1))) + prices_bought_for[MPC].append(BoughtAndNotYetSold(AssetAmount(MPC, Decimal(80)), datetime.datetime(2024, 4,1,1,1,1,1))) prices_bought_for[USDT] = deque() prices_bought_for[USDT].append(BoughtAndNotYetSold(AssetAmount(USDT, Decimal(20)), datetime.datetime(2020, 1,1,1,1,1,1))) diff --git a/crypto_tax/__main__.py b/crypto_tax/__main__.py index cf62ba7..e909e7b 100644 --- a/crypto_tax/__main__.py +++ b/crypto_tax/__main__.py @@ -33,7 +33,7 @@ def main(): TRANSFERS = [] TRANSFERS += list(KRAKEN_CLIENT._get_double_registers()) - TRANSFERS += list(KUCOIN_CLIENT._get_double_registers()) + #TRANSFERS += list(KUCOIN_CLIENT._get_double_registers()) tax_report = compute_fifo(TRANSFERS) logger.info('-'*80) diff --git a/crypto_tax/output_excel.py b/crypto_tax/output_excel.py index c24a63d..ffe3aed 100644 --- a/crypto_tax/output_excel.py +++ b/crypto_tax/output_excel.py @@ -14,6 +14,7 @@ from .data import TaxReport, BoughtAndSold, BoughtAndNotYetSold from pathlib import Path import openpyxl +import openpyxl.styles TAX_TYPES: dict[fin_defs.Asset, str] = { fin_defs.DKK: 'Fiat', @@ -33,10 +34,19 @@ def mult_a(a, b): return 'Unknown' return a * b +BOLD_FONT = openpyxl.styles.Font(bold=True) +ALIGN_CENTER = openpyxl.styles.Alignment(horizontal="center", vertical="center") + +def add_headers(sheet, column_headers): + sheet.append(column_headers) + for row in sheet['A1:J1']: + for cell in row: + cell.font = BOLD_FONT + def write_current_assets(sheet, tax_report: TaxReport): column_headers = ['Værdipapir', 'Mængde', 'Estimeret værdi (DKK)', 'Beskatningstype'] - sheet.append(column_headers) + add_headers(sheet, column_headers) for asset, positions in tax_report.current_assets.items(): total_amount: Decimal = sum((p.amount.amount for p in positions), start=Decimal(0)) exchange_rate_asset_to_dkk = tax_report.exchange_rate_at_time(asset, fin_defs.DKK, NOW) @@ -50,8 +60,9 @@ def write_current_assets(sheet, tax_report: TaxReport): sheet.append(row) del asset, positions, row, total_amount - def write_ledger_sheet(sheet, tax_report: TaxReport): + assets = list({e.amount.asset for e in tax_report.ledger_entries}) + column_headers = [ 'Tidspunkt (UTC)', 'Type', @@ -59,22 +70,36 @@ def write_ledger_sheet(sheet, tax_report: TaxReport): 'Mængde', 'Balance', 'Kontoudbyder', - ] - sheet.append(column_headers) + '' + ] + [a.raw_short_name() for a in assets] + + add_headers(sheet, column_headers) row_idx = 2 + prev_entry_time = None + start_of_same_entry = 2 for ledger_entry in tax_report.ledger_entries: + entry_time = ledger_entry.time.replace(tzinfo=None,microsecond=0,fold=0) row = [ - ledger_entry.time.replace(tzinfo=None), + entry_time, ledger_entry.type, ledger_entry.amount.asset.raw_short_name(), ledger_entry.amount.amount, ledger_entry.balance.amount, ledger_entry.account_provider, - ] + '', + ] + [(ledger_entry.balance.amount if ledger_entry.balance.asset == a else '') for a in assets] sheet.append(row) row_idx+= 1 + + if entry_time != prev_entry_time: + # TODO: + sheet.merge_cells(f'A{start_of_same_entry}:A{row_idx-1}') + sheet[f'A{start_of_same_entry}'].alignment = ALIGN_CENTER + start_of_same_entry = row_idx + prev_entry_time = entry_time del ledger_entry, row + def write_fifo_sheet(sheet, tax_report: TaxReport): # TODO: Account for transfers column_headers = [ @@ -82,7 +107,7 @@ def write_fifo_sheet(sheet, tax_report: TaxReport): 'Salgsværdi (DKK)', 'Salgsdato (UTC)', 'Profit (DKK)', 'Tab (DKK)', 'Beskatningstype', ] - sheet.append(column_headers) + add_headers(sheet, column_headers) row_idx = 2 for fifo_entry in tax_report.bought_and_sold_for: asset = fifo_entry.amount.asset