Storno fragt zweistufig: neue Rechnung oder schon abgerechnet
Sein Fall: 'der typ hat mit dem alten programm einfach eine neue rechnung gemacht, nun hat der die gleiche rechnung 3-4 mal drin, aber mit anderen nummern'. Die Ueberzaehligen muessen storniert werden - und ihr Storno muss auf die Rechnung verweisen, die BLEIBT, nicht auf eine neue. Nach dem Auswaehlen der Rechnung fragt das Storno jetzt: A - es folgt eine neue Rechnung (der bisherige Weg) B - die Leistung ist schon abgerechnet Zweistufig, weil er es so braucht: 'ich druecke b und ERST DANN kann ich die nummer eingeben ... das ein opa, immer step by step, nicht alles auf einmal, wie bei kindern'. Schritt 1 zeigt nur die Wahl, Schritt 2 das Nummernfeld, mit Zurueck. Geprueft wird nicht nur, OB es die Nummer gibt, sondern auch, ob der INHALT passt (sein Zusatz): anderer Gast = geht nicht, anderer Zeitraum oder Betrag = Nachfrage. Auf dem Blatt steht dann 'Schon abgerechnet: 2026-001' statt 'Berichtigte Rechnung', dazu der Satz, dass die Leistung versehentlich doppelt in Rechnung gestellt wurde und keine weitere Rechnung folgt. Es wird keine Nummer reserviert und kein Vorgang offen gehalten. Pruefstand pruef_doppelte_leistung.py: faehrt das echte zweistufige Fenster, prueft die Inhaltspruefung einzeln und am Ende das Steuerjournal - EIN Aufenthalt (3 Naechte, 39,00) statt zwei. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYeAfLtccFrbU3MTj1MMTx
This commit is contained in:
parent
7692c79269
commit
1107a9bace
3 changed files with 511 additions and 4 deletions
|
|
@ -311,8 +311,11 @@ def _seite_inhalt(story, st, cfg, rechnung, kopf, gesamtrechnung_betont):
|
|||
# ganze Kette auf dem Blatt: alte Nummer -> Storno -> neue Nummer.
|
||||
if kopf.get("korrektur_nummer"):
|
||||
# "Neue Rechnung" war missverstaendlich - man liest es als die Nummer
|
||||
# DIESES Blattes. Gemeint ist die Rechnung, die den Storno ersetzt.
|
||||
info_rows.append(("Berichtigte Rechnung:", kopf["korrektur_nummer"]))
|
||||
# DIESES Blattes. Gemeint ist die Rechnung, die den Storno ersetzt -
|
||||
# oder, bei einer doppelt geschriebenen Leistung, die BLEIBENDE.
|
||||
info_rows.append(
|
||||
("Schon abgerechnet:" if kopf.get("ersatz_vorhanden")
|
||||
else "Berichtigte Rechnung:", kopf["korrektur_nummer"]))
|
||||
elif art == "korrektur" and kopf.get("ersetzt"):
|
||||
info_rows.append(("Ersetzt Rechnung:", kopf.get("ersetzt", "")))
|
||||
elif art == "berichtigung":
|
||||
|
|
@ -479,6 +482,18 @@ def _seite_inhalt(story, st, cfg, rechnung, kopf, gesamtrechnung_betont):
|
|||
if kopf.get("storno_datum"):
|
||||
bezug += f" vom {kopf['storno_datum']}"
|
||||
folgt = kopf.get("korrektur_nummer") or ""
|
||||
if kopf.get("ersatz_vorhanden") and folgt:
|
||||
# Doppelt geschriebene Leistung: es kommt nichts nach, sie ist
|
||||
# bereits abgerechnet. Der Satz muss das sagen - sonst wartet der
|
||||
# Gast auf eine Rechnung, die nie kommt.
|
||||
block.append(Paragraph(
|
||||
f"Diese Stornorechnung hebt die Rechnung {bezug} vollständig auf. "
|
||||
f"Die Leistung wurde versehentlich doppelt in Rechnung gestellt und "
|
||||
f"ist bereits mit der Rechnung {folgt} abgerechnet – es folgt keine "
|
||||
"weitere Rechnung. Bereits gezahlte Beträge werden erstattet oder "
|
||||
"verrechnet.", st["dank"]))
|
||||
story.append(KeepTogether(block))
|
||||
return
|
||||
kette = (f" Die berichtigte Rechnung trägt die Nummer {folgt} "
|
||||
f"(also {kopf.get('storno_zu','')} → {kopf.get('rechnungsnummer','')} "
|
||||
f"→ {folgt}).") if folgt else ""
|
||||
|
|
@ -615,6 +630,7 @@ def _kenndaten(rechnung, kopf):
|
|||
"vorgang": kopf.get("vorgang") or kopf.get("rechnungsnummer", ""),
|
||||
"storno_zu": kopf.get("storno_zu", ""),
|
||||
"korrektur_nummer": kopf.get("korrektur_nummer", ""),
|
||||
"ersatz_vorhanden": bool(kopf.get("ersatz_vorhanden")),
|
||||
"storno_datum": kopf.get("storno_datum", ""),
|
||||
"ersetzt": kopf.get("ersetzt", ""),
|
||||
"storno_nummer": kopf.get("storno_nummer", ""),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue