O caso: um pedido de acesso numa gestoria
Exemplo Caso ilustrativo: a empresa e os seus dados são inventados para explicar o fluxo.
Asesoría Ribera, uma gestoria inventada para este exemplo, recebe o pedido de uma pessoa que quer saber que dados seus constam da faturação de um cliente. A responsável de privacidade da gestoria trabalha no Odoo com VeriFactu España (AEAT RRSIF Compliance) e tem de tirar essa informação do módulo.
O botão existe nas ramas 17, 18, 19 e 20 do módulo, publicado no Odoo Apps para essas quatro versões. O que se segue descreve o código do Odoo 20.0.

Como chega ela ao botão
A ficha abre-se a partir de Verifactu / SIF › Privacy / GDPR › DSAR Wizard. Cada troço do menu exige permissões e, se não tiver uma, não vê esse troço: Privacy / GDPR veem-no Privacy Officer e SIF Manager; Verifactu / SIF veem-no também Accountant, Asesoría Operator e Auditor (read-only).
Uma vez na ficha, o botão não depende de nenhuma condição da vista: vê-se nas quatro versões. Os passos dela são estes:
- Abre o menu e entra na ficha do
DSAR Wizard. Os campos do pedido estão no grupoRequest Details. - Olha para o campo
Company. Por defeito traz a empresa ativa, e a pesquisa faz-se apenas dentro da empresa que figurar aí. - Escreve em
Data Subject NIF / Nameo NIF da pessoa ou o seu nome. - Se a gestoria tiver um número de processo, anota-o em
Request Reference. - Carrega em
Generate Access Export (art.15).
O rótulo do botão muda com o idioma do Odoo. Com o Odoo em castelhano é o de cima; com o Odoo em catalão, Generar Exportació d'Accés (art.15).

O que faz o botão, por ordem
Ao carregar nele, o código faz isto, um passo após o outro:
- Pega no texto escrito em
Data Subject NIF / Name, tira-lhe os espaços das pontas e pesquisa com ele na empresa escolhida. - Monta o resultado, que leva o texto que escreveste, o nome da empresa e duas listas: os registos e as anulações encontrados.
- Guarda esse resultado como ficheiro JSON no próprio assistente, com o nome
dsar_access_export_seguido dos primeiros vinte carateres do que escreveste e a extensão.json. - Tenta gerar ainda um PDF (mais abaixo, o que o código faz se não correr bem).
- Regista um evento (secção seguinte).
- Volta a abrir a mesma ficha do assistente numa janela emergente, com o mesmo registo.
O código descreve esta extração como uma leitura dos campos de dados pessoais sem alterar nenhum registo da cadeia.
O que procura e o que exporta
| Bloco | Onde procura | Que dados extrai |
|---|---|---|
| Registos | Identificador ou nome da contraparte | Número de série, data de emissão, nome, tipo de identificador, identificador e total |
| Anulações | Apenas o identificador da contraparte | Número de série, data de emissão e identificador |
A coincidência é «contém», sem distinguir maiúsculas de minúsculas. Se a Asesoría Ribera escrever só um pedaço de um nome, entram todos os registos dessa empresa cujo nome ou identificador contenha esse pedaço. E se escrever um nome, as anulações não se procuram por ele, só por identificador.
O que fica registado
Depois de gerar o ficheiro, o botão cria um evento no registo de eventos do módulo, para a empresa escolhida. O evento leva a data e hora, o utilizador que carregou no botão, uma descrição com o NIF ou nome escrito, o NIF ou nome e a referência do pedido como contexto (a referência fica vazia se não a preencheste), uma impressão digital calculada sobre esses dados e um número de sequência próprio da empresa.
A referência do pedido viaja para o evento; o ficheiro JSON da exportação não a inclui. E a ordem importa: se a geração do ficheiro parar com um erro, o código não chega a registar o evento.
Outras ações que deixam eventos
O evento do botão não é o único que se regista desta forma. Ao guardar a ficha de uma empresa, se tiver sido alterado o ambiente da AEAT, o responsável do SIF ou o âmbito do VeriFactu, também fica um evento. Além disso, o botão padrão de cancelar uma fatura, que o módulo alarga, e a tarefa agendada Verifactu: Clock Drift Check, que corre a cada hora e está ativa ao instalar, chegam a esse mesmo registo. Para o que o módulo acrescenta às faturas, vê este artigo.
O PDF que o código tenta guardar
Além do JSON, o código tenta gerar um PDF com o mesmo assistente e, se conseguir, guarda-o com o nome dsar_access_export_ mais os primeiros vinte carateres do que foi escrito e a extensão .pdf. Se essa geração falhar, o código captura o erro, anota um aviso no registo do servidor e segue com o JSON e o evento.
O que aprender com o caso
- Confirma o campo
Companyantes de carregar: a pesquisa limita-se a ela. - Escreve o NIF completo quando o tiveres; um nome parcial pode trazer mais registos do que o esperado, e as anulações só saem por identificador.
- Anota a
Request Referencese quiseres que o evento a leve: o JSON exportado não a inclui.
Como a FlexigoTech ajuda
A FlexigoTech implementa Odoo 17, 18, 19 e 20 e desenvolve conectores e integrações à medida. Se quiseres rever quem deve ter as permissões do menu de privacidade, ou ajustar o módulo ao vosso processo, escreve-nos.
Continue a ler
Verificado no código do módulo (versão 20.0) e nas fontes indicadas
Fontes
- Código do módulo: flexigo_spain_verifactu 20.0 (1fdc980f): wizards/verifactu_dsar_wizard_views.xml
- Código do módulo: flexigo_spain_verifactu 20.0 (1fdc980f): wizards/verifactu_dsar_wizard.py
- Código do módulo: flexigo_spain_verifactu 20.0 (1fdc980f): models/res_company.py
- apps.odoo.com/apps/modules/20.0/flexigo_spain_verifactu
- flexigotech.com/en/services.html
