Der Rechnungszaehler kann nicht mehr hinter das Vergebene zurueck

Sein Einwand: 'er kann jetzt bescheissen, indem er das in den einstellungen
aendert' - und sein Vorschlag: 'dann koennte man noch die pdfs nutzen als
referenz, die haben auch die nummern'.

Der hoechste je vergebene Stand kommt jetzt aus ZWEI Quellen:
* den PDFs im Rechnungsordner (der Dateiname traegt die Nummer - kein Oeffnen
  noetig)
* dem gemeinsamen Nummernbuch (kennt auch Nummern OHNE PDF, den Altbestand)

Der Zaehler in der config taugt nicht als Wahrheit, er ist ja gerade das, was
sich aendern laesst. Deshalb: beim Nummernvorschlag wird ein zurueckgedrehter
Zaehler stillschweigend wieder angehoben, und die Einstellungen nehmen keinen
Wert mehr an, der hinter dem Vergebenen liegt - mit Meldung, welcher Stand
schon erreicht ist und woher er kommt. Nach VORN bleibt er frei: eine
lueckenlose Folge verlangt das Gesetz nicht, jede Nummer aber nur einmal
(§ 14 Abs. 4 Nr. 4 UStG).

Pruefstand pruef_nummernsperre.py: 17 Pruefungen - zurueckgedrehter Zaehler,
Einstellungen vor und zurueck, nur Ordner, nur Buch, und beides weg.

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 22:43:23 +02:00
parent ad1ac9af6f
commit d884cff6f8
6 changed files with 326 additions and 3 deletions

View file

@ -209,6 +209,19 @@ class Nummernbuch:
zeilen = con.execute("SELECT nummer FROM nummern")
return {z["nummer"] for z in zeilen}
def hoechster_zaehler(self, jahr):
"""Groesster Zaehler dieses Jahres im Buch (0, wenn nichts drinsteht).
Aus '2026-442' wird 442. Nummern anderer Reihen (Angebote 2026-A001)
zaehlen NICHT mit - die haben mit der Rechnungsnummer nichts zu tun.
"""
hoch = 0
for nummer in self.nummern(jahr):
teil = str(nummer).split("-")[-1]
if teil.isdigit():
hoch = max(hoch, int(teil))
return hoch
def eintrag(self, nummer):
with self._verbindung() as con:
z = con.execute("SELECT * FROM nummern WHERE nummer=?", (str(nummer),)).fetchone()