Compare commits

..

2 commits

View file

@ -1,11 +1,11 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
#1
from pathlib import Path from pathlib import Path
from datetime import datetime from datetime import datetime
import json import json
import csv import csv
import sys import sys
from openpyxl import Workbook from openpyxl import Workbook, load_workbook
# -------------------------------------------------- # --------------------------------------------------
# Kalenderwoche bestimmen # Kalenderwoche bestimmen
@ -49,12 +49,12 @@ source_json = (
categorized_csv_dir = year_dir / "categorized_csv" categorized_csv_dir = year_dir / "categorized_csv"
categorized_json_dir = year_dir / "categorized_json" categorized_json_dir = year_dir / "categorized_json"
summary_dir = year_dir / "summary" summary_dir = year_dir / "summary"
excel_dir = year_dir / "excel" jahresauswertung_dir = year_dir / "jahresauswertung"
categorized_csv_dir.mkdir(parents=True, exist_ok=True) categorized_csv_dir.mkdir(parents=True, exist_ok=True)
categorized_json_dir.mkdir(parents=True, exist_ok=True) categorized_json_dir.mkdir(parents=True, exist_ok=True)
summary_dir.mkdir(parents=True, exist_ok=True) summary_dir.mkdir(parents=True, exist_ok=True)
excel_dir.mkdir(parents=True, exist_ok=True) jahresauswertung_dir.mkdir(parents=True, exist_ok=True)
csv_file = ( csv_file = (
categorized_csv_dir categorized_csv_dir
@ -72,8 +72,8 @@ summary_file = (
) )
excel_file = ( excel_file = (
excel_dir jahresauswertung_dir
/ f"transactions_{year}_KW{week:02d}.xlsx" / f"Kontobewegungen_{year}.xlsx"
) )
# -------------------------------------------------- # --------------------------------------------------
@ -211,35 +211,51 @@ with open(json_file, "w", encoding="utf-8") as outfile:
) )
# -------------------------------------------------- # --------------------------------------------------
# Excel exportieren # Jahres-Excel aktualisieren
# -------------------------------------------------- # --------------------------------------------------
if excel_file.exists():
wb = load_workbook(excel_file)
else:
wb = Workbook() wb = Workbook()
ws1 = wb.active if "Sheet" in wb.sheetnames:
ws1.title = "Transaktionen" wb.remove(wb["Sheet"])
ws1.append([ sheet_name = f"KW{week:02d}"
"Datum",
"Betrag",
"Kategorie",
"Name",
"Verwendungszweck"
])
for t in categorized_transactions: # Vorhandenes Blatt ersetzen
ws1.append([ if sheet_name in wb.sheetnames:
t["date"], wb.remove(wb[sheet_name])
t["amount"],
t["category"],
t["applicant_name"],
t["purpose"]
])
ws2 = wb.create_sheet("Kategorien") ws = wb.create_sheet(sheet_name)
ws2.append([ # Kennzahlen
total_income = sum(
values["income"]
for values in category_totals.values()
)
total_expenses = sum(
values["expenses"]
for values in category_totals.values()
)
total_saldo = sum(
values["saldo"]
for values in category_totals.values()
)
ws.append(["Kennzahl", "Wert"])
ws.append(["Transaktionen", len(categorized_transactions)])
ws.append(["Einnahmen", total_income])
ws.append(["Ausgaben", total_expenses])
ws.append(["Saldo", total_saldo])
ws.append([])
ws.append([
"Kategorie", "Kategorie",
"Einnahmen", "Einnahmen",
"Ausgaben", "Ausgaben",
@ -247,15 +263,48 @@ ws2.append([
]) ])
for category, values in sorted(category_totals.items()): for category, values in sorted(category_totals.items()):
ws2.append([
ws.append([
category, category,
values["income"], values["income"],
values["expenses"], values["expenses"],
values["saldo"] values["saldo"]
]) ])
wb.save(excel_file) # --------------------------------------------------
# Übersicht aktualisieren
# --------------------------------------------------
if "Übersicht" in wb.sheetnames:
wb.remove(wb["Übersicht"])
overview = wb.create_sheet("Übersicht", 0)
overview.append([
"KW",
"Einnahmen",
"Ausgaben",
"Saldo"
])
for sheet in sorted(
[s for s in wb.sheetnames if s.startswith("KW")]
):
ws_kw = wb[sheet]
income = ws_kw["B3"].value
expenses = ws_kw["B4"].value
saldo = ws_kw["B5"].value
overview.append([
sheet,
income,
expenses,
saldo
])
wb.save(excel_file)
# -------------------------------------------------- # --------------------------------------------------
# Kategorien-Summen exportieren # Kategorien-Summen exportieren