Waarom het hele verzoek wordt afgewezen
Het validatiedocument van de AEAT onderscheidt drie soorten controles: structurele, syntactische en bedrijfsregels. De structurele controleren of de XML aan het schema voldoet, met de verplichte tags, en als die falen wordt het hele bericht afgewezen. Die afwijzing komt terug als een SoapFault en er wordt geen enkele factuur van het verzoek geregistreerd, ook de correcte niet.
De officiële lijst zegt het letterlijk: «El XML no cumple el esquema. Falta informar campo obligatorio.» Dat staat in het eerste onderdeel, de codes die het volledige verzoek afwijzen.

Wat de module doet zodat het niet zover komt
Eén slecht gevormd record zou alle andere records van dezelfde verzending meetrekken. Om dat te voorkomen valideert de module elk record tegen het officiële schema van de AEAT voordat het wordt verstuurd. Het bevat een kopie van dat schema, het bestand SuministroLR.xsd met zijn afhankelijkheden, en het verloop is als volgt:
- Bij het boeken van de factuur Wordt het facturatierecord aangemaakt, dat daarna niet meer verandert.
- Bij de volgende ronde van de wachtrij Elk wachtend record wordt omgezet naar XML en tegen het schema gevalideerd.
- Als een record er niet aan voldoet Wordt het in Odoo als afgewezen gemarkeerd met de melding van het schema, zonder AEAT-code, en gaat het niet naar buiten.
- De rest Gaat naar de AEAT in hetzelfde verzoek, zonder het slechte record.
Zo sleept een gebrekkig record de goede facturen die ermee meereizen niet mee.
Hoe je het in Odoo ziet
In de wachtrij voor verzending verschijnt het gestopte record op Failed met de melding van de validator als laatste fout, in plaats van een code van vier cijfers. Die melding noemt het element dat ontbreekt of op de verkeerde plek staat, precies wat je nodig hebt om te weten waar het vandaan komt. In de lijst met facturatierecords is de status «Rechazado AEAT», afgewezen door de AEAT, ook al heeft de AEAT het nooit gezien.

Zelfs vóór het schema zijn er gegevens zonder die de module de XML helemaal niet opbouwt, en dat meldt hij met zijn eigen boodschap:
Company … has no NIF for Veri*Factu.wanneer het bedrijf geen NIF heeft.Record … has no tax breakdown (Desglose) to declare.wanneer het record geen belastinguitsplitsing heeft.
Als de 4102 van de AEAT komt
Als het antwoord met 4102 van de AEAT zelf komt, is het record de lokale validatie gepasseerd en heeft de AEAT het met zijn eigen schema afgewezen. De redelijke verklaring is dat het schema van de AEAT en de kopie in de module niet meer overeenkomen. In dat geval heeft opnieuw verzenden geen zin: stuur een e-mail naar comercial@flexigobe.com met het volledige antwoord, het veld Raw Response van de wachtrij, zodat we de kopie van het schema kunnen nakijken.
Kan ik het gegeven corrigeren en opnieuw proberen?
Dat hangt af van waar het gegeven staat. De kop wordt bij elke verzending opgebouwd uit de bedrijfsgegevens van dat moment: als de fout in de naam zat, corrigeer die en gebruik Reintentar Selección in Errores AEAT. Zat hij in het NIF, dan is corrigeren niet genoeg, want het NIF is bij het boeken ook in de hash van elke factuur opgenomen en de nieuwe verzending komt terug met de 2000. Staat het gegeven in het record van de factuur, dan stuurt een nieuwe poging hetzelfde en faalt weer. In die twee gevallen: schrijf ons.
Gaat de factuur verloren?
Nee. Het record blijft in Odoo, geketend, en de wachtrij verwerkt het wachtende werk elke 1 minuut zodra het probleem is opgelost.
Lees verder
Gecontroleerd in de broncode van de module (versie 20.0) en in de gelinkte bronnen
Bronnen
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- Broncode van de module: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Broncode van de module: flexigo_spain_verifactu 20.0 (aa2ea3d2): data/verifactu_crons.xml
- Broncode van de module: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- Broncode van de module: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_registro.py
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
- Broncode van de module: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cadena.py
