Invoice sequences in Odoo

Mit der Umstellung von v13 auf v14 gab es in Odoo auch eine größere Anpassung der Logik zur Ermittlung der Rechnungsnummern.

Zuvor wurde mittels einer Sequenz ermittelt, welche Rechnungsnummer für ein bestimmtes Journal angewandt werden soll, mit der nun eingesetzten Lösung steht es dem User frei, Anpassungen auch ohne technisches Hintergrundwissen bezüglich Sequenzen vorzunehmen. 

Den ersten Commit zu diesem Thema findet man hier: https://github.com/odoo/odoo/commit/dfd01b8c5c7e1177f37bf199790a0732a61eed78

Die Umstellung wurde nicht überall gut aufgenommen, so gab es diesbezüglich auch schon rege Diskussionen auf Twitter: https://twitter.com/fpodoo/status/1344236334588821510

In folgendem Artikel möchten wir darauf eingehen, was bei der Konfiguration von Rechnungskreisen zu beachten ist, und wie man die optimale Konfiguration für den jeweiligen Anwendungsfall herausholt, unter der Berücksichtigung, dass der jeweilige Nummernkreis auch über einen Jahressprung hinweg weiterhin funktioniert.

Grundlegende Einstellungen

Zuerst muss das Journal richtig konfiguriert werden. Gehen Sie dazu in die Finanz-App und öffnen Sie die Konfiguration des Journals "Ausgangsrechnungen".

In dem sich öffnenden Fenster sind 2 Dinge zu konfigurieren:

  • Das Feld "Fest zugeordnete Gutschrift-Sequenz": Setzen Sie diese Einstellung, wenn Gutschriften in einem eigenen Nummernkreis verwaltet werden sollen. Möchten Sie für Ausgangsrechnungen und Ausgangsgutschriften den gleichen Nummernkreis verwenden, so deaktivieren Sie diese Funktion.
  • Das Feld "Kurzzeichen": Die erste von Odoo erstellte Rechnung wird dieses Kurzzeichen als Präfix für die Rechnungsnummer enthalten (was allerdings später überschrieben werden kann).

Mit dieser gesetzten Standardkonfiguration würde Odoo nun beim ersten Erstellen einer Rechnung folgende Rechnungsnummern vergeben:

  • für Ausgangsrechnungen: RGN/JAHR/00001
  • für Ausgangsgutschriften RRGN/JAHR/00001 (es wird zusätzlich der Buchstabe "R" als Präfix vorangestellt).

Für viele Anwendungsfälle ist diese Konfiguration bereits ausreichend. Sollte eine Anpassung notwendig sein, oder Sie z.B. unterjährig ab einer gewissen Rechnungsnummer "einsteigen" wollen, so muss dies bei der Erstellung der ersten Rechnungsnummer geschehen. Sobald die erste Rechnung erzeugt wird, schlägt Odoo standardmäßig die erste Rechnungsnummer vor, diese kann durch den User abgeändert werden:


Hierbei gilt es allerdings ein paar Dinge zu beachten, wie wir im nächsten Schritt erläutern.

Zu beachten

Bei der Erkennung des Rechnungsnummernkreises setzt Odoo auf sogenannte "Regex"-Codes, diese evaluieren die an Odoo übergebene Rechnungsnummer und versuchen anhand von gewissen Eigenschaften zu erkennen, welcher Part der Rechnungsnummer z.B. die Jahreszahl enthält.

Odoo prüft die Rechnungsnummer zum Stand 02.02.2022 mit folgenden Regex-Ausdrücken:

  • Regex zur Erkennung von Rechnungsnummern die die Jahreszahl enthalten:  ^(?P<prefix1>.*?)(?P<year>\d{4})(?P<prefix2>\D+?)(?P<seq>\d*)(?P<suffix>\D*?)$  
  • Regex zur Erkennung von Rechnungsnummern die die Jahreszahl und das Monat enthalten:  ^(?P<prefix1>.*?)(?P<year>\d{4})(?P<prefix2>\D*?)(?P<month>\d{2})(?P<prefix3>\D+?)(?P<seq>\d*)(?P<suffix>\D*?)$
  • Regex zur Erkennung von Rechnungsnummern ohne Jahr und Monat:  ^(?P<prefix1>.*?)(?P<seq>\d*)(?P<suffix>\D*?)$

Diese Ausdrücke erscheinen vorerst recht komplex, sind aber recht einfach mit diversen kostenlosen Online-Tools zu prüfen, wir empfehlen hier z.B. folgendes Tool: https://pythex.org/

Kopieren Sie einfach die von Ihnen gewünschte Regex in das oberste Feld des Tools und geben Sie als "test string" eine Ihrer Rechnungsnummern an um zu prüfen, ob Odoo die Rechnungsnummer richtig in seine einzelnen Bestandteile aufteilen kann. Nur wenn eine entsprechende Auftrennung auch laut Tool möglich ist, wird der Rechnungsnummernkreis entsprechend richtig erkannt.

Hier ein paar Beispiele für Nummernkreise die so in Odoo aktuell (im Standard) nicht abbildbar sind (bzw. infolgedessen zu keiner automatischen Änderung bei einem Periodensprung führen):

  • 202200001: hier würde das Jahr direkt gefolgt von einer laufenden Nummer übergeben werden. Odoo kann allerdings das Jahr nicht erkennen, da es ein Trennzeichen zwischen Jahr und Nummer benötigt
  • 2022/4/0001 (wobei 4 z.B. für eine Filialnummer stehen sollte): Hier erkennt Odoo die Zahl 4 nicht als Filialnummer sondern als Monat
  • 2022/F4/0001 (wobei F4 z.B. für eine Filialnummer stehen sollte): Präfixes zwischen Jahr und Sequenz dürfen keine Zahlen enthalten (dagegen wäre z.B. F4/2022/0001 erlaubt, da der erste Präfix Zahlen enthalten darf)
  • 22/00001 (wobei 22 für das aktuelle Jahr steht): Die an Odoo übergebene Jahreszahl muss laut Regex-Ausdruck 4-stellig sein, sonst wird sie nicht entsprechend erkannt

Zusätzlicher technischer Hinweis: Das Journal würde prinzipiell eine Einstellungsmöglichkeit bereithalten, um zusätzliche komplexere Rechnungsnummernkreise zu definieren, dazu gibt es im Quellcode einen Verweis auf das Feld "sequence_override_regex". Eine Einstellung über die Benutzeroberfläche ist im Odoo Standard jedoch per Stand 02.02.2022 nicht möglich.

Neu nummerieren von Rechnungen

Ab v14 ist es in Odoo auch möglich, Rechnungen neu zu nummerieren, wenn dies nicht in den Journaleinstellungen gesperrt wurde (was für für Produktivumgebungen eindeutig empfehlen).

Dazu muss der Entwicklermodus aktiviert werden und die entsprechenden Rechnungen in der Übersicht markiert werden. Über den Button "Aktion" => "Resequence" können nun neue Rechnungsnummern vergeben werden.

Hier gilt allerdings folgendes zu beachten:

  • natürlich ist eine Neuordnung der Rechnungsnummern nur zulässig wenn dies auch rechtlich möglich ist
  • Eine Änderung des Präfixes kann zu ungewünschtem Verhalten führen. Zum Beispiel: Angenommen es gibt die Rechnungen INV/2019/0001 und INV/2019/0002 und die letzte Rechnung wird zu FACT/2019/0001 umbenannt, dann wäre die Erwartung, dass die nächste Rechnung FACT/2019/0002 benannt wird. Dem ist allerdings nicht so, da der Buchstabe I (von INV) nach dem Buchstaben F (von FACT) gereiht ist und Odoo die Rechnung INV/2019/0001 als letzte Rechnung erkennt.

Anmerkung: Es gibt eine Reihe von Drittanbietermodulen, welche das ursprüngliche (von Odoo 13 gewohnte) Verhalten wiederherstellen. Aufgrund des tiefgreifenden Eingriffes in das System würden wir - auch wenn das alte Verhalten aus unserer Sicht teilweise übersichtlicher gelöst wurde - diese Vorgehensweise nicht empfehlen.

Haben Sie Probleme bei der richtigen Konfiguration Ihrer Rechnungskreise? Unser Team hilft Ihnen gerne weiter!

From Odoo to paper
verschiedene Möglichkeiten um Druckaufträge über Odoo an Drucker zu senden