Compare commits
2 commits
d0735c540e
...
2328a1c1db
| Author | SHA1 | Date | |
|---|---|---|---|
| 2328a1c1db | |||
| 298a120e27 |
1 changed files with 78 additions and 29 deletions
|
|
@ -1,11 +1,11 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
#1
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
import json
|
||||
import csv
|
||||
import sys
|
||||
from openpyxl import Workbook
|
||||
from openpyxl import Workbook, load_workbook
|
||||
|
||||
# --------------------------------------------------
|
||||
# Kalenderwoche bestimmen
|
||||
|
|
@ -49,12 +49,12 @@ source_json = (
|
|||
categorized_csv_dir = year_dir / "categorized_csv"
|
||||
categorized_json_dir = year_dir / "categorized_json"
|
||||
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_json_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 = (
|
||||
categorized_csv_dir
|
||||
|
|
@ -72,8 +72,8 @@ summary_file = (
|
|||
)
|
||||
|
||||
excel_file = (
|
||||
excel_dir
|
||||
/ f"transactions_{year}_KW{week:02d}.xlsx"
|
||||
jahresauswertung_dir
|
||||
/ 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()
|
||||
if "Sheet" in wb.sheetnames:
|
||||
wb.remove(wb["Sheet"])
|
||||
|
||||
ws1 = wb.active
|
||||
ws1.title = "Transaktionen"
|
||||
sheet_name = f"KW{week:02d}"
|
||||
|
||||
ws1.append([
|
||||
"Datum",
|
||||
"Betrag",
|
||||
"Kategorie",
|
||||
"Name",
|
||||
"Verwendungszweck"
|
||||
])
|
||||
# Vorhandenes Blatt ersetzen
|
||||
if sheet_name in wb.sheetnames:
|
||||
wb.remove(wb[sheet_name])
|
||||
|
||||
for t in categorized_transactions:
|
||||
ws1.append([
|
||||
t["date"],
|
||||
t["amount"],
|
||||
t["category"],
|
||||
t["applicant_name"],
|
||||
t["purpose"]
|
||||
])
|
||||
ws = wb.create_sheet(sheet_name)
|
||||
|
||||
ws2 = wb.create_sheet("Kategorien")
|
||||
# Kennzahlen
|
||||
|
||||
ws2.append([
|
||||
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",
|
||||
"Einnahmen",
|
||||
"Ausgaben",
|
||||
|
|
@ -247,15 +263,48 @@ ws2.append([
|
|||
])
|
||||
|
||||
for category, values in sorted(category_totals.items()):
|
||||
ws2.append([
|
||||
|
||||
ws.append([
|
||||
category,
|
||||
values["income"],
|
||||
values["expenses"],
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue