Vorgangsnummer: eine Klammer um die ganze Kette
Bisher zeigte jeder Beleg nur auf seinen Vorgaenger (storno_zu, ersetzt, storno_nummer). Ein zweites Programm musste sich die Kette daraus zusammensuchen. Jetzt tragen ALLE Blaetter einer Kette dieselbe Vorgangsnummer - die der ersten Rechnung. Gruppieren heisst dort: nach "vorgang" sortieren, fertig. Eine normale Rechnung ist ihr eigener Vorgang. Wichtig fuer den Fall "schon korrigierte Rechnung wird noch einmal storniert": Storno und Berichtigung uebernehmen den VORGANG der alten Rechnung, nicht deren Nummer - sonst zerfaellt die Kette in zwei. Die Einzelbezuege bleiben zusaetzlich stehen, damit man die Reihenfolge innerhalb der Kette lesen kann. Neu pruef_kette.py (13 Pruefungen): spielt den schlimmsten Fall durch - Rechnung, Storno, berichtigte Rechnung, Berichtigung der Anschrift, zweiter Storno, zweite berichtigte Rechnung. Alle sechs landen unter einem Schluessel, die Summe der Kette ergibt genau die letzte gueltige Rechnung (27,30 €), und der Steuerrechner liest davon 5 Geldbelege - das Berichtigungsblatt zaehlt nicht mit. 148 Pruefungen gruen (100 + 27 + 13 + 8) plus 7 Dialoge. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EKvGkdNW1vKdnMPAM9Bp3X
This commit is contained in:
parent
d67448c58f
commit
1060a6421f
4 changed files with 174 additions and 0 deletions
|
|
@ -450,6 +450,7 @@ def _kenndaten(rechnung, kopf):
|
|||
# nicht kennt, zaehlt dann 0,00 € statt den Umsatz ein zweites Mal.
|
||||
return json.dumps({
|
||||
"quelle": "rechnungstool", "version": 3, "art": "berichtigung",
|
||||
"vorgang": kopf.get("vorgang") or kopf.get("berichtigt_zu", ""),
|
||||
"rechnungsnummer": kopf.get("berichtigt_zu", ""),
|
||||
"berichtigt_zu": kopf.get("berichtigt_zu", ""),
|
||||
"berichtigt_am": kopf.get("berichtigt_am", ""),
|
||||
|
|
@ -482,6 +483,12 @@ def _kenndaten(rechnung, kopf):
|
|||
],
|
||||
# neu in Version 3
|
||||
"art": kopf.get("art", "rechnung"),
|
||||
# Klammer um die ganze Kette: Rechnung, ihr Storno, die berichtigte
|
||||
# Rechnung und jede Berichtigung tragen DIESELBE Vorgangsnummer - die der
|
||||
# allerersten Rechnung. Ein anderes Programm gruppiert danach in einem
|
||||
# Schritt, statt sich die Kette ueber storno_zu/ersetzt zusammenzusuchen.
|
||||
# Eine normale Rechnung ist ihr eigener Vorgang.
|
||||
"vorgang": kopf.get("vorgang") or kopf.get("rechnungsnummer", ""),
|
||||
"storno_zu": kopf.get("storno_zu", ""),
|
||||
"storno_datum": kopf.get("storno_datum", ""),
|
||||
"ersetzt": kopf.get("ersetzt", ""),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue