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>
This commit is contained in:
commit
80967de26f
12 changed files with 1908 additions and 0 deletions
77
README.md
Normal file
77
README.md
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# 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-17` → `2026-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`).
|
||||
Loading…
Add table
Add a link
Reference in a new issue