No description
Find a file
TheMockTv 8a391b8dfa Release-Anhaenge: der Name entscheidet - und ein Pruefstand dafuer
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
2026-09-06 20:43:15 +02:00
assets Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
.gitignore Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
api.py Amt-Blatt raus, Bedienung ueber die API, Erststart fragt nach zwei Wegen 2026-09-05 18:24:59 +02:00
app.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
AUFGABE_AUSSENDIENST_ARBEITSPROTOKOLL.md Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
AUFGABE_BEWEISKETTE_PRUEFBAR.md Erprobungshinweis: erst wenn das Fenster steht, und nach vorn geholt 2026-09-06 16:24:43 +02:00
AUFGABE_KUNDENSTAMM_UND_WEB.md Amt-Blatt: die letzten Reste raus - das Programm behauptet keine zweite Seite mehr 2026-09-06 15:33:18 +02:00
AUFGABE_ONLINE_API_MYSQL.md Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
AUFGABE_RECHTSSICHER_BILDER_VORSCHAU.md Amt-Blatt raus, Bedienung ueber die API, Erststart fragt nach zwei Wegen 2026-09-05 18:24:59 +02:00
bauen.py Release-Anhaenge: der Name entscheidet - und ein Pruefstand dafuer 2026-09-06 20:43:15 +02:00
berechnung.py Rechnungstool Campinghof - Rechnungen als PDF statt Excel-Vorlage 2026-07-12 19:18:38 +02:00
bestand.py Der Rechnungszaehler kann nicht mehr hinter das Vergebene zurueck 2026-09-03 22:43:23 +02:00
bilder.py Bilder und Farbe gehoeren der Firma, dazu ein Vorschau-Knopf 2026-09-05 17:35:37 +02:00
config.py Das Programm heisst Rechnungstool, nicht "Rechnungstool - Campinghof Bartl" 2026-09-05 19:38:06 +02:00
Diagnose.spec Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
einstellungen.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
einzelinstanz.py Zwei getrennte Knoepfe und app.py in Module aufgeteilt 2026-09-02 19:41:00 +02:00
flaeche.py Kaesten verschiebbar wie bei OPNsense: Knopf, schieben, speichern 2026-09-05 19:53:42 +02:00
gemeinsam.py Freigabe vor dem Beleg - mit Zeitstempel im gemeinsamen Nummernbuch 2026-09-06 15:42:55 +02:00
helfer.py Zwei getrennte Knoepfe und app.py in Module aufgeteilt 2026-09-02 19:41:00 +02:00
hinweis.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
icons.py Kaesten verschiebbar wie bei OPNsense: Knopf, schieben, speichern 2026-09-05 19:53:42 +02:00
Installer.iss Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
korrektur.py Jedes Feld, in das man tippen kann, sieht gleich aus 2026-09-05 19:44:12 +02:00
ordnerwahl.py Eigene Meldungsfenster, aktiver Reiter hervorgehoben, Pruefschalter als Funktion 2026-09-05 19:17:13 +02:00
pdf_renderer.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
pruef_angebot.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_api.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_bilder.py Amt-Blatt raus, Bedienung ueber die API, Erststart fragt nach zwei Wegen 2026-09-05 18:24:59 +02:00
pruef_dialoge.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_doppelte_leistung.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_flaeche.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_freigabe.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_hinweis.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
pruef_kernregeln.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_kette.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_montage.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_nummern.py Die Kette steht auf dem Storno-Blatt - kein gemerkter Zustand noetig 2026-09-02 20:42:31 +02:00
pruef_nummernbuch.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_nummernsperre.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_nur_storno.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_release.py Release-Anhaenge: der Name entscheidet - und ein Pruefstand dafuer 2026-09-06 20:43:15 +02:00
pruef_selbstbezug.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
pruef_start_exe.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
pruef_storno.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_updater.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
pruef_vorschau.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruefsteuerung.py Amt-Blatt raus, Bedienung ueber die API, Erststart fragt nach zwei Wegen 2026-09-05 18:24:59 +02:00
README.md Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
Rechnung starten.bat Rechnungstool Campinghof - Rechnungen als PDF statt Excel-Vorlage 2026-07-12 19:18:38 +02:00
Rechnungstool.spec Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
reiter.py Reiter selbst gebaut - clam liess den ruhenden nicht dunkel werden 2026-09-05 19:21:20 +02:00
storno.py Funde der drei Agenten: zwei kaputte Dialoge, haengende Flags, scharfe Pruefstaende 2026-09-02 19:57:31 +02:00
theme.py Erprobungshinweis: erst wenn das Fenster steht, und nach vorn geholt 2026-09-06 16:24:43 +02:00
updater.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
Updater.spec Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
version.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00
wasserzeichen.py Logo in der Statuszeile, Bau an einer Stelle, Startprobe fuer die EXE 2026-09-06 20:34:59 +02:00

Rechnungstool Campinghof Bartl

Umbenennung, 06.09.2026

Die Repositories heissen jetzt:

bisher jetzt
beherbergungssteuer Steuerrechnungstool - https://git.pcore.de/TheMockTv/Steuerrechnungstool
rechnungstool unveraendert - 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 origin sollte trotzdem umgestellt werden:

git remote set-url origin https://git.pcore.de/TheMockTv/Steuerrechnungstool.git

Fehler 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

  1. Kunde (Name/Anschrift) und An-/Abreise eintragen – die Nächte werden automatisch berechnet.
  2. Bei den passenden Leistungen die Anzahl (Tage/Menge) eingeben; bei Personengebühren zusätzlich die Personen.
  3. Summen (inkl. Steuer-Aufschlüsselung) erscheinen live unten.
  4. 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)