Ce que cela signifie
Le texte de l'AEAT est Registro de facturación duplicado. et il figure dans la partie de la liste officielle qui rejette la facture, non l'envoi entier. L'identifiant comparé est le bloc IDFactura : le NIF de l'émetteur, le numéro de la facture et sa date d'émission. Dans Odoo, ces trois données proviennent du NIF de la société, du numéro attribué par Odoo à la facture et de sa date.
Avec le code 3000, la réponse de l'AEAT inclut un bloc RegistroDuplicado qui indique ce qu'il est advenu de l'enregistrement déjà présent : l'identifiant de la requête par laquelle il est entré, son statut et, s'il en avait un, son propre code d'erreur.

Quand cela arrive avec Odoo
L'AEAT répond à chaque envoi par un statut par enregistrement. Si cette réponse n'arrive pas, à cause d'une coupure réseau ou d'un délai d'attente dépassé, le module ne peut pas savoir si l'AEAT a enregistré l'envoi : il le place en Retrying et le répète plus tard, avec des attentes allant de 2 minutes à 12 heures. Si la première tentative était bien entrée, la seconde revient avec un 3000. C'est la façon dont l'AEAT vous indique qu'elle l'avait déjà.
Ce que le module fait de la réponse
| Statut de l'enregistrement antérieur | Ce que vous trouvez dans Odoo |
|---|---|
| Correcta | L'enregistrement passe à « Aceptado AEAT » et n'est pas renvoyé. |
| AceptadaConErrores | Il reste en « Aceptado con errores (subsanar) », avec le code et la description de l'enregistrement antérieur. |
| Tout autre statut | Il est traité comme un rejet : Retrying et, à la sixième tentative, Dead Letter. |
Cela correspond à ce qu'indique l'AEAT : si l'enregistrement figure déjà comme correct ou accepté avec erreurs, il ne faut pas le renvoyer. Le renvoyer ne produirait qu'un autre 3000.

Ce que vous devez faire
- Si l'enregistrement est passé à « Aceptado AEAT », rien à faire. La facture est enregistrée une seule fois.
- S'il est passé à « Aceptado con errores (subsanar) », le problème n'est pas le doublon mais l'erreur que l'enregistrement antérieur portait déjà. Cherchez son code dans cette même série de pages.
- Si le 3000 se répète avec des factures différentes, vérifiez que deux systèmes n'envoient pas les mêmes factures avec le même NIF, par exemple une copie de test d'Odoo pointant vers l'environnement de production.
Le 3000 peut-il venir d'une autre facture portant le même numéro ?
Seulement si le NIF, le numéro et la date coïncident. Odoo ne répète pas les numéros au sein d'un même journal : le cas habituel est donc la même facture envoyée deux fois.
Où voir l'enregistrement antérieur ?
Dans la réponse enregistrée avec l'envoi, le champ Raw Response de la file, qui contient le bloc RegistroDuplicado complet.
Les enregistrements d'annulation suivent la même logique d'identifiant. Ce qui se passe quand vous annulez une facture que l'AEAT n'a pas, ou qui était déjà annulée, est expliqué dans la page sur les annulations.
À lire aussi
Vérifié dans le code du module (version 20.0) et dans les sources citées
Sources
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/Sis
- Code du module : flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Code du module : flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- Code du module : flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cadena.py
- Code du module : flexigo_spain_verifactu 20.0 (aa2ea3d2): data/verifactu_error_catalogue.xml
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
