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
|
#!/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()
|
if "Sheet" in wb.sheetnames:
|
||||||
|
wb.remove(wb["Sheet"])
|
||||||
|
|
||||||
ws1 = wb.active
|
sheet_name = f"KW{week:02d}"
|
||||||
ws1.title = "Transaktionen"
|
|
||||||
|
|
||||||
ws1.append([
|
# Vorhandenes Blatt ersetzen
|
||||||
"Datum",
|
if sheet_name in wb.sheetnames:
|
||||||
"Betrag",
|
wb.remove(wb[sheet_name])
|
||||||
"Kategorie",
|
|
||||||
"Name",
|
|
||||||
"Verwendungszweck"
|
|
||||||
])
|
|
||||||
|
|
||||||
for t in categorized_transactions:
|
ws = wb.create_sheet(sheet_name)
|
||||||
ws1.append([
|
|
||||||
t["date"],
|
|
||||||
t["amount"],
|
|
||||||
t["category"],
|
|
||||||
t["applicant_name"],
|
|
||||||
t["purpose"]
|
|
||||||
])
|
|
||||||
|
|
||||||
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",
|
"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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue