Wat is deze taak en hoe vaak draait ze
Wat is het en hoe is het ingesteld?
Het is een geplande taak van de VeriFactu-module die werkt op de verzendwachtrij naar de AEAT. Ze staat na installatie actief en draait elke minuut. Ze zit in de gepubliceerde branches voor Odoo 17.0, 18.0, 19.0 en 20.0; in 17.0 is ze zo ingesteld dat ze zich eindeloos herhaalt.

Verstuurt ze elke minuut iets naar de AEAT?
De taak draait elke minuut, maar dat betekent niet één verzoek per minuut. Elk antwoord van de AEAT bevat TiempoEsperaEnvio, het aantal seconden tot de volgende verzending. Volgens de code van Odoo 20.0 slaat de module dat tijdstip op voor het bedrijf en stuurt ze niets voordat het bereikt is (met één uitzondering die je hieronder ziet).
Waar zie ik de items die ze verwerkt?
In het menu Verifactu / SIF › AEAT Submission › Submission Queue. Elk deel van het menu vraagt rechten en als je die niet hebt, zie je dat deel niet. Het deel AEAT Submission vraagt Accountant, Auditor (read-only) of SIF Manager. Het deel Verifactu / SIF vraagt een van deze: Accountant, Asesoría Operator, Auditor (read-only), Privacy Officer of SIF Manager. Het veld Reference van elk item zie je op de kaart ervan, op het tabblad AEAT Errors, in de groep Queue Entry, en ook in de lijst.

Wat ze bij elke ronde doet
Welke bedrijven behandelt ze en wanneer slaat ze er een over?
Ze loopt alleen langs de bedrijven met VeriFactu ingeschakeld. Voor elk bedrijf kijkt ze naar twee opgeslagen tijdstippen, waarvan een de wachttijd uit het laatste antwoord van de AEAT is. Is een van die tijdstippen nog niet bereikt, dan slaat ze het bedrijf in deze ronde over en noteert dat in het serverlog. De uitzondering is de wachttijd van het laatste antwoord: als er 1.000 items of meer wachten (openstaand of in nieuwe poging), wacht het bedrijf daar niet op.
Wat doet ze met de items van een bedrijf?
Ze haalt de batch uit de wachtrij van dat bedrijf op en als er niets is, is ze daar zonder meer klaar mee. Items zonder gekoppeld register of annulering markeert ze als mislukt. De rest sorteert ze op registernummer, omdat elk register zijn voorganger in de ketening noemt. Daarna bereidt ze elk item voor als registratie of als annulering en stuurt ze alles samen in één verzoek naar de AEAT. Volgens de AEAT bevat een verzending 1 tot 1.000 registers.
Wat gebeurt er met het antwoord, of met een fout?
Als de AEAT antwoordt, verwerkt de module per item het resultaat. Het antwoord bevat EstadoEnvio (Correcto, ParcialmenteCorrecto of Incorrecto) en een status per register (Correcto, AceptadoConErrores of Incorrecto). Bevat het een wachttijd, dan slaat de module het tijdstip op waarvoor dat bedrijf niet opnieuw verstuurt. Als het verzoek mislukt met een 429, behandelt de module dat via een andere route dan de overige fouten. Bij elke andere fout haalt ze elk item door de afhandeling van HTTP-fouten en als een item wordt afgeschreven, geeft ze één melding voor de hele batch in plaats van een per factuur. Aan het einde van het bedrijf vraagt ze de keten om één herberekening voor alle items.
Verstuurt ze opnieuw wat de AEAT al heeft aanvaard?
Een dubbel register komt terug van de AEAT met code 3000. Staat het al als correct of aanvaard met fouten, dan hoeft het niet opnieuw te worden verstuurd.
Als het lijkt alsof ze niets doet
Wat controleer ik eerst?
Controleer of de taak nog actief is (ze staat na installatie actief), of het bedrijf VeriFactu ingeschakeld heeft en of de lijst Submission Queue items bevat. Kijk ook of het bedrijf in een wachttijd zit: na een antwoord van de AEAT wacht ze de tijd die de AEAT aangaf, en die ronde wordt in het serverlog genoteerd. Een ronde met een lege batch eindigt zonder iets te versturen. Zit het probleem bij het certificaat, dan stuurt de AEAT zonder certificaat door naar de foutpagina 4033 («geen certificaat gedetecteerd») en bij een certificaat dat niet valideert naar 4011.
Blokkeert een fout bij een bedrijf de andere?
Volgens de code niet. Elk bedrijf wordt binnen zijn eigen foutafhandeling verwerkt: als het mislukt, komt de fout met de naam van het bedrijf in het serverlog en gaat de taak door met het volgende.
Wat is het gezondheidsoverzicht aan het einde?
Als ze met alle bedrijven klaar is, en alleen als er tijdens de ronde iets misging, stelt de taak een gezondheidsoverzicht op voor FlexigoTech Cloud voor monitoring. Ze stuurt dit niet bij elke ronde, maar met een minimaal interval tussen rapporten. Het bevat het aantal openstaande of in nieuwe poging staande items en van de afgeschreven items, en de fouten gegroepeerd per type, code en hoe vaak ze voorkwamen.
Hulp bij jouw implementatie
Als je Odoo implementeert en wilt nagaan hoe deze wachtrij eruitziet met jouw bedrijven, implementeren wij bij FlexigoTech Odoo 17, 18, 19 en 20 en ontwikkelen we connectoren en integraties op maat.
Lees verder
Gecontroleerd in de broncode van de module (versie 17.0 en 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigo_spain_verifactu 20.0 (1fdc980f): data/verifactu_crons.xml
- Broncode van de module: flexigo_spain_verifactu 17.0 (8d43d727): data/verifactu_crons.xml
- Broncode van de module: flexigo_spain_verifactu 20.0 (1fdc980f): models/verifactu_cola_envio.py
- apps.odoo.com/apps/modules/20.0/flexigo_spain_verifactu
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/Sis
- sede.agenciatributaria.gob.es/Sede/errores/erro4033.html
- flexigotech.com/en/services.html
