Storno wird nicht mehr mitgerechnet, und nicht mehr ausgegraut
Seine Ansage: "wenn es als storno getagt ist darf der rechner das nicht mehr rechnen weil es minus ist, die rechnung gibt es nicht mehr" - und "ausgrauen wuerde ich es nicht, ich wuerde es nur als storno taggen". Bisher standen Rechnung (+) und Storno (-) beide in der Summe und hoben sich gegenseitig auf. Naechte, Entgelt und Steuer kamen dabei zwar richtig heraus, aber: * die Zahl "Rechnungen" war je Stornofall um ZWEI zu hoch - im Fenster wie im Amtsbericht, und * lag der Storno in einem anderen MONAT als seine Rechnung, stand in jedem der beiden Monate die Haelfte der Verrechnung allein da: der August meldete eine Uebernachtung zu viel, der September eine zu wenig. Erst im Jahr hob sich das wieder auf. Neu ist modell.zaehlbar(): Storno und die von ihm aufgehobene Rechnung zaehlen gar nicht mehr mit. summiere() geht durch diesen Filter, das Set der aufgehobenen Rechnungen wird ueber das ganze JAHR bestimmt und an Monatsleiste, Jahresleiste und Amtsbericht durchgereicht. Der Amtsbericht zeigt die beiden Zeilen auch nicht mehr an - die Rechnung gibt es nicht mehr, und Minuswerte auf dem Blatt fuers Amt waeren ohne die Gegenzeile nicht erklaerbar. Im Fenster bleibt alles sichtbar, nur nicht mehr grau: der Hinweis steht in der Spalte "Art" (Storno zu .../storniert/Neuausstellung). Pruefstand pruef_storno_rechnet_nicht.py (neu, 22 Pruefungen) legt die Faelle als Fake-Rechnungen in einer echten SQLite an - auch den Fall ueber die Monatsgrenze, den echte Daten nicht hergeben - und prueft Rechenkern, Amtsbericht-PDF und das echte Fenster. Die uebrige Pruefkette (storno_journal, doppelte, berichtigung, einzelinstanz, wache) laeuft unveraendert gruen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017bEsoFUk16DfnNA7MjY36H
This commit is contained in:
parent
0218abaebe
commit
448afb3c62
5 changed files with 252 additions and 21 deletions
17
app.py
17
app.py
|
|
@ -52,7 +52,7 @@ import firma as firma_lib
|
|||
import bericht_pdf
|
||||
import ablage
|
||||
from modell import (MONATE, STANDARD_SATZ, summiere, eur, eur_kurz,
|
||||
aufgehobene, doppelte_nummern)
|
||||
aufgehobene, zaehlbar, doppelte_nummern)
|
||||
from gui_monat import MonatsTab, SummenLeiste, WARNUNG
|
||||
|
||||
# Als EXE liegt alles in einem eigenen Datenordner - siehe ablage.py.
|
||||
|
|
@ -232,8 +232,9 @@ class App(tk.Tk):
|
|||
# Ueber ALLE Buchungen des Jahres, nicht ueber die gefilterten: sonst
|
||||
# versteckt die Suche den zweiten Beleg und die Dublette waere weg.
|
||||
self._doppelte = doppelte_nummern(alle)
|
||||
# Was ein Storno aufgehoben hat, steht weiter da - aber grau, und es
|
||||
# zaehlt nicht mehr als offene Rechnung.
|
||||
# Was ein Storno aufgehoben hat, steht weiter da - in normaler Schrift,
|
||||
# gekennzeichnet nur ueber die Spalte "Art", und es zaehlt nicht mehr
|
||||
# als offene Rechnung.
|
||||
self._aufgehoben = aufgehobene(alle)
|
||||
if self._doppelte:
|
||||
# Gehoert ins Log: der Amtsbericht wird aus diesen Zeilen gebaut, und
|
||||
|
|
@ -260,7 +261,10 @@ class App(tk.Tk):
|
|||
else:
|
||||
self.jahr_titel.config(text=f"Jahr {jahr} – gesamt")
|
||||
|
||||
self.jahr_summe.setzen(summiere(sichtbar), sichtbar)
|
||||
# Auch der Monats-Durchschnitt zaehlt nur, was zaehlt: ein Monat, in dem
|
||||
# nur ein Storno steht, ist kein Monat mit Umsatz.
|
||||
self.jahr_summe.setzen(summiere(sichtbar, self._aufgehoben),
|
||||
zaehlbar(sichtbar, self._aufgehoben))
|
||||
self.jahr_wahl.config(values=self._jahre())
|
||||
self.ordner_anzeige.config(
|
||||
text=f"Rechnungen: {self.pdf_ordner}" if self.pdf_ordner
|
||||
|
|
@ -698,7 +702,10 @@ class App(tk.Tk):
|
|||
return
|
||||
if not pfad:
|
||||
return
|
||||
s = summiere(self.journal.buchungen(jahr=jahr, monat=monat))
|
||||
# Ueber das ganze Jahr bestimmen, was aufgehoben ist: der Storno kann in
|
||||
# einem anderen Monat stehen als die Rechnung, die er aufhebt.
|
||||
jahr_alle = self.journal.buchungen(jahr=jahr)
|
||||
s = summiere([b for b in jahr_alle if b.monat == monat], aufgehobene(jahr_alle))
|
||||
self.melde(f"Bericht geschrieben: {pfad}")
|
||||
if messagebox.askyesno(
|
||||
"Bericht fertig",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue