De casus: een inzageverzoek bij een administratiekantoor
Voorbeeld Fictief geval: het bedrijf en de cijfers zijn verzonnen om de werkwijze uit te leggen.
Asesoría Ribera, een voor dit voorbeeld verzonnen administratiekantoor, ontvangt het verzoek van iemand die wil weten welke gegevens van hem of haar voorkomen in de facturatie van een klant. De privacyverantwoordelijke van het kantoor werkt in Odoo met VeriFactu España (AEAT RRSIF Compliance) en moet die informatie uit de module halen.
De knop zit in de takken 17, 18, 19 en 20 van de module, gepubliceerd in Odoo Apps voor die vier versies. Wat volgt beschrijft de code van Odoo 20.0.

Hoe zij bij de knop komt
Het formulier opent via Verifactu / SIF › Privacy / GDPR › DSAR Wizard. Elk deel van het menu vraagt rechten en als je die niet hebt, zie je dat deel niet: Privacy / GDPR zien Privacy Officer en SIF Manager; Verifactu / SIF zien ook Accountant, Asesoría Operator en Auditor (read-only).
In het formulier hangt de knop van geen enkele voorwaarde in de weergave af: hij is zichtbaar in alle vier de versies. Haar stappen zijn deze:
- Open het menu en ga naar het formulier van de
DSAR Wizard. De velden van het verzoek staan in de groepRequest Details. - Kijk naar het veld
Company. Standaard staat daar het actieve bedrijf en er wordt alleen gezocht binnen het bedrijf dat daar staat. - Vul in
Data Subject NIF / Namehet NIF van de persoon of zijn of haar naam in. - Als het kantoor een dossiernummer hanteert, noteert zij dat in
Request Reference. - Klik op
Generate Access Export (art.15).
Het label van de knop verandert met de taal van Odoo. Met Odoo in het Spaans is het het label hierboven; met Odoo in het Catalaans Generar Exportació d'Accés (art.15).

Wat de knop doet, op volgorde
Zodra je klikt, doet de code dit, de een na de ander:
- Neemt de tekst in
Data Subject NIF / Name, haalt de spaties aan de uiteinden weg en zoekt ermee in het gekozen bedrijf. - Stelt het resultaat samen met de tekst die je invulde, de naam van het bedrijf en twee lijsten: de gevonden registraties en annuleringen.
- Bewaart dat resultaat als JSON-bestand in de wizard zelf, met de naam
dsar_access_export_gevolgd door de eerste twintig tekens van wat je invulde en de extensie.json. - Probeert daarnaast een PDF te genereren (hieronder wat de code doet als dat niet lukt).
- Legt een gebeurtenis vast (volgende sectie).
- Opent hetzelfde formulier van de wizard opnieuw in een pop-upvenster, met hetzelfde record.
De code beschrijft deze extractie als het lezen van de velden met persoonsgegevens zonder een record van de keten te wijzigen.
Wat hij zoekt en wat hij exporteert
| Blok | Waar hij zoekt | Welke gegevens hij haalt |
|---|---|---|
| Registraties | Identificatie of naam van de tegenpartij | Serienummer, uitgiftedatum, naam, type identificatie, identificatie en totaal |
| Annuleringen | Alleen de identificatie van de tegenpartij | Serienummer, uitgiftedatum en identificatie |
De overeenkomst is "bevat", zonder onderscheid tussen hoofd- en kleine letters. Als Asesoría Ribera slechts een stuk van een naam invult, komen alle registraties van dat bedrijf binnen waarvan de naam of identificatie dat stuk bevat. En als zij een naam invult, worden de annuleringen daar niet op gezocht, alleen op identificatie.
Wat er wordt vastgelegd
Na het genereren van het bestand maakt de knop een gebeurtenis aan in het gebeurtenissenregister van de module, voor het gekozen bedrijf. De gebeurtenis bevat datum en tijd, de gebruiker die op de knop klikte, een omschrijving met het ingevulde NIF of de ingevulde naam, het NIF of de naam en de referentie van het verzoek als context (de referentie blijft leeg als je haar niet invulde), een hash berekend over die gegevens en een volgnummer dat eigen is aan het bedrijf.
De referentie van het verzoek gaat mee naar de gebeurtenis; het JSON-bestand van de export bevat haar niet. En de volgorde is belangrijk: als het genereren van het bestand met een fout stopt, komt de code er niet aan toe de gebeurtenis vast te leggen.
Andere acties die gebeurtenissen achterlaten
De gebeurtenis van de knop is niet de enige die op deze manier wordt vastgelegd. Bij het opslaan van het formulier van een bedrijf wordt ook een gebeurtenis vastgelegd als de AEAT-omgeving, de SIF-verantwoordelijke of het VeriFactu-toepassingsgebied is gewijzigd. Daarnaast komen ook de standaardknop om een factuur te annuleren, die de module uitbreidt, en de geplande taak Verifactu: Clock Drift Check, die elk uur draait en bij installatie actief is, in datzelfde register terecht. Voor wat de module aan facturen toevoegt, zie dit artikel.
De PDF die de code probeert te bewaren
Naast de JSON probeert de code met dezelfde wizard een PDF te genereren en, als dat lukt, bewaart hij die met de naam dsar_access_export_ plus de eerste twintig tekens van het ingevulde en de extensie .pdf. Als dat genereren mislukt, vangt de code de fout op, noteert een waarschuwing in het serverlogboek en gaat verder met de JSON en de gebeurtenis.
Wat je van de casus leert
- Controleer het veld
Companyvoordat je klikt: de zoekopdracht beperkt zich daartoe. - Vul het volledige NIF in als je het hebt; een gedeeltelijke naam kan meer registraties opleveren dan verwacht, en annuleringen komen alleen via identificatie naar boven.
- Noteer de
Request Referenceals je wilt dat de gebeurtenis haar bevat: de geëxporteerde JSON bevat haar niet.
Hoe FlexigoTech helpt
FlexigoTech implementeert Odoo 17, 18, 19 en 20 en ontwikkelt connectoren en integraties op maat. Wil je nagaan wie de rechten van het privacymenu moet hebben, of de module aanpassen aan jullie proces, schrijf ons dan.
Lees verder
Gecontroleerd in de broncode van de module (versie 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigo_spain_verifactu 20.0 (1fdc980f): wizards/verifactu_dsar_wizard_views.xml
- Broncode van de module: flexigo_spain_verifactu 20.0 (1fdc980f): wizards/verifactu_dsar_wizard.py
- Broncode van de module: 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
