O campo e o que a AEAT verifica
O campo chama-se FechaHoraHusoGenRegistro e guarda a data, a hora e o fuso horário do momento em que o sistema gerou o registo, na forma AAAA-MM-DDThh:mm:ss mais o desfasamento horário. O documento de validações da AEAT diz que tem de ser menor ou igual à data do sistema da AEAT, admitindo uma margem de erro. Se a ultrapassar, a AEAT devolve um aviso sem rejeição.
O texto do 2004 na lista da AEAT é «El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de:» e termina aí: a lista não publica quantos segundos ou minutos tem essa margem.

Os quatro códigos deste campo
| Código | Texto da AEAT | Efeito |
|---|---|---|
| 2004 | El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: | Aceite; a AEAT não pede correção. |
| 1243 | Error técnico al obtener el cálculo de la fecha del huso horario. | Rejeita o registo por uma falha técnica da AEAT. |
| 1244 | El campo FechaHoraHusoGenRegistro tiene un formato incorrecto. | Rejeita o registo. |
| 1268 | La longitud del campo FechaHoraHusoGenRegistro no cumple con las especificaciones. | Rejeita o registo. |
Na sua lista de erros admissíveis, a AEAT marca este caso como um dos dois que não precisam de correção. O outro é a ClaveRegimen vazia com o imposto IPSI.
De onde o Odoo tira a hora
O módulo toma o momento em que gerou o registo de faturação, ao publicar a fatura, com o seu desfasamento horário. Esse momento fica guardado e não pode ser alterado depois, tal como a impressão digital, porque faz parte do que fica encadeado. O formato é sempre montado da mesma forma pelo próprio módulo, por isso um 1244 ou um 1268 com um envio do nosso módulo não deveria aparecer: se aparecer, envie-nos.
Para o 2004, a pergunta é se o relógio do servidor do Odoo estava adiantado quando a fatura foi publicada. O módulo tem uma ação agendada, Verifactu: Clock Drift Check, que a cada 1 hora compara a hora do Odoo com a da sua base de dados PostgreSQL, e um botão para o fazer quando quiser. Não a compara com nenhuma hora externa: se o Odoo e a base de dados estiverem na mesma máquina, ou ambos adiantados, não avisa. A hora real é verificada contra um servidor NTP.

O que fazer em cada caso
- Com um 2004, nada sobre a fatura: está registada. Peça a quem administra o servidor que compare a sua hora com um servidor NTP e a sincronize se estiver adiantada. O Check Clock Drift não serve para isto: só compara o Odoo com a sua base de dados.
- Com um 1243, aguarde: é um erro técnico do lado da AEAT e a fila já volta a tentar sozinha, com esperas de 2 minutos a 12 horas, até à sexta tentativa.
- Com um 1244 ou um 1268, escreva-nos para comercial@flexigobe.com com a resposta do envio.
No Odoo, um 2004 deixa o registo como «Aceptado con errores (subsanar)», a mesma etiqueta de todos os códigos 2xxx. Para este código em concreto, a AEAT diz que não é preciso corrigir: pode deixá-lo como está.
Um relógio atrasado dá erro?
A regra da AEAT só verifica se a sua hora é maior do que a dela mais a margem. Um registo com a hora atrasada não dispara este controlo.
Continue a ler
Verificado no código do módulo (versão 20.0) e nas fontes indicadas
Fontes
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- Código do módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Código do módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- Código do módulo: 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
- Código do módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cadena.py
