Der Fehler Das Release 1.7.0 war angelegt, die EXE hing dran - und der Updater haette trotzdem nie etwas gefunden. Der Anhang hiess "Rechnungstool-1.7.0.exe", gesucht wird aber "Rechnungstool.exe" (version.EXE_NAME). Die Nummer kommt erst beim Ablegen dazu. Das Tueckische: nichts schlaegt fehl. Der Updater meldet freundlich "Aktuell. Kein Update noetig." und startet die alte Fassung. Ein Update, das stumm nie ankommt, ist schlimmer als eines, das laut scheitert. Zweiter Fund derselben Runde: die Pruefsummen standen nur im Release-TEXT. Der Updater liest sie aus einer angehaengten Datei <exe>.sha256. Ohne die prueft er nur die Groesse - und eine verfaelschte Datei hat genau die richtige Groesse. bauen.py legt jetzt release/ an Genau die vier Dateien, die ans Release gehoeren, unter genau den Namen, unter denen der Updater sie sucht. Damit haengt niemand mehr etwas Falsches an. pruef_release.py Prueft gegen das echte Repository: gibt es zur Nummer aus version.py ein Release, heisst der Anhang exakt wie EXE_NAME, haengt die Pruefsumme dran, ist es die der zuletzt gebauten Datei - und findet passendes_release() es auch. Ohne Netz wird uebersprungen statt rot gemeldet. muster/ ist raus Der Gast darin ist erfunden, der Betrieb nicht: IBAN, Steuernummer und die private Rufnummer des Auftraggebers stehen im Briefkopf. In ein oeffentliches Repository gehoert das nicht. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax |
||
|---|---|---|
| assets | ||
| .gitignore | ||
| api.py | ||
| app.py | ||
| AUFGABE_AUSSENDIENST_ARBEITSPROTOKOLL.md | ||
| AUFGABE_BEWEISKETTE_PRUEFBAR.md | ||
| AUFGABE_KUNDENSTAMM_UND_WEB.md | ||
| AUFGABE_ONLINE_API_MYSQL.md | ||
| AUFGABE_RECHTSSICHER_BILDER_VORSCHAU.md | ||
| bauen.py | ||
| berechnung.py | ||
| bestand.py | ||
| bilder.py | ||
| config.py | ||
| Diagnose.spec | ||
| einstellungen.py | ||
| einzelinstanz.py | ||
| flaeche.py | ||
| gemeinsam.py | ||
| helfer.py | ||
| hinweis.py | ||
| icons.py | ||
| Installer.iss | ||
| korrektur.py | ||
| ordnerwahl.py | ||
| pdf_renderer.py | ||
| pruef_angebot.py | ||
| pruef_api.py | ||
| pruef_bilder.py | ||
| pruef_dialoge.py | ||
| pruef_doppelte_leistung.py | ||
| pruef_flaeche.py | ||
| pruef_freigabe.py | ||
| pruef_hinweis.py | ||
| pruef_kernregeln.py | ||
| pruef_kette.py | ||
| pruef_montage.py | ||
| pruef_nummern.py | ||
| pruef_nummernbuch.py | ||
| pruef_nummernsperre.py | ||
| pruef_nur_storno.py | ||
| pruef_release.py | ||
| pruef_selbstbezug.py | ||
| pruef_start_exe.py | ||
| pruef_storno.py | ||
| pruef_updater.py | ||
| pruef_vorschau.py | ||
| pruefsteuerung.py | ||
| README.md | ||
| Rechnung starten.bat | ||
| Rechnungstool.spec | ||
| reiter.py | ||
| storno.py | ||
| theme.py | ||
| updater.py | ||
| Updater.spec | ||
| version.py | ||
| wasserzeichen.py | ||
Rechnungstool Campinghof Bartl
Umbenennung, 06.09.2026
Die Repositories heissen jetzt:
bisher jetzt beherbergungssteuerSteuerrechnungstool- https://git.pcore.de/TheMockTv/Steuerrechnungstoolrechnungstoolunveraendert - https://git.pcore.de/TheMockTv/rechnungstool Grund: „Beherbergungssteuer“ beschrieb nur noch einen Teil dessen, was das Programm tut. Alte Links leitet Forgejo weiter, bestehende Klone laufen weiter - das
originsollte trotzdem umgestellt werden:git remote set-url origin https://git.pcore.de/TheMockTv/Steuerrechnungstool.gitFehler und Wünsche bitte als Issue im jeweiligen Repository melden - die Adresse steht auch im Programm unter Hilfe → Info und im Hinweis beim Start.
⚠️ Der lokale Ordner heißt weiterhin
C:\claude\beherbergungssteuer. Der Pfad steht fest verdrahtet in mehreren Prüfständen und in den Spec-Dateien - das Umbenennen ist ein eigener Schritt.
Desktop-Programm (Python/Tkinter), das die alte Excel-Rechnungsvorlage ersetzt: Kundendaten + Anzahl eingeben → druckfertige PDF-Rechnung im Campinghof-Layout.
Starten
- Doppelklick auf
Rechnung starten.bat - oder im Terminal:
python app.py
Bedienung
- Kunde (Name/Anschrift) und An-/Abreise eintragen – die Nächte werden automatisch berechnet.
- Bei den passenden Leistungen die Anzahl (Tage/Menge) eingeben; bei Personengebühren zusätzlich die Personen.
- Summen (inkl. Steuer-Aufschlüsselung) erscheinen live unten.
- PDF erstellen → die Rechnung landet im Ordner
rechnungen/und öffnet sich zum Drucken.
Die Rechnungsnummer (JJJJ-NNN) zählt nach jedem Erstellen automatisch hoch.
Einstellungen (Menü „Einstellungen")
- Steuersätze & Bettensteuer – ermäßigter/regulärer USt-Satz; Beherbergungssteuer per Checkbox an/aus + Prozentsatz. Bei aktiver Bettensteuer wird sie auf das Netto der Beherbergungs-Positionen aufgeschlagen und eigen ausgewiesen.
- Leistungskatalog / Preise – Bezeichnung, USt-Satz und Brutto-Preis je Position.
- Firmendaten & Texte – Kopf, Bankverbindung, Fußzeile, Danktexte.
- Rechnungsnummer – Jahr und Zähler setzen.
Alle Einstellungen werden in config.json gespeichert (neben den Programmdateien).
Berechnung (wie in der Excel-Vorlage)
- Position-Gesamt =
Anzahl × Einzelpreis(Personengebühren zusätzlich× Personen). - Preise sind brutto; die USt wird herausgerechnet
(7 %:
÷107×7, 19 %:÷119×19). - Optionale Beherbergungssteuer = Satz % auf das Netto der Beherbergungs-Positionen.
Dateien
| Datei | Zweck |
|---|---|
app.py |
GUI (Eingabe + Einstellungen) |
berechnung.py |
Rechenkern (eine Quelle für GUI + PDF) |
pdf_renderer.py |
PDF-Erstellung (reportlab) |
config.py |
Standardwerte + Laden/Speichern der config.json |
config.json |
gespeicherte Einstellungen (wird beim 1. Start angelegt) |
rechnungen/ |
Ausgabeordner für die PDFs |
Voraussetzungen
- Python 3.10+
reportlab(pip install reportlab)tkinter(bei Standard-Windows-Python dabei)