Mini-API, Push vom Rechnungstool, Proforma wird nicht gebucht

Das Journal macht beim Start einen winzigen Server auf 127.0.0.1 auf und traegt
Port und PID in die gemeinsame SQLite ein (Tabelle "laeuft"). Das Rechnungstool
sieht daran, dass jemand zuhoert, und klopft nach jeder Rechnung an: "schau in
die sqlite". Dann wird sofort nachgelesen, statt bis zum naechsten Durchgang zu
warten. Faellt die API aus, findet die Wache die Meldung trotzdem - ein os.stat
auf die eine Datei, alle zwei Sekunden und sofort beim Zurueckklicken.

Die Proforma-Rechnung wird NICHT gebucht: keine_buchung() kennt jetzt
Berichtigung und Proforma. Der Scan fragt wieder keine_buchung() - seit dem
Berichtigungs-Umbau tat er das nicht mehr, und die Proforma waere als Buchung
im Journal gelandet (der Pruefstand hat es gefunden).

Pruefstand pruef_wache.py: 31 Pruefungen ueber BEIDE Programme - Anmeldung mit
PID, ping ("hallo, bin noch da"), genau eine Datei im gemeinsamen Ordner, Push
nach Rechnung und nach Storno, Einlesen samt Anzeige, Rueckfallebene ohne API,
tote PID wird weggeraeumt, kein Melden an ein geschlossenes Journal.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYeAfLtccFrbU3MTj1MMTx
This commit is contained in:
TheMockTv 2026-09-03 21:24:12 +02:00
parent 31bb0c600b
commit dbe95e1ec6
6 changed files with 319 additions and 31 deletions

13
db.py
View file

@ -242,7 +242,7 @@ class Journal:
Gibt (neu, aktualisiert, uebersprungen, fehler) zurück.
"""
from pdf_parser import (parse_pdf, berichtigung_daten,
from pdf_parser import (parse_pdf, berichtigung_daten, keine_buchung,
ParserFehler) # lokal: hält modell/db leichtgewichtig
neu = akt = uebersprungen = 0
@ -266,11 +266,16 @@ class Journal:
# Frueher haette es die echte Buchung ueberschrieben. Es bucht
# nichts - aber die berichtigten Angaben zum Gast gehoeren
# uebernommen, sonst steht im Amtsbericht weiter der falsche Name.
berichtigt = berichtigung_daten(pfad)
if berichtigt is not None:
# Blaetter, die nichts abrechnen: das Berichtigungsblatt und die
# Proforma. keine_buchung() kennt beide - hier NICHT direkt
# berichtigung_daten() fragen, sonst rutscht die Proforma durch
# und steht als Buchung im Journal (gefunden am 03.09.2026).
if keine_buchung(pfad):
self.con.execute("DELETE FROM buchungen WHERE pdf_pfad=?",
(os.path.abspath(pfad),))
berichtigungen.append(berichtigt)
berichtigt = berichtigung_daten(pfad)
if berichtigt is not None:
berichtigungen.append(berichtigt)
continue
try:
b = parse_pdf(pfad, standard_satz)