No description
Find a file
TheMockTv 80967de26f Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs
Ersetzt die Excel-Mappe des Campinghofs. Die Rechnungs-PDFs des
Rechnungstools sind die Quelle; SQLite ist nur Cache, Excel nur noch
Import des Altbestands. Bericht fuers Amt als PDF im Briefkopf der
Rechnungen (Firmendaten aus der config.json des Rechnungstools).

- pdf_parser: liest Datum, Nummer, Name, Naechte, Zwischensumme, Satz
- db: Journal + Scan mit Cache (Pfad/mtime/Groesse)
- xlsx_io: Import der alten Tabelle, vereinheitlicht Rechnungsnummern
- bericht_pdf: Monats- und Jahresbericht (reportlab)
- GUI: Monatsreiter, Suche, Anhaken + Papierkorb, Kennzahlen-Leiste

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 19:15:44 +02:00
.gitignore Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
app.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
Beherbergungssteuer starten.bat Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
bericht_pdf.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
db.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
firma.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
gui_dialoge.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
gui_monat.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
modell.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
pdf_parser.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
README.md Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00
xlsx_io.py Beherbergungssteuer: Steuerjournal aus den Rechnungs-PDFs 2026-07-12 19:15:44 +02:00

Beherbergungssteuer Campinghof Bartl

Ersetzt die Excel-Mappe Beherbergungsteuer.xlsx.

Quelle der Wahrheit sind die Rechnungs-PDFs aus dem Rechnungstool. Das Programm liest den Rechnungs-Ordner ein, führt daraus das Steuerjournal und schreibt auf Knopfdruck die Excel-Mappe fürs Amt.

Starten

  • Doppelklick auf Beherbergungssteuer starten.bat
  • oder im Terminal: python app.py

Bedienung

  1. Rechnungs-Ordner… → den Ordner wählen, in dem das Rechnungstool die PDFs ablegt (Standard: Dokumente\Campinghof Rechnungen). Danach wird sofort eingelesen; bei jedem Start passiert das automatisch.
  2. Rechnungen einlesen (oder F5) holt neue Rechnungen nach. Bereits gelesene PDFs werden übersprungen (Vergleich über Pfad, Änderungszeit und Größe) das geht auch bei tausend Rechnungen schnell.
  3. Monats-Reiter zeigen die Buchungen mit Summenzeile, unten rechts steht die Jahressumme.
  4. PDF fürs Amt schreibt den Monatsbericht des offenen Reiters als PDF im Campinghof-Layout (gleicher Briefkopf wie die Rechnungen) nach berichte/: Tabelle aller Rechnungen, Summenblock mit der Steuer, Unterschriftszeile. Über das Menü gibt es zusätzlich den Jahresbericht. Gedruckt wird aus dem PDF-Programm heraus.

Eine Zeile per Doppelklick bearbeiten, mit Entf aus dem Journal löschen (die PDF bleibt liegen und wird beim nächsten Einlesen wieder gefunden). Barzahlungen ohne PDF gehen über Neue Buchung.

Der Briefkopf des Berichts (Firma, Logo, Bankzeile) wird aus der config.json des Rechnungstools gelesen also nur an einer Stelle gepflegt.

Was aus der PDF gelesen wird

Spalte Herkunft in der Rechnung
Datum Rechnungsdatum:
Rechnung Rechnungsnummer: (z.B. 2026-238)
Nachname erste Zeile unter Rechnung an:
Übernachtungen Zeitraum: 3 Nächte (ersatzweise An-/Abreise)
Gezahlt Zwischensumme: das ist die Basis der Steuer
Steuer zzgl. Beherbergungssteuer (5 %):

Weicht der in der PDF ausgewiesene Steuerbetrag von der eigenen Rechnung ab, steht das als Warnung in beherbergungssteuer.log.

Excel einlesen

Datei → Excel-Tabelle einlesen… zieht die bisherige Beherbergungsteuer.xlsx ins Journal sowohl den Altbestand aus der Zeit vor dem Rechnungstool als auch jede spätere Fassung, die noch in Excel gepflegt wurde. Zeilen ohne PDF sind in der Tabelle grau dargestellt. Rechnungsnummern werden dabei vereinheitlicht (001, 13, 2026-172026-013), sonst entstünden doppelte Buchungen.

Dateien

Datei Zweck
app.py Fenster, Menü, Aktionen
gui_monat.py ein Monatsblatt (Tabelle + Summenzeile)
gui_dialoge.py Buchung von Hand anlegen/bearbeiten
pdf_parser.py Rechnungs-PDF → Buchung
bericht_pdf.py Monats-/Jahresbericht fürs Amt (reportlab)
firma.py Briefkopf aus der config.json des Rechnungstools
db.py Journal (SQLite) + PDF-Scan mit Cache
xlsx_io.py Excel-Import
modell.py Datenmodell + Steuerrechnung (die einzige Rechenstelle)
journal.sqlite3 die Daten (wird beim 1. Start angelegt)
berichte/ die erzeugten Amts-PDFs

Voraussetzungen

Python 3.10+, pypdf, openpyxl und reportlab (pip install pypdf openpyxl reportlab).