Sein Einwand: "du musst die markieren als rechnung und storno oder
berichtigung, und das kannst einfach mit buchstaben machen: r fuer
rechnung, s fuer storno, b fuer berichtigung. am footer kannst eine
erklaerung fuer die buchstaben machen."
Er hat recht - ohne die Marke muss man aus der Begruendung raten, was fuer
ein Beleg die Zeile ueberhaupt ist. Mit dem Buchstaben liest sich die
Kette von selbst:
2026-900 R storniert mit 2026-901
2026-901 S neue Rechnung 2026-902
2026-902 B Neuausstellung
2026-911 S abgerechnet mit 2026-905 (Doppelungsfall)
Unter der Tabelle steht die Legende: "R = Rechnung, S = Stornorechnung,
B = berichtigte Rechnung (Neuausstellung nach einem Storno)". Bewusst
direkt unter die Tabelle und nicht in die Fusszeile - wer eine einzelne
Zeile prueft, hat sie dann vor Augen und muss nicht blaettern.
Dazu "neu abgerechnet mit" auf "abgerechnet mit" gekuerzt: mit dem S
davor ist das "neu" ueberfluessig, und die Zeile bricht nicht mehr um.
Spaltenbreiten neu verteilt (18/18/9/42/Rest/12/18/9/18 mm).
Erklaerungs-PDF um die Art-Spalte ergaenzt. Pruefkette gruen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017bEsoFUk16DfnNA7MjY36H
Auf seine Ansage: "erklaere dem auch das die rechnungs nummer nun fest
ist und nicht mehr aenderbar ist ausser mit dem storno butten".
Nachgesehen, was das Programm wirklich erzwingt, und genau das
aufgeschrieben - vier Sperren:
* eine vergebene Nummer wird nicht wiederverwendet (geprueft gegen die
PDFs im Ordner UND das gemeinsame Nummernbuch); die vorhandene
Rechnung wird nicht ueberschrieben, es wird die naechste freie
angeboten
* der Zaehler kann nicht zurueck, auch nicht ueber die Einstellungen
* beim Storno ist das Nummernfeld gesperrt, dort vergibt nur das
Programm
* keine Nummer auf Vorrat, wenn nichts folgt
Dazu der Hinweis, dass das Gesetz keine LUECKENLOSE Folge verlangt,
sondern eine EINMALIGE (§ 14 Abs. 4 Nr. 4 UStG) - vorwaerts darf es also
springen, zurueck nicht. Das ist genauer als "nicht mehr aenderbar" und
haelt einer Rueckfrage der Steuerberaterin stand.
Blatt hat jetzt vier Seiten; liegt auf dem Desktop und auf M:.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017bEsoFUk16DfnNA7MjY36H
Zwei Ansagen von ihm, beide am selben Blatt:
1. "weil die nummer hast nur auf der storno selber aber nicht am
stornierten nummer um die es geht" - die aufgehobene Rechnung stand
nur als "storniert" da. Jetzt steht dort "storniert mit 2026-901".
Damit ist das Paar in BEIDE Richtungen lesbar, und das zaehlt vor
allem dann, wenn der Storno in einem anderen Monat liegt und auf
diesem Blatt gar nicht auftaucht.
2. "mach eine neue spalte mit grund oder so was" - der Vermerk stand als
zweite Zeile unter der Rechnungsnummer. Jetzt ist es eine eigene
Spalte "Grund" zwischen Rechnung und Name, eine Zeile je Buchung.
Feste Breiten neu verteilt (20/20/34 mm + Rest fuer den Namen), damit
nichts umbricht.
Dafuer neu: modell.aufhebungen() gibt {id der Rechnung: Storno-Buchung}
statt nur der ids - die Anzeige will auch sagen, WOMIT storniert wurde,
nicht nur DASS. aufgehobene() bleibt als duenne Huelle darueber, damit
zeig_stornos und doppelte_nummern unveraendert weiterlaufen.
Fenster und Blatt zeigen wieder dieselben Worte.
pruef_storno_verrechnet prueft beide Richtungen mit, auch ueber die
Monatsgrenze ("storniert mit 2026-911" im August, der Storno selbst steht
im September). Angesehen: Tabelle als Bild gerendert, alles einzeilig,
auch mit langem Namen. doppelte und berichtigung gruen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017bEsoFUk16DfnNA7MjY36H
Sein Wort: "musst dann rein schreiben storniert oder so was dran setzen".
Im Bericht fuers Amt stand bisher nur die Rechnungsnummer. Bei einem
Storno sieht das Amt damit eine Stornonummer neben einer voellig anderen
Rechnungsnummer und im Folgemonat eine Minuszeile - ohne einen Hinweis,
was wozu gehoert. Im Fenster gibt es dafuer die Spalte "Art", auf dem
Blatt fehlte sie.
Jetzt steht unter der Nummer in kleiner grauer Schrift dasselbe Wort wie
im Fenster: "storniert", "Storno zu 2026-900", "Neuausstellung". Die
Zuordnung wird ueber ALLE uebergebenen Buchungen bestimmt (das ganze
Jahr), weil der Storno in einem anderen Monat liegen kann als seine
Rechnung - genau der Fall, um den es geht.
An den Summen aendert sich nichts: verrechnet bleibt verrechnet.
pruef_storno_verrechnet prueft die drei Beschriftungen jetzt mit.
Angesehen wurde es auch: Monatsbericht August und September als Bild
gerendert, Zeilen und Summen stimmen (August 9 Naechte/117,00,
September -4/-52,00).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017bEsoFUk16DfnNA7MjY36H
Heute Nacht war es andersherum gebaut (v1.6.3): Storno und aufgehobene
Rechnung zaehlten gar nicht mehr mit, die Berichtigung landete im Monat
der Rechnung. Sauber nach § 7 Abs. 5 der Satzung (angemeldet wird die im
Kalendermonat VEREINNAHMTE Steuer), aber nicht das, was er will.
Sein Wort:
"ich wuerde das wie beim alten lassen, nicht das er der Stadt zu
wenig gibt"
"ob er im Sep dann weniger gemacht hat ist doch egal, weil im August
hat er ja mehr - also gleicht es sich aus, es ist nur ein
Time-Problem. Aber um was es mir geht: die Steuern sind sauber."
Und er hat recht: der Unterschied ist NUR der Monat, nie das Jahr, und
die Richtung stimmt - zu viel zuerst ist beim Amt nie ein Problem, zu
wenig schon.
Also zurueckgebaut:
- modell.zaehlbar() ist wieder raus, summiere() summiert alle Zeilen mit
ihrem Vorzeichen. Die Begruendung samt Satzungs-Fundstelle steht im
Docstring, damit es niemand "repariert" - in EINEM Monat sieht eine
verrechnete Doppelung naemlich nach einem Fehler aus.
- Amtsbericht zeigt Rechnung und Storno wieder beide, jede in ihrem Monat
und mit ihrem Vorzeichen. Damit erklaert sich die Meldung von selbst.
- aufgehobene() bleibt, wird aber nur noch fuer die Spalte "Art" und fuer
die Dubletten-Meldung gebraucht, nicht mehr fuers Rechnen.
Nicht zurueckgebaut (das war eine eigene Ansage): Storno und aufgehobene
Rechnung werden NICHT mehr ausgegraut, sie stehen normal da und sind ueber
die Spalte "Art" gekennzeichnet.
pruef_storno_rechnet_nicht.py ist durch pruef_storno_verrechnet.py
ersetzt: derselbe Aufbau (Fake-Rechnungen in einer echten SQLite, auch
der Fall ueber die Monatsgrenze), aber es haelt jetzt das gewollte
Verhalten fest - August 9 Naechte/117,00, September -4/-52,00, Jahr
5/65,00. Restliche Kette (storno_journal, doppelte, berichtigung,
einzelinstanz, wache) gruen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017bEsoFUk16DfnNA7MjY36H