Document Automation
Doel van de opleiding
Met behulp van deze tutorial leer je stap voor stap hoe je document templates bouwt in Innoverius met het oog op het snel en correct genereren van juridische documenten zoals brieven, contracten of rapporten.
Na afloop kan je:
Zelf templates opmaken en koppelen aan Innoverius modellen
Automatisch documenten genereren vanuit bestaande gegevens in Innoverius
Dynamische logica toevoegen via Jinja (zoals variabelen, voorwaarden en herhalingen)
Extra vragen definiëren bij het genereren van documenten
Custom velden toevoegen via Odoo Studio en gebruiken in je templates
Functioneel overzicht
Wat is een template?
Een template is een blauwdruk voor een juridisch document en bestaat uit twee belangrijke onderdelen. In eerste instantie bevat een template een .docx file met:
- de layout (zoals opmaak, lettertypes en titels),
- de statische tekst (vaste inhoud die niet verandert),
- én de dynamische logica (zoals Jinja-code om variabele inhoud te tonen).
Daarnaast is een template ook steeds gekoppeld aan een specifiek datamodel, bijvoorbeeld het dossier of de partij. Dit model bepaalt welke gegevens binnen Innoverius gebruikt kunnen worden in de template.

Hoe genereer je een document?
Je kan nieuwe documenten genereren op basis van een template op twee manieren. Een eerste manier is via de Innoverius Document Automation app:
- Open de Innoverius Document Automation app
- Zoek de gewenste template.
- Klik op “Generate Document”.
- Selecteer het juiste record van het bijhorende model (bijvoorbeeld een dossier of partij).

- Ga naar de Innoverius app waar het gewenst record staat (bijvoorbeeld een dossier of partij).
- Open het gewenste record.
- Klik op “Action” > “Generate Document”.
- Kies de juiste template.

Het document wordt automatisch gegenereerd op basis van de template, gekozen gegevens en eventueel aangevulde gebruikersinput.
Hoe werken met Jinja?
Om dynamische inhoud in je documenten te integreren, maakt Innoverius gebruik van de Jinja templating taal. Jinja is een open standaard waarmee je ondere andere variabelen, conditionele logica en herhalingen rechtstreeks in je templates kan opnemen.
Variabelen
Gebruik dubbele accolades {{ }} om variabelen in te voegen:
{{ partner_id.name }}Deze syntax wordt vervangen door de waarde van partner_id.naam.
Conditionele logica
Gebruik {% if %} en {% endif %} om tekst conditioneel weer te geven:
{% if partner_id.is_company %}
Deze partij is een rechtspersoon.
{% elif %}
Deze partij is een natuurlijke persoon.
{% endif %}Hiermee bepaal je welke tekst zichtbaar is op basis van de eigenschappen van de gegevens.
Herhalingen
Gebruik {% for %} en {% endfor %} om over lijsten te itereren:
{% for partij in party_ids %}
- {{ partij.name }} met referentie {{ partij.reference }}
{% endfor %}Meer informatie
Voor een uitgebreide uitleg en voorbeelden, raadpleeg de officiële documentatie van python-docx-template:
Welcome to python-docx-template’s documentation! — python-docx-template 0.20.x documentation
Hoe velden gebruiken?
Om informatie uit jouw gegevens automatisch te laten invullen, dien je precies te weten wat de naam is van de gewenste velden binnen een Innoverius datamodel (zoals bijvoorbeeld dossier of partij). Gelukkig zijn er twee eenvoudige manieren om dit te ontdekken.
Een eerste manier is via de smartbutton "Velden" wanneer je een template opent in de Innoverius Document Automation app. Hier krijg je een overzicht van alle beschikbare velden binnen het gekoppelde Innoverius model:
Weergavenaam van het veld
De technische naam van het veld die gebruikt kan worden met Jinja (zoals bijvoorbeeld case_id.name)
Geneste velden tot meerdere niveaus diep
Deze methode helpt je om een overzicht te krijgen van alle beschikbare veldnamen die je kan gebruiken in je template met Jinja.

Een tweede manier is via de debug modus in eender welke Innoverius app waarvoor een template gedefineerd is. Volg hiervoor deze stappen:
Zet Odoo in debug-modus (via het ontwikkelaarsmenu of door ?debug=1 toe te voegen aan de URL)
Open een record (bijvoorbeeld een dossier)
Beweeg je muis over het vraagteken naast een veld in het formulier
Je ziet nu een tooltip met de technische naam van het veld (zoals bijvoorbeeld name)
Deze methode is ideaal als je snel wil achterhalen hoe een veld exact heet binnen Innoverius.

Hoe vragen/antwoorden gebruiken?
Naast gegevens uit Innoverius kun je in een template ook extra informatie opvragen via vragen. Dat is handig wanneer bepaalde gegevens niet in het Innoverius model zitten, maar je ze wel nodig hebt in het gegenereerde document.
Voor elke template kun je via de smartbutton "Vragen" één of meerdere vragen definiëren die worden gesteld op het moment dat je een document genereert. Deze vragen kunnen verschillende soorten antwoorden opleveren:
- Ja/Nee - Bijv. “Wenst u dat deze clausule wordt opgenomen?”
- Tekstveld - Bijv. “Wat is het gewenste uurtarief?”
- Keuze - Bijv. "Welke soort brief wordt verstuurd?"
- Handtekening - Bijv. “Wat is de handtekening van ondergetekende?”
- Datumveld - Bijv. “Op welke datum wordt deze overeenkomst ondertekend?

Sommige vragen kunnen conditioneel zijn. Dat betekent dat een bepaalde vraag alleen verschijnt als het antwoord op een vorige vraag "ja" is. Bijvoorbeeld:
Vraag 1: “Werkt de dienstverlener exclusief voor de klant?” → Ja/Nee
Vraag 2: (verschijnt alleen als je “Ja” antwoordt) “Wat is de duur van de exclusiviteit?”

Het antwoord op een vraag kun je gebruiken in je template met Jinja, net zoals je dat doet met velden uit een Innoverius model.
Gebruik daarvoor de naam van de vraag. Bijvoorbeeld, als je een vraag hebt met naam "geheimhouding_tekst", dan voeg je dit in de template in als:
{{ geheimhouding_tekst }}Of voor een ja/nee-vraag met naam "bevat_geheimhouding":
{% if bevat_geheimhouding %}
De volgende clausule is van toepassing: ...
{% endif %}Op deze manier kun je je documenten nog flexibeler maken - deels gebaseerd op Innoverius gegevens, deels op input van de gebruiker tijdens het genereren.
Hoe systeemvelden gebruiken?
- today - De datum van generatie (volgens de taalinstelling)
Voorbeeldgebruik: {{ today }} - now - De datum én tijd van generatie
Voorbeeldgebruik: {{ now }} - user - De huidige Innoverius gebruiker (als record)
Voorbeeldgebruik: {{ user.name }} - company - Het actieve bedrijf van de gebruiker (als record)
Voorbeeldgebruik: {{ company.name }}
Hoe custom velden gebruiken?
Wil je extra informatie opnemen in je template die nog niet standaard aanwezig is in het model (zoals in een dossier)? Geen probleem! Met Odoo Studio kun je eenvoudig eigen velden toevoegen:
Open de Innoverius app waarin je een veld wil toevoegen (bijvoorbeeld "Dossiers").
Klik rechtsboven op de knop Studio (het gereedschapsicoon).
Sleep het gewenste type veld (tekst, datum, checkbox, …) naar het formulier.
Geef het veld een duidelijke label én een technische naam (bijvoorbeeld x_extra_opmerking).
De technische naam van het veld (vaak beginnend met x_) heb je nodig om het veld in je template te gebruiken. Zodra het veld is toegevoegd, kun je het opnemen in je template via Jinja:
{{ dossier.x_extra_opmerking }}Of als het veld bijvoorbeeld een ja/nee-keuze is:
{% if dossier.x_bevat_clausule %}
De clausule is van toepassing.
{% endif %}Odoo Studio maakt het mogelijk om je datamodel helemaal af te stemmen op jouw noden, zonder code. Je bepaalt zelf welke extra velden beschikbaar zijn voor jouw templates.

Hoe snippets gebruiken?
Naast volledige templates kun je in Innoverius ook werken met snippets. Snippets zijn herbruikbare .docx documentblokken die je kan invoegen in meerdere templates. Ze zijn bedoeld voor vaste, terugkerende onderdelen van een document.
Een snippet is een afzonderlijk .docx bestand. Je maakt dit bestand op in Word, met de gewenste vaste tekst en opmaak. Vervolgens maak je in de Innoverius Document Automation app een nieuw snippet aan en upload je het .docx bestand. Elk snippet krijgt een technische naam.
In je template voeg je het snippet in met de volgende syntax:
{{p snippet_name}}Bijvoorbeeld:
{{p ondertekening_advocaat}}Bij het genereren van het document wordt het volledige .docx snippet op die plaats ingevoegd.
Snippets worden verwerkt binnen dezelfde Jinja-context als de hoofdtemplate. Dat betekent dat je in een snippet ook variabelen en logica kan gebruiken, net zoals in een gewone template.
Snippets gebruik je wanneer een bepaald documentblok in meerdere templates terugkomt en je dit centraal wil beheren. Als je het snippet aanpast, wordt de wijziging automatisch toegepast in alle templates waarin het wordt gebruikt.
Praktische oefeningen
Overeenkomst tussen advocaat en cliënt
Doel: Genereer een opdrachtbrief tussen het kantoor en cliënt.
Maak een template voor databasemodel "Partij" met file:
Overzicht partijen
Doel: Genereer een overzicht van de partijen in een dossier.
Maak een template voor databasemodel "Dossier" met file:
Individuele brief
Doel: Genereer een brief naar een selecteerde partij.
Maak een template voor databasemodel "Partij" met vragen:
- Wat is het onderwerp? - Naam: onderwerp, Type: Tekst
- Wat is de handtekening van ondergetekende? - Naam: handtekening, Type: Handtekening
en met file:
Collectieve brief
Doel: Genereer een brief naar alle partijen met bepaalde categorie.
Maak een template voor databasemodel "Dossier" met vragen:
- Welke partijen zijn geadresseerd? - Naam: partijcategorie, Type: Keuze, Selectiekeuzes: "Cliënt" of "Advocaat tegenpartij" (hou er rekening mee dat deze selectiekeuzes letterlijk dienen overeen te komen met partijcategorieën in dit specifieke geval)
- Wat is het onderwerp? - Naam: onderwerp, Type: Tekst
- Wat is de handtekening van ondergetekende? - Naam: handtekening, Type: Handtekening
en met file:
NB: Voor deze template is het vereist dat er ten minste twee partijen zijn met de opgegeven partijcategorie.
Brief naar keuze
Doel: Genereer een brief naar keuze gericht aan cliënt
Maak een template voor databasemodel "Dossier" met vragen:
- Welke type brief? - Naam: type, Type: Keuze, Selectiekeuzes: "Verzoek tot aanvulling persoonsgegevens", "Bevestiging van zittingsdatum" en "Bevestiging van neerlegging stukken"
- Wat is de handtekening van ondergetekende? - Naam: handtekening, Type: Handtekening
en met file:
NB: Voor deze template is het vereist dat er ten minste één partij is met partijcategorie "Cliënt"
Dienstverleningsovereenkomst
Doel: Genereer een dienstverleningsovereenkomst tussen "Opdrachtgever" en "Dienstverlener".
Maak een template voor databasemodel "Dossier" met vragen:
- Wanneer vangt de opdracht van de dienstverlener aan? - Naam: aanvang, Type: Datum
- Wat is het uurtarief van de dienstverlener? - Naam: prijs, Type: Tekst
- Behoort de intellectuele eigendom toe aan de klant? - Naam: intellectuele_eigendom, Type: Ja/Nee
- Werkt de dienstverlener exclusief voor de klant? - Naam: exclusiviteit, Type: Ja/Nee
- Wat is de datum van de overeenkomst? - Naam: datum, Type: Datum
- Wat is de plaats van de overeenkomst? - Naam: plaats, Type: Tekst
- Wat is de opdracht van de dienstverlener? - Naam: opdracht, Type: Tekst
en met file:
Let op: Voor deze template is het vereist dat er twee partijen zijn met als partijcategorieën “Opdrachtgever” en “Dienstverlener”.
Schuldinvorderingsrapport
Doel: Genereer een overzicht van de schulden, betalingen en saldo's binnen een schuldinvordering.
Maak een template aan voor databasemodel "Schuldinvordering" met file:
Stappenplan voor je eigen systeem
Bepaal het doel van je document
Welk type document wil je automatisch genereren?
Denk aan een contract, brief, verslag of rapport.
Op welk model binnen Innoverius is dit document gebaseerd?
Bijvoorbeeld: dossier, partij, schuldinvordering, etc.
Stel de inhoud op in Word
Gebruik een bestaand document of start vanaf een blanco .docx
Zorg voor een duidelijke layout en structuur
Noteer welke onderdelen dynamisch moeten worden ingevuld (zoals namen, datums of clausules)
Voeg Jinja logica toe
Vervang vaste gegevens door variabelen (zoals {{ dossier.name }})
Voeg conditionele tekst toe met {% if %}, {% endif %}
Gebruik herhalingen voor lijsten met {% for %} en {% endfor %}
Gebruik systeemvelden zoals {{ today }} of {{ user.name }}
Definieer bijkomende vragen (indien nodig)
Stel jezelf de vraag: Welke informatie is nodig bij generatie, maar zit niet in het datamodel?
Voeg deze vragen toe in de template (type: tekst, ja/nee, handtekening, datum)
Geef elke vraag een unieke naam zodat je ze in de template kan gebruiken met {{ vraag_naam }}
Gebruik Odoo Studio voor custom velden (indien nodig)
Heb je gegevens nodig die (nog) niet bestaan in het model? Voeg dan velden toe via Studio.
Kies het juiste veldtype (tekst, datum, checkbox, etc.)
Geef het veld een duidelijke technische naam (zoals x_rolnummer)
Gebruik deze naam in je template: {{ x_rolnummer }}
Maak een nieuwe template aan in Document Automation
Ga naar de Document Automation app
Klik op “Nieuwe template”
Koppel het juiste model (bv. Dossier)
Upload je .docx-bestand
Voeg indien nodig vragen toe via de smartbutton “Vragen”
Test het genereren van je document
Open een record in het gekoppelde model (bv. een specifiek dossier)
Klik op “Acties” > “Generate Document”
Selecteer je template en doorloop de vragen
Controleer of de gegenereerde .docx correct is ingevuld
Gebruik AI als slimme assistent
Je kan Innoverius AI gebruiken om het opmaken van templates sneller en eenvoudiger te maken. Dankzij de ingebouwde AI-integratie in Word werk je rechtstreeks in je document, zonder omslachtige stappen.
Met de Innoverius Word AI Add-in kan je:
Templates openen, bewerken en opnieuw opslaan - rechtstreeks vanuit Word
Hulp vragen bij het schrijven of herschrijven van juridische clausules
AI gebruiken om Jinja-logica te genereren, controleren of optimaliseren
Suggesties laten doen voor vragenstructuur of template-inhoud
Zo combineer je het gebruiksgemak van Word met de kracht van AI - zowel technisch als juridisch. Dit maakt het opstellen van slimme templates niet alleen sneller, maar ook consistenter en kwalitatiever.