Was sie bei jedem Durchlauf tut
Die Aufgabe sucht die aktiven Ketten und ruft für jede die Integritätsprüfung auf. Alles Wichtige passiert innerhalb dieser Prüfung: Sie berechnet den Hash jedes Datensatzes neu und vergleicht ihn mit dem gespeicherten. Der Hash ist ein SHA-256 des Datensatzes, verkettet mit dem vorherigen, und die AEAT berechnet ihn selbstständig nach: Passt er nicht, nimmt sie den Datensatz mit einem Fehler an, der behoben werden muss.
Die Aufgabe existiert in allen veröffentlichten Zweigen des Moduls (17.0, 18.0, 19.0 und 20.0), das in Odoo Apps für diese vier Versionen veröffentlicht ist. Dieses Schema fasst die Aufgabe und das Menü zusammen, über das die Ketten geöffnet werden:

Details, die in der Ansicht nicht zu sehen sind
Sie prüft nur die aktiven Ketten, eine nach der anderen
Die Aufgabe geht nicht alle vorhandenen Ketten durch: Sie sucht ausschließlich die aktiven und startet die Prüfung jeder einzelnen getrennt. Jede Kette gehört zu einem Unternehmen. In der Ansicht von All Chain States (Asesoría) finden Sie das Feld Company, um zu erkennen, um welches es sich handelt.
Sie liest bei jedem Durchlauf die ganze Kette
Die Prüfung führt eine Abfrage aus, die die Erfassungs- und Stornierungsdatensätze des Unternehmens zusammenführt und nach Datensatznummer sortiert. Danach geht sie sie von Anfang bis Ende durch. Der Code beginnt nicht an einem Zwischenpunkt: Jeder Durchlauf startet beim ersten Datensatz.
Sie berechnet jeden Hash aus den gespeicherten Daten neu
Für jeden Erfassungsdatensatz rekonstruiert der Code den Hash aus diesen gespeicherten Daten: Steuernummer des Ausstellers, Seriennummer, Ausstellungsdatum, Rechnungstyp (F1, wenn leer), aus den Bemessungsgrundlagen berechnete Gesamtsteuer, Gesamtbetrag, Hash des vorherigen Datensatzes sowie Datum und Uhrzeit der Erzeugung mit Zeitzone. Der erste Datensatz geht von einem leeren vorherigen Hash aus.
Die Steuernummer des Ausstellers wird ohne das Präfix ES verwendet. Hat das Unternehmen eine eigene Steuernummer für Verifactu, bevorzugt der Code sie gegenüber der allgemeinen Umsatzsteuer-Identifikationsnummer. Ändert sich eine dieser Angaben nach der Erzeugung des Datensatzes, stimmt der neu berechnete Hash nicht mehr mit dem gespeicherten überein.
Stornierungen werden mit anderen Bezeichnungen berechnet
Die Stornierungsdatensätze verwenden eine eigene Formel: Sie enthalten weder Rechnungstyp noch Steuer noch Betrag, und ihre Bezeichnungen sind die der stornierten Rechnung. Der Code akzeptiert außerdem Stornierungen, die vor Version 1.3.4 des Moduls erzeugt wurden und mit den Bezeichnungen der Erfassungsdatensätze berechnet wurden: Stimmt der gespeicherte Hash mit dieser alten Berechnung überein, gilt er als korrekt.
Sie stoppt beim ersten Bruch und warnt
Sobald ein gespeicherter Hash nicht mit dem neu berechneten übereinstimmt, hält die Prüfung an: Sie macht mit den folgenden Datensätzen dieser Kette nicht weiter. Sie gibt zurück, wie viele Datensätze bis dahin geprüft wurden, und den ersten gebrochenen Datensatz mit Datensatznummer, Seriennummer, erwartetem und gespeichertem Hash.
Derselbe Schritt löst die Warnung wegen Kettenbruchs für das Unternehmen aus, mit der Datensatznummer und der Seriennummer, an der die Kette gebrochen ist. Passt die gesamte Kette, gibt die Prüfung zurück, dass sie bestanden wurde, zusammen mit der Gesamtzahl der geprüften Datensätze.
Die Häufigkeit ist einmal täglich, und in Odoo 17 wiederholt sie sich endlos
Die Aufgabe läuft einmal täglich und ist nach der Installation aktiv. In Odoo 17.0 ist sie zusätzlich so konfiguriert, dass sie sich endlos wiederholt.
Wenn sie nichts zu tun scheint
Bevor Sie die Aufgabe verdächtigen, gehen Sie Folgendes durch:
- Gibt es eine aktive Kette? Wenn keine existiert, liefert die Suche nichts und es gibt nichts zu prüfen.
- Ist die Aufgabe noch aktiv? Sie ist nach der Installation aktiv; wenn sie nicht läuft, prüfen Sie, ob sie noch aktiv ist.
- Was ist von einem korrekten Durchlauf zu erwarten? Die Aufgabe ruft nur die Prüfung jeder Kette auf, und eine intakte Kette gibt zurück, dass sie bestanden wurde, mit ihrer Gesamtzahl geprüfter Datensätze. Ein Bruch löst die Warnung wegen Kettenbruchs aus.
- Sehen Sie das Menü? Die Ansichten jeder Kette öffnen Sie über
Verifactu / SIF › Compliance Records › Chain State. Jeder Abschnitt verlangt andere Berechtigungen.

Die Menüberechtigungen, Abschnitt für Abschnitt
Wenn Sie die Berechtigung für einen Abschnitt nicht haben, sehen Sie diesen Abschnitt nicht. Das sind die Berechtigungen, die jeder verlangt:
| Menüabschnitt | Berechtigungen, die ihn anzeigen |
|---|---|
Verifactu / SIF | Accountant, Asesoría Operator, Auditor (read-only), Privacy Officer, SIF Manager |
Compliance Records | Accountant, Auditor (read-only), SIF Manager |
Chain State | Auditor (read-only), SIF Manager |
Mit nur der Berechtigung Accountant sehen Sie die ersten beiden Abschnitte, aber nicht Chain State. Wenn jemand sagt, er finde das Menü nicht, prüfen Sie zuerst seine Berechtigungen.
Weitere Lektüre und Hilfe
Wenn Sie Odoo einführen und möchten, dass VeriFactu zu Ihrer Rechnungsstellung passt: FlexigoTech führt Odoo 17, 18, 19 und 20 ein und entwickelt Konnektoren und individuelle Integrationen. Das Modul finden Sie auf seiner Odoo-Apps-Seite.
Weiterlesen
Geprüft im Quellcode des Moduls (Version 17.0 und 20.0) und in den verlinkten Quellen
Quellen
- Quellcode des Moduls: flexigo_spain_verifactu 20.0 (1fdc980f): data/verifactu_crons.xml
- Quellcode des Moduls: flexigo_spain_verifactu 17.0 (8d43d727): data/verifactu_crons.xml
- Quellcode des Moduls: flexigo_spain_verifactu 20.0 (1fdc980f): models/verifactu_cadena.py
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Veri-Factu_
- apps.odoo.com/apps/modules/20.0/flexigo_spain_verifactu
- flexigotech.com/en/services.html
