O que faz em cada passagem
A tarefa procura as cadeias ativas e, para cada uma, chama a verificação de integridade. Tudo o que é importante acontece dentro dessa verificação: recalcula a impressão digital de cada registo e compara-a com a que foi guardada. A impressão digital é um SHA-256 do registo encadeado com o anterior, e a AEAT recalcula-a por sua conta: se não coincidir, aceita o registo com um erro que é preciso corrigir.
A tarefa existe em todos os ramos publicados do módulo (17.0, 18.0, 19.0 e 20.0), que está publicado no Odoo Apps para essas quatro versões. Este esquema resume a tarefa e o menu a partir do qual se abrem as cadeias:

Pormenores que não se veem na ficha
Só revê as cadeias ativas, uma a uma
A tarefa não percorre todas as cadeias que existam: procura apenas as ativas e lança a verificação de cada uma em separado. Cada cadeia pertence a uma empresa. Na ficha de All Chain States (Asesoría) tens o campo Company para saber de qual se trata.
Lê a cadeia inteira em cada passagem
A verificação faz uma consulta que junta os registos de criação e os de anulação da empresa e ordena-os por número de registo. Depois percorre-os do princípio ao fim. O código não parte de um ponto intermédio: cada passagem começa pelo primeiro registo.
Recalcula cada impressão digital a partir do que está guardado
Para cada registo de criação, o código reconstrói a impressão digital com estes dados guardados: NIF do emitente, número de série, data de emissão, tipo de fatura (F1 se estiver vazio), quota total calculada a partir das bases tributáveis, montante total, impressão digital do registo anterior e data e hora de geração com o respetivo fuso horário. O primeiro registo parte de uma impressão digital anterior vazia.
O NIF do emitente usa-se sem o prefixo ES. Se a empresa tiver um NIF próprio para o Verifactu, o código prefere-o ao número de IVA geral. Uma alteração em qualquer um desses dados depois de gerar o registo faz com que a impressão digital recalculada deixe de coincidir com a guardada.
As anulações calculam-se com outras etiquetas
Os registos de anulação usam a sua própria fórmula: não levam tipo de fatura, quota nem montante, e as suas etiquetas são as da fatura anulada. O código admite ainda as anulações geradas antes da versão 1.3.4 do módulo, que foram calculadas com as etiquetas dos registos de criação: se a impressão digital guardada coincidir com esse cálculo antigo, dá-a por boa.
Pára na primeira rutura e avisa
Assim que uma impressão digital guardada não coincide com a recalculada, a verificação pára: não continua com os registos seguintes dessa cadeia. Devolve quantos registos tinha verificado até aí e o primeiro registo partido, com o seu número de registo, o seu número de série, a impressão digital esperada e a guardada.
Esse mesmo passo lança o aviso de rutura da cadeia para a empresa, com o número de registo e o número de série onde se partiu. Se a cadeia inteira coincidir, a verificação devolve que passou, juntamente com o total de registos verificados.
A frequência é uma vez por dia, e no Odoo 17 repete-se sem fim
A tarefa corre uma vez por dia e vem ativa ao instalar. No Odoo 17.0 está configurada, além disso, para se repetir sem fim.
Se parece que não faz nada
Antes de suspeitares da tarefa, revê isto:
- Existe alguma cadeia ativa? Se não houver nenhuma, a procura não devolve nada e não há nada a verificar.
- A tarefa continua ativa? Vem ativa ao instalar, por isso, se não corre, confirma que continua ativa.
- O que esperar de uma passagem correta? A tarefa limita-se a chamar a verificação de cada cadeia, e uma cadeia íntegra devolve que passou com o seu total de registos verificados. Uma rutura é o que lança o aviso de rutura da cadeia.
- Vês o menu? As fichas de cada cadeia abrem-se a partir de
Verifactu / SIF › Compliance Records › Chain State. Cada troço pede permissões diferentes.

As permissões do menu, troço a troço
Se não tens a permissão de um troço, não vês esse troço. Estas são as que cada um pede:
| Troço do menu | Permissões que o mostram |
|---|---|
Verifactu / SIF | Accountant, Asesoría Operator, Auditor (read-only), Privacy Officer, SIF Manager |
Compliance Records | Accountant, Auditor (read-only), SIF Manager |
Chain State | Auditor (read-only), SIF Manager |
Com apenas a permissão Accountant veem-se os dois primeiros troços, mas não Chain State. Se alguém disser que não encontra o menu, vê primeiro as suas permissões.
Mais leituras e ajuda
Se estás a implementar o Odoo e queres que o VeriFactu se ajuste à tua faturação, a FlexigoTech implementa o Odoo 17, 18, 19 e 20 e desenvolve conectores e integrações por medida. Podes ver o módulo na sua ficha do Odoo Apps.
Continue a ler
Verificado no código do módulo (versão 17.0 e 20.0) e nas fontes indicadas
Fontes
- Código do módulo: flexigo_spain_verifactu 20.0 (1fdc980f): data/verifactu_crons.xml
- Código do módulo: flexigo_spain_verifactu 17.0 (8d43d727): data/verifactu_crons.xml
- Código do módulo: flexigo_spain_verifactu 20.0 (1fdc980f): models/verifactu_cadena.py
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Veri-Factu_
- apps.odoo.com/apps/modules/20.0/flexigo_spain_verifactu
- flexigotech.com/en/services.html
