No description
Beide Programme stehen nebeneinander offen. Bisher haette das Journal die neue Rechnung erst beim naechsten Einlesen gesehen. Kein Absuchen des Rechnungsordners und kein Server: nach jeder Rechnung und jedem Storno schaut das Rechnungstool nach, ob das Journal ueberhaupt laeuft - ueber dessen PID, nicht ueber ein Fenster und nicht ueber eine Uhrzeit. Windows beantwortet das genau; PIDs werden wiederverwendet, deshalb wird zusaetzlich der Name der EXE verglichen. Laeuft es, kommt eine Zeile in den Briefkasten. Der Briefkasten IST die gemeinsame SQLite (seine Ansage): zwei Tabellen mehr - "laeuft" (wer ist offen, mit PID und EXE) und "nachrichten". Damit liegt im gemeinsamen Ordner genau EINE Datei. Karteileichen (abgestuerztes Programm) werden beim Nachsehen weggeraeumt, alte Meldungen beim Melden. Ist das Journal zu, passiert nichts - es liest den Ordner beim naechsten Start ohnehin. Die Meldung ist eine Anklopfhilfe, keine Datenquelle. Pruefstand pruef_wache.py (im Steuerjournal, faehrt BEIDE Programme): PID-Pruefung mit toter Nummer und fremdem EXE-Namen, genau eine Datei im Ordner, Meldung nach Rechnung und nach Storno, Einlesen samt Anzeige, Ruhe ohne Meldung, kein Melden an ein geschlossenes Journal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYeAfLtccFrbU3MTj1MMTx |
||
|---|---|---|
| assets | ||
| .gitignore | ||
| app.py | ||
| berechnung.py | ||
| bestand.py | ||
| config.py | ||
| einstellungen.py | ||
| einzelinstanz.py | ||
| gemeinsam.py | ||
| helfer.py | ||
| korrektur.py | ||
| ordnerwahl.py | ||
| pdf_renderer.py | ||
| pruef_dialoge.py | ||
| pruef_kernregeln.py | ||
| pruef_kette.py | ||
| pruef_montage.py | ||
| pruef_nummern.py | ||
| pruef_nummernbuch.py | ||
| pruef_storno.py | ||
| README.md | ||
| Rechnung starten.bat | ||
| storno.py | ||
| theme.py | ||
Rechnungstool Campinghof Bartl
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)