No description
Find a file
TheMockTv fec0e8449c Updater als Starter - die Nummer steht im Dateinamen
Sein Bild (06.09.2026):
  "der updater schaut beim starten erst: ist auf dem git link eine neue version
   mit exe? wenn ja, erst laden, ersetzen und dann starten."
  "einmal pruefen auf vollstaendigkeit."
  "wir werden den namen mit nummer fuehren - wenn er merkt, eh warte mal, die
   heisst anders, dann neu machen"

DER AUFBAU

Der Updater IST der Starter. Er laeuft, BEVOR das Programm laeuft - damit gibt
es das Windows-Problem "laufende EXE laesst sich nicht ersetzen" gar nicht.

Und weil die installierte Datei die Nummer im Namen traegt
(Rechnungstool-1.6.0.exe), wird ueberhaupt nichts ueberschrieben: eine neue
Fassung ist eine neue Datei. Die vorige bleibt liegen und ist damit die
Rueckfallebene, ohne dass jemand eine Sicherung anlegen muesste. Der Updater
sieht am NAMEN, was da ist - er muss keiner Angabe glauben.

version.py: die Nummer an EINER Stelle, im Code, in die EXE kompiliert. Sie
entspricht dem Release-Tag ohne "v". Zusaetzlich fuehrt der Updater ein eigenes
Buch (installiert.json); wer eine Datei umbenennt, verursacht hoechstens einen
ueberfluessigen Download.

BEIM BAUEN AUFGEFALLEN

/releases/latest liefert NICHTS, weil alle Fassungen als Vorabversion
gekennzeichnet sind - Forgejo laesst Vorabversionen dort aus. Der Updater nimmt
deshalb die Liste und sucht selbst die hoechste Nummer. Waere das erst beim
Nutzer aufgefallen, haette der Updater nie ein Update gefunden.

Beide Repositories sind oeffentlich - kein Token noetig. Ein Token in einer
verteilten EXE waere ohnehin keins.

VOLLSTAENDIGKEIT

Geladen wird in einen Zwischenordner. Erst wenn GROESSE und (falls das Release
eine .sha256 anhaengt) PRUEFSUMME stimmen, kommt die Datei in den
Installationsordner. Sonst wird verworfen und die vorhandene Fassung gestartet -
lieber kein Update als ein kaputtes.

PRUEFSTAND

pruef_updater.py prueft vor allem, wann NICHT aktualisiert werden darf: gleiche
Fassung, aeltere im Netz, kein passender Anhang, Entwurf, kein Netz, falsche
Groesse, falsche Pruefsumme. Und den wichtigsten Punkt: eine halbe Datei
erreicht den Installationsordner nie.

Alle 18 Pruefstaende gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
2026-09-06 16:42:35 +02:00
assets Kaesten verschiebbar wie bei OPNsense: Knopf, schieben, speichern 2026-09-05 19:53:42 +02:00
.gitignore Nur eine Instanz: zweiter Start holt das offene Fenster nach vorn 2026-09-02 18:28:58 +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 Erprobungshinweis: erst wenn das Fenster steht, und nach vorn geholt 2026-09-06 16:24:43 +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_RECHTSSICHER_BILDER_VORSCHAU.md Amt-Blatt raus, Bedienung ueber die API, Erststart fragt nach zwei Wegen 2026-09-05 18:24:59 +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
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
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 Amt-Blatt: die letzten Reste raus - das Programm behauptet keine zweite Seite mehr 2026-09-06 15:33:18 +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 Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +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_storno.py Erprobungshinweis beim Start - mit Kenntnisnahme und Signatur unter Info 2026-09-06 15:55:56 +02:00
pruef_updater.py Updater als Starter - die Nummer steht im Dateinamen 2026-09-06 16:42:35 +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
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 Updater als Starter - die Nummer steht im Dateinamen 2026-09-06 16:42:35 +02:00
version.py Updater als Starter - die Nummer steht im Dateinamen 2026-09-06 16:42:35 +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)