No description
Find a file
TheMockTv 9794632ae4 Alles unter ravokk - und ein Deinstallieren laesst nichts liegen
Seine Ansagen
  "gibt es noch das popup install ordner auswaehlen, das stimmt ja nicht"
  "wie soll das rechnungstool und steuertool wissen wo es ist, das muss in
   ravokk liegen und dann zusammen, sonst kommt das eine nicht an das andere
   ran - die sind doch nur ueber die gemeinsame sqlite verbunden und mit api"
  "es gibt ravokk als main verzeichnis, da liegt config und sqlite drin, und
   dann gibt es den ordner rechnungstool und steuertool"
  "ravokk ist meine firma und die programme gehoeren zu der firma"
  "du solltest die auch mal deinstallieren und neu installieren ... dass der
   ordner dann leer ist und sauber - will keine tools die unsauber sind"

Die Struktur
  %LOCALAPPDATA%/ravokk/
      config.json, journal.sqlite3, Nummernbuch, berichte/   <- Daten
      Rechnungstool/                                          <- Programm
      Steuerrechnungstool/                                    <- Programm

  Die Daten liegen NEBEN dem Programm, nicht darin. Nur dadurch koennen
  beide Forderungen gleichzeitig gelten: der Programmordner wird beim
  Deinstallieren restlos geleert, und die Belege bleiben zehn Jahre stehen
  (§ 147 AO).

Kein Ordner-Dialog mehr beim ersten Start
  gemeinsam.standard_ordner() nennt den festen Ort, beide Programme legen
  ihn selbst an. Gefragt wird nur noch, wer ihn ausdruecklich verschieben
  will (Menue -> Gemeinsamer Ordner) - etwa auf ein Netzlaufwerk.

  Der Knopf hiess "Install-Ordner auswaehlen..." und der Text riet zum
  "Ordner, in dem die Programme liegen". Beides war falsch und seit dem
  Installer erst recht: die beiden liegen in getrennten Unterordnern, und
  ein Deinstallieren haette das Nummernbuch mitgenommen.

⚠ Dabei gefunden: das Journal lag im TEMP-Ordner
  Der Merkzettel der installierten Fassung zeigte auf
  %TEMP%/abnahme_bst/Daten - haengengeblieben aus einem Abnahmelauf vom
  03.09. Windows raeumt den Temp-Ordner automatisch auf; das Journal waere
  ohne Vorwarnung verschwunden. ablage.py verwirft einen solchen Merkzettel
  jetzt, statt ihm zu folgen.

Uninstaller
  Er raeumt jetzt auch, was der UPDATER angelegt hat - jede geladene Fassung
  und installiert.json. Die kannte der Installer nicht; mit jeder Fassung
  waere eine EXE mehr liegen geblieben. Gemessen vorher: zwei EXEs und der
  halbe Datenordner.

pruef_installation.py
  Installiert wirklich, legt eine Datei an wie der Updater es taete,
  deinstalliert und sieht nach: Programmordner leer, Daten unangetastet.
  Vorhandene Daten werden vorher gesichert und danach zurueckgelegt - ein
  Pruefstand fasst niemandem seine Buchhaltung an.

pruef_gemeinsam_automatisch.py
  Prueft, dass beide Programme denselben Ordner nennen und dass findet, was
  das andere eintraegt - ohne dass jemand einen Pfad eingegeben hat.

Symbol
  Das Windows-Symbol ist jetzt eine helle Kachel mit runden Ecken und dem
  Zeichen darauf, in allen Groessen von 16 bis 256 - "so wie das rustdesk,
  nur halt alle ecken in der rundung". Ein freigestelltes Logo ging auf
  einem dunklen Desktop unter. Die zweite, aufgehellte ICO ist damit
  ueberfluessig; das aufgehellte Logo IM Programm (Kopfzeile, Wasserzeichen)
  bleibt unveraendert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
2026-09-07 10:43:09 +02:00
assets Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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 Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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 Darstellung waehlbar: hell, dunkel oder wie Windows 2026-09-07 00:34:16 +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_PREISVORSCHLAG.md Aufgabe festgehalten: Preisvorschlag beim Rechnungschreiben 2026-09-07 00:06:25 +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 Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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 Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +02:00
Diagnose.spec Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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 Layout: die Formularseite nimmt nur, was sie braucht 2026-09-06 23:41:24 +02:00
gemeinsam.py Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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 Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +02:00
korrektur.py Popups gehen mittig ueber dem Programmfenster auf 2026-09-07 00:52:58 +02:00
menueleiste.py Darstellung waehlbar: hell, dunkel oder wie Windows 2026-09-07 00:34:16 +02:00
ordnerwahl.py Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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_darstellung.py Popups gehen mittig ueber dem Programmfenster auf 2026-09-07 00:52:58 +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_gemeinsam_automatisch.py Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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_installation.py Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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 Popups gehen mittig ueber dem Programmfenster auf 2026-09-07 00:52:58 +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_spaltenbreiten.py Layout: die Formularseite nimmt nur, was sie braucht 2026-09-06 23:41:24 +02:00
pruef_start_exe.py Popups gehen mittig ueber dem Programmfenster auf 2026-09-07 00:52:58 +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 Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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 Popups gehen mittig ueber dem Programmfenster auf 2026-09-07 00:52:58 +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 Darstellung waehlbar: hell, dunkel oder wie Windows 2026-09-07 00:34:16 +02:00
wasserzeichen.py Alles unter ravokk - und ein Deinstallieren laesst nichts liegen 2026-09-07 10:43:09 +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)