rechnungstool/AUFGABE_RECHTSSICHER_BILDER_VORSCHAU.md
TheMockTv ca9ac212cf Amt-Blatt raus, Bedienung ueber die API, Erststart fragt nach zwei Wegen
Das zweite Blatt "fuer das Amt" trug DIESELBE Rechnungsnummer, aber einen
anderen Gesamtbetrag. Mehrere Blaetter zum selben Umsatz mit verschiedenen
Endbetraegen sehen aus, als werde ueber verschiedene Umsaetze abgerechnet -
bei einer Pruefung ein Problem. Ersatzlos entfallen; was die Stadt braucht,
rechnet das Steuerjournal aus den Kenndaten der PDF. Mit dem Blatt fielen
_AmtMarke, gesamtrechnung_betont und der doppelte Renderlauf weg.

Die API kann das Fenster jetzt BEDIENEN - mit Schluessel wie bei einem SSH-Key:
32 Byte Zufall in api_schluessel.txt im gemeinsamen Ordner, den nur das
Steuerjournal und der Betreiber lesen. Ohne gueltigen Schluessel kein Zutritt
(compare_digest). ping und schau_nach bleiben schluessellos, sonst kann ein
aelteres Journal nicht mehr anklopfen. Was einen BELEG schreibt, geht nur im
Testlauf - eine Fernbedienung, die echte Rechnungen ausstellt, hat in einer
Buchhaltung nichts zu suchen. api.py liegt wie immer in beiden Programmen.

Der Erststart fragte nach "der zuletzt vergebenen Nummer" - das holt niemanden
ab, der bei 0 anfaengt. Jetzt zwei Wege: bei 0 anfangen ODER die eigene
Zaehlung weiterfuehren. Unter das schon Vergebene kommt keiner der beiden.

pruef_nummernsperre bediente den Dialog nur halb: nach einer abgelehnten Zahl
bleibt er offen (so soll er), niemand drueckte "Spaeter" - das Programm wartete
in wait_window() ewig. Das war schon vor diesem Umbau so.

Neu: pruef_api.py. Alle 14 Pruefstaende gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
2026-09-05 18:24:59 +02:00

5.5 KiB
Raw Permalink Blame History

Rechnungstool: rechtssicher, gestaltbar, mit Vorschau

Stand 05.09.2026 — in Arbeit. Programm C:\claude\rechnungstool, Repo git.pcore.de/TheMockTv/rechnungstool (Pre-Tag pre/rechtssicher-bilder).

Seine Ansage: „wir bauen den rechnungs ersteller so um das der nun richtig rechtlich sicher ist und die kopf und fuss zeile mit eigenen bildern import" — und im Lauf des Umbaus dazu: „das die firmen das designen können", „eine vorschau butten wäre gut … sonst haben die den storno auf wand", „das mit rechnung an das amt kommt raus, das ist nicht § conform".

1. Bilder und Farbe gehören der Firma (fertig)

Bis jetzt war das Blatt auf EINEN Betrieb gebaut: Camping-Grün fest im Code, das Logo ein Pfad in der config.

  • bilder.py (neu): ein gewähltes Bild wird in den Ordner bilder/ neben die config.json kopiert, gemerkt wird nur bilder/logo.png. Der Grund: ein Pfad auf den Desktop ist tot, sobald dort jemand aufräumt — und das fällt erst beim Drucken auf. Gleicher Name, anderes Bild → -2, nie überschreiben.
  • Kopfbild (Logo, oben links) und Fußbild (schmaler Streifen unten) sind austauschbar. Das Layout bleibt, wie es war.
  • Firmenname, Anschrift, Bank, Steuernummer bleiben gezeichnet. Kein Bild kann sie ersetzen — die Steuernummer ist Pflichtangabe (§ 14 Abs. 4 Nr. 2 UStG), und was in einem Bild steht, kann niemand prüfen. (Ein Haken „Angaben stehen im Bild" war gebaut und ist auf seine Ansage hin wieder rausgeflogen.)
  • Farbe der Rechnung: EIN Wert (design.akzent), Hex-Feld und Farbwähler in den Einstellungen. Die helle Fläche im Tabellenkopf wird daraus gemischt — niemand muss zwei Farben aufeinander abstimmen. Eine unlesbare Farbe fällt still auf die Vorgabe zurück, statt das Schreiben der Rechnung zu verhindern.

Prüfstand: pruef_bilder.py.

2. Vorschau-Knopf (fertig)

Seine Begründung: „sonst haben die den storno auf wand" — eine ausgestellte Rechnung lässt sich nur noch über Storno oder Berichtigung geradeziehen.

Der Knopf zeigt das fertige Blatt, bevor es eine Rechnung wird:

  • verbraucht keine Rechnungsnummer, trägt nichts ins Nummernbuch,
  • landet nicht im Rechnungsordner (Temp-Ordner),
  • trägt quer über jeder Seite „VORSCHAU – keine Rechnung",
  • prüft keine Pflichtfelder — man will ja gerade sehen, was noch fehlt.

Prüfstand: pruef_vorschau.py (u. a.: die echte Rechnung danach trägt die Marke NICHT).

3. Das Blatt „für das Amt" ist entfallen

Bis 05.09.2026 hing an jeder Rechnung mit Beherbergungssteuer ein zweites Blatt mit derselben Rechnungsnummer, aber ohne die Steuer — also mit einem anderen Gesamtbetrag.

Seine Ansage: „das mit rechnung an das amt kommt raus … wenn so was in den büchern von einem unternehmen drin ist, dann ist das ein genickbruch, wenn der prüfer kommt". Vorgeschichte: Bartl wollte es so, weil es sonst seine Steuerberaterin durcheinanderbringe; der Widerspruch stand schon damals.

Nachgeschlagen: mehrere Blätter zum selben Umsatz mit gleicher Nummer sind für sich noch kein § 14c-Fall — aber unterschiedliche Endbeträge erwecken den Eindruck, es werde über verschiedene Umsätze abgerechnet. Genau das fällt bei einer Prüfung auf.

Was an die Stelle tritt: nichts im Rechnungstool. Das Steuerjournal liest die Kenndaten (/Subject) der PDF und rechnet die Bemessungsgrundlage selbst aus; ans Amt geht eine Summenanmeldung, keine Rechnungskopie mit Gastnamen. Vorher geprüft: kein Programm liest die zweite Seite — pruef_montage.py belegt weiter, dass das Journal die Datei einliest.

Mit dem Blatt entfielen: _AmtMarke, der Parameter gesamtrechnung_betont und der doppelte Renderlauf (der existierte nur, um zu wissen, auf welcher Seite das Amt-Blatt beginnt). Der Renderer ist dadurch deutlich kürzer.

4. Prüfstände nehmen keine Maus mehr

Sein Fund mitten im Lauf: „pack doch die maus nicht immer auf das programm, weil ich kann dir sonst nichts schreiben".

  • config.TESTLAUF steht an einer Stelle (--test / CAMPINGHOF_TEST=1).
  • Hauptfenster und jeder Dialog werden im Prüflauf durchsichtig gemacht und aus dem Bild geschoben, und grab_set fällt weg.
  • ⚠️ Nicht withdraw(): damit baut ein Fenster seine Dialoge nicht mehr richtig auf — vier Prüfstände wurden davon rot und hätten eine Bedienung geprüft, die es so nicht gibt.
  • pruefsteuerung.py (neu): Meldungen wandern ins Protokoll, Ja/Nein-Fragen in einen Fahrplan (antwortet("Hausnummer", True)). Eine unangemeldete Frage bricht den Lauf ab — stillschweigend „ja" zu sagen würde genau die Fälle übergehen, wegen denen es die Prüfung gibt.

Offen

  • Betriebsart abfragen (Campingplatz / Handwerker / Unternehmen) — sein Zielbau: „nicht jeder braucht das so wie der camping typ". Handwerker und Unternehmen brauchen freie Rechnungszeilen statt des festen Katalogs; das ist ein neuer Eingabemodus, kein Schalter.
  • § 14-Lücke Leistungszeitpunkt: ohne An-/Abreise (z. B. nur Gasfüllung) steht heute kein Leistungsdatum auf dem Blatt — § 14 Abs. 4 Nr. 6 UStG.
  • Zahlungsziel einstellbar.
  • E-Rechnung (ZUGFeRD): Pflicht ab 01.01.2028 für B2B — trifft die Montage-Rechnung. Bibliothek factur-x ist geprüft und kann XML erzeugen (Profil EN 16931), prüfen (XSD + Schematron) und einbetten (PDF/A-3).
  • GoBD: PDFs nach dem Schreiben schreibgeschützt; Aufbewahrung seit BEG IV 8 statt 10 Jahre (§ 147 Abs. 3 AO).