Ein Fehler, der nicht ablehnt
Der Text der AEAT lautet El cálculo de la huella suministrada es incorrecta., «Die Berechnung des übermittelten Hashs ist falsch», und steht im dritten Abschnitt der Liste, bei den Fehlern, die zur Annahme des Datensatzes führen. Das Validierungsdokument nennt sie zulässige Fehler: Sie verhindern die Registrierung nicht, hinterlassen aber einen Hinweis, dass etwas nicht stimmt, und die AEAT verlangt eine Korrektur («subsanación»), damit sie den Datensatz verarbeiten kann.
Zur gleichen Gruppe gehören die Warnungen zum Format des Hashs des vorherigen Datensatzes, der ein SHA-256 mit 64 hexadezimalen Zeichen in Großbuchstaben sein muss. Diese Codes stehen auf der Seite zur Verkettung.

So wird der Hash berechnet
Die technische Spezifikation der AEAT legt das Verfahren fest: Die Felder des Datensatzes werden in fester Reihenfolge übernommen, als Feld=Wert mit & verbunden, mit SHA-256 gehasht und in Großbuchstaben hexadezimal ausgegeben. Eines dieser Felder ist der Hash des vorherigen Datensatzes, wodurch jeder Datensatz an den vorangehenden gebunden wird.
Schon ein einziges abweichendes Zeichen zwischen dem, was gehasht wurde, und dem, was gesendet wurde, reicht, damit die AEAT ein anderes Ergebnis erhält. Ein um einen Cent abweichender Betrag, ein Datum in einem anderen Format oder eine Rechnungsnummer mit einem zusätzlichen Leerzeichen genügen dafür.
Was das Modul tut, damit es übereinstimmt
- Es berechnet den Hash beim Verketten des Datensatzes, also beim Buchen der Rechnung, und speichert ihn. Weder der Hash noch der vorherige Hash lassen sich danach ändern.
- Es sendet CuotaTotal und ImporteTotal mit exakt denselben Zeichenfolgen, die in den Hash eingeflossen sind, damit die AEAT die Berechnung wiederholen kann.
- Jeden Tag prüft der Cron Verifactu: Nightly Integrity Check die Kette jedes Unternehmens und hinterlegt das Ergebnis unter Registros de Cumplimiento › Estado de la Cadena.

Was zu tun ist, wenn ein 2000 kommt
- Machen Sie sich um die Rechnung keine Sorgen: Sie ist bei der AEAT registriert. In Odoo erscheint der Datensatz als «Aceptado con errores (subsanar)».
- Öffnen Sie Estado de la Cadena und klicken Sie auf Verificar Integridad. Meldet die lokale Kette einen Fehler, liegt das Problem in Odoo und muss untersucht werden, bevor Sie weiter Rechnungen stellen.
- Zur Korrektur verlangt die AEAT einen neuen Datensatz mit derselben Rechnungskennung. Das veröffentlichte Modul sendet Korrekturdatensätze nicht von selbst, schreiben Sie uns daher an comercial@flexigobe.com mit der Datensatznummer und der gespeicherten Antwort.
Kann ich den Hash von Hand neu berechnen und in Odoo korrigieren?
Nein. Der Rechnungsdatensatz erlaubt keine Änderung des Hashs oder des vorherigen Hashs, und das ist so gewollt: Die Kette muss unveränderlich sein.
Betrifft das die folgenden Rechnungen?
Jeder Datensatz verkettet den vorherigen Hash so, wie er in Odoo gespeichert wurde. Ist die lokale Kette intakt, laufen die nächsten ganz normal weiter.
Weiterlesen
Geprüft im Quellcode des Moduls (Version 20.0) und in den verlinkten Quellen
Quellen
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Veri-Factu_
- Quellcode des Moduls: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- Quellcode des Moduls: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_registro.py
- Quellcode des Moduls: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Quellcode des Moduls: flexigo_spain_verifactu 20.0 (aa2ea3d2): data/verifactu_crons.xml
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
