Fortlaufende Rechnungsnummer bei mehreren Abrechnungssystemen

Für die Ausstellung von Rechnungen gibt es vom Gesetzgeber die Vorgabe, dass diese „fortlaufend“ zu nummerieren sind. Dadurch soll sichergestellt werden, dass jede Rechnung einmalig ist. Wie immer ist das Gesetz etwas schwammig und die Begrifflichkeit „fortlaufend“ bedeutet dabei nicht, dass es sich um eine lückenlose Abfolge der Rechnungsnummern handeln muss. So darf man z. B. Sprünge machen und nach der Rechnung 001 kommt die Rechnung 005. Was mit den Nummern dazwischen passiert ist völlig egal. Es ist allerdings keine gute Idee zufällige Rechnungsnummern zu vergeben, denn dadurch macht man defintiv die Abfolge kaputt. Auf so etwas sollte man insbesonder dann achten, wenn die Rechnungen auch noch aus verschiedenen Systemen generiert werden.

Es gab die Anforderung, dass bestimmte Rechnungen aus einem System stammen, wo leider nur begrenzt Einfluss auf den Inhalt der Rechnungen genommen werden kann und Rechnungen in einem anderen Faktura-Programm für außergewöhnliche Posten manuell geschrieben werden müssen. Knackpunkt war, dass bei beiden Programmen nicht einfach die Vergabe der Rechnungsnummern gesteuert werden konnte. Defintiv ein Minuspunkt. Das musste tatsächlich zumindest für eins der Programme programmiert werden.

Wie löst man aber dann das Benennungsproblem auf? Das kommt darauf an, wie man die Vorgabe interpretiert und in welchem Zeitraum die Rechnungen erstellt werden. Wenn diese in beiden Systemen über den ganzen Tag verteilt erstellt werden, gibt es meiner Meinung nach nur begrenzete Möglichkeiten um bei der Vergabe der Nummern nichts doppelt zu benutzen und gleichzeitig die zeitliche Abfolge der Rechnungserstellung einzuhalten: Man muss das Datum, die Uhrzeit und einen Identifier für das jeweilige System nutzen (entweder eine Zahl oder einen Buchstaben).

In System 1:

Jahr-Monat-Tag-Stunden-Minuten-Sekunden-1

In System 2:

Jahr-Monat-Tag-Stunden-Minuten-Sekunden-2

Hierdurch werden die Nummern zwar recht lang, aber es entfällt auch eine eigene Nummerierung. Wenn das zeitlich nicht ausreicht, kann man natürlich die Rechnungsnummer um die Millisekunden erweitern.

Wenn aber in einem System nur zu einem bestimmten Zeitpunkt am Tag oder vielleicht sogar nur wöchentlich oder monatlich Rechnungen geschrieben werden, braucht man theoretisch den Identifier nicht, solange sichergestellt ist, dass am Tag der Rechnungserstellung im anderen System keine Rechnungen mehr geschrieben werden. In einem solchen Szenario würde man auch nicht unbedingt das Datum und die Uhrzeit benötigen, sondern könnte nach der letzten Rechnungsnummer aus System 1 in System 2 weiter machen, sofern man dort eine Start-Rechnungsnummer angeben kann.

Nicht gut sind meiner Meinung nach jegliche Überlegungen mit irgendwelchen reservierten Zahlenbereichen ohne einen Identifier, außer wenn diese wirklich ausreichend Puffer haben. Sonst kommt man sich doch leicht mit den Nummern aus beiden Systemen in die Quere. Wenn man aber genau weiß, wieviel Rechnungen in einem bestimmten Zeitraum geschrieben werden, kann auch dies eine Möglichkeit sein, wodurch auch die Rechnungsnummern  kürzer gehalten werden. Nur mit dem Datum, einer automatisch hochzählenden Nummer und dem Identifier sähe das so aus:

In System 1:

Jahr-Monat-Tag-000-1

In System 2:

Jahr-Monat-Tag-000-2

Allerdings kann bei dieser Variante natürlich nicht mehr sicher gestellt werden, dass die Nummern dem zeitlichen Ablauf der Erstellung gerecht werden. Ob dies aber zu 100% stimmen muss, konnte ich leider nicht herausfinden.

 

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert