Inhoudsopgave
Nieuwe template en basisinformatie
Werking samenvoegvelden (merge tags)
Gebruik van gerelateerde records
Overwegingen bij gerelateerde records
Velden met opmaak (RTF velden)
Waar vandaan genereer ik een contract?
Hoe voeg ik tags toe voor ondertekening (bijv. plaats van de handtekening)?
Wat zijn de meest gebruikte tags?
Algemeen
Binnen Tigris is het mogelijk om templates te maken die gebruikt kunnen worden om documenten te genereren. De standaardfunctionaliteit ondersteund de volgende objecten:
- Plaatsing
- Contract
- Persoon
- Opdrachtgever
Voor deze objecten zijn knoppen beschikbaar om documenten te kunnen genereren, en deze objecten kunnen gekozen worden in de merge tag generator.
Het is ook mogelijk om documenten vanuit andere objecten te genereren, maar hiervoor is geen standaardondersteuning. Dien eventueel een consultancyticket als je hier gebruik van wil maken.
Hieronder een beschrijving hoe een template gemaakt en gebruikt kan worden.
Vereisten:
Op bedrijfsniveau moet er een koppeling opgezet zijn met een Google account, om bestanden op Google Drive te kunnen opslaan. Neem contact op met uw Tigris contactpersoon als dit nog niet is gedaan.
Verder moet degene die templates maakt ingelogd zijn bij het gekoppelde Google account op het moment van maken of bewerken van de templates. Om een template te kunnen gebruiken is het niet noodzakelijk om ingelogd te zijn.
Aanmaken template
Nieuwe template en basisinformatie
1. Ga naar Templates en klik op nieuw
2. Geef de gewenste data in voor de template. Deze data wordt gekopieerd naar het document dat gemaakt wordt op basis van de template
- Template naam: Deze zal als standaardnaam worden gebruikt voor het document dat gegenereerd wordt op basis van deze template
- Documenttype: Hiermee kan worden aangegeven wat voor type document
- Contracttype: Geef optioneel aan wat voor type contract het betreft. Als hier een contracttype wordt gekozen, dan wordt er bij het genereren van een contract vanaf de plaatsing automatisch gefilterd zodat je alleen het juiste contracttype kan selecteren
- Output format: Kies hier voor het gewenste output format. Standaard staat dit op PDF, maar het is bijvoorbeeld ook mogelijk om een DOCX bestand te genereren
- Taal: Geef aan in welke taal het document is, zodat hierop gefilterd kan worden bij het selecteren van een template
- Entiteit: Als het document gekoppeld wordt aan een plaatsing of aan een contract, kan er ook een Entiteit worden toegevoegd. De lijst met beschikbare templates wordt vervolgens terug gefilterd op basis van de Entiteit op de template en de Entiteit op het contract of de plaatsing.
3. Klik op opslaan om de metagegevens van de template op te slaan
4. In het scherm wat nu opent, kan er een nieuw Google document worden gemaakt, die als basis dient voor de te genereren documenten
5. Er is nu een document beschikbaar die naar wens kan worden ingericht
Werking samenvoegvelden (merge tags)
6. Op de merge tag generator rechts moet worden gekozen waarvandaan de template kan worden gebruikt. Een template is exclusief beschikbaar vanaf 1 object. Het is dus belangrijk om die hier te kiezen, en deze keuze dan op te slaan. Op basis van deze keuze komt een template beschikbaar bij het juiste object.
LET OP: Vergeet het object niet op te slaan ()! Als het object niet wordt opgeslagen, werken de gebruikte mergetags in het document niet bij het genereren van het document
7. Hierna kunnen velden van dit object worden gekozen, zodat je kunt zien welke tag hiervoor in het document moet worden ingevoegd. Is het veld een opzoekrelatie (bijv. de opdrachtgever), dan kun je het veld selecteren met '--> Name' erachter, om zo velden van dit bovenliggende record te gebruiken.
Als er een opzoekrelatie is geselecteerd, dan zie je dit doordat dit object boven het resultaat wordt weergegeven. De velden die je dan selecteert, zijn dus geen velden van de plaatsing zelf, maar van het bovenliggende object (in onderstaand geval de Opdrachtgever)
8. Om weer velden van de plaatsing zelf te selecteren, kan het selecteerde bovenliggende object worden gesloten door op het kruisje achter de naam te klikken.
Gebruik van gerelateerde records
Naast de mogelijkheid om velden direct vanaf het object, of vanaf bovenliggende objecten te selecteren, is het ook mogelijk om gerelateerde (child) records te gebruiken bij het genereren van documenten.
Deze optie is beschikbaar in de merge tag generator, onder de optie om het Object en een veld te selecteren:
Je kunt een gerelateerde lijst selecteren van verschillende niveaus:
-
Een gerelateerde lijst die direct gelinkt is aan het object waarvandaan je het document gaat genereren. Voorbeeld: Je genereert het document op de plaatsing, en je wilt de vergoedingen (Onkostensoorten) gebruiken in. Onkostensoorten zijn direct gerelateerd aan de plaatsing, dus je kunt deze selecteren op het moment dat je als object de Plaatsing hebt geselecteerd, maar geen bovenliggend veld:
-
Een gerelateerde lijst die gelinkt is aan een bovenliggend record. Voorbeeld: Je wilt de werkervaringen van een werknemer opnemen in een document wat je genereert vanaf de plaatsing. De werkervaringen zijn niet direct aan de plaatsing gerelateerd, maar aan de werknemer. Je selecteert dan als veld eerst de bovenliggende werknemer:
vervolgens krijg je de gerelateerde lijsten te zien die op de werknemer beschikbaar zijn, en kun je dus kiezen voor de werkervaringen:
Als je een gerelateerde lijst hebt gekozen krijg je de beschikbare opties te zien:
- Geselecteerde velden: Hiermee kun je kiezen welke velden je wilt weergeven in het document. Alle (custom) velden van een object zijn beschikbaar
- Limiet: Hiermee kun je aangeven hoeveel records je maximaal wilt weergeven. Standaard staat deze op maximaal 50.
- Volgorde: Hiermee kun je bepalen op welke volgorde de records getoond moeten worden. Bijvoorbeeld de nieuwste als eerst (Aanmaakdatum, aflopend sorteren 9->0 )
- Filters: Hier kun je de selectie bepalen van welke records er meegenomen moeten worden bij het gegeneerd van een document. Op veel objecten is het veld Gebruik bij het genereren van documenten te vinden, wat handig als filteroptie gebruikt kan worden.
Voorbeeld
In onderstaand voorbeeld werken we de opties verder uit. In dit voorbeeld willen we alle gerelateerde Tariefregels weergeven van de huidige plaatsing.
Tariefregels zijn niet rechtstreeks aan de plaatsing gerelateerd, maar aan de bovenliggende Tariefbundel. Als eerste selecteren we dus het veld Tariefbundel dat verwijst naar het bovenliggende record (dus met --> Name erachter)
Omdat we nu de Tariefbundel hebben geselecteerd, zien we alle gerelateerde records van de Tariefbundel. Hieruit kiezen we de Tariefregels:
Als de juiste gerelateerde lijst is gekozen (Tariefregels in dit geval), dan zie je de 4 opties verschijnen waarmee je de juiste query (tag voor in de template) kunt opbouwen:
We willen hier de volgende velden tonen:
- Naam
- Uitleg
- ImportId
Dus selecteren we deze onder Geselecteerde velden:
We willen alle regels tonen waarbij we hebben aangegeven dat we deze willen gebruiken voor het genereren van documenten. We voegen dus een filter toe op dit veld. Ook hier kan weer ieder veld gebruikt worden om op te filteren:
Omdat de volgorde niet uitmaakt, voeren we hier niet in.
Onderaan is ondertussen de output (query) verschenen die we nodig hebben in de template. Dat ziet er nu als volgt uit:
We gaan bovenstaande query nu 1-op-1 doorzetten in de template. Je kunt deze kopieren via de knop aan de rechterzijde
We zetten het resultaat onder een kopje Gerelateerde lijst met tariefregels in de template, dus dat ziet dat er dan als volgt uit:
We genereren nu een document op de plaatsing die gelinkt is aan een Tariefbundel met 2 Tariefregels. Omdat er extra data opgehaald, geparst en ingevoegd moet worden, duurt het genereren wat langer, en worden er dus ook extra stappen getoond tijdens het genereren:
Als het genereren klaar is, ziet de output van onze query er als volgt uit in het document:
Zoals te zien is, wordt iedere gerelateerde record wordt op een regel gezet. Maar, alle data wordt direct achter elkaar gezet, zonder meta-informatie. Hierdoor is dit minder overzichtelijk.
Daarom is het aan te raden om een lijstje te maken, of de data in een tabelletje te zetten. Dit kan door opmaak toe te voegen aan de items in de query. Je voegt dit altijd toe tussen de tags {$REPEAT} & {$END_LIST}
- lijst: Toevoegen van een bulletpoint voor het eerste {$ITEM} zorgt ervoor dat iedere gerelateerde record netjes op een nieuwe regel met daarvoor een bulletpoint komt
- tabel: Toevoegen van 1 tabelrij waarin ieder {$ITEM} in een cell van de tabel gezet wordt, zorgt ervoor dat je een complete tabel krijgt met alle gerelateerde records
Template met lijst
Resultaat in document
Template met tabel
Resultaat in document
Overwegingen bij gerelateerde records
- Je kunt alleen velden weergeven die daadwerkelijk vastliggen op een gerelateerd record, maar geen informatie van bovenliggende records. Voorbeeld: Op een Tariefregel ligt de opzoekrelatie naar een Uursoort vast. Als dit veld toevoegt wordt, krijg je het Id terug, maar de naam van de Uursoort kun je niet ophalen
Als je deze informatie wel nodig hebt, kun je hier 'omheen' werken door een formuleveld te maken op het record waar de benodigde informatie in wordt weergegeven. Hiermee komt deze informatie wel beschikbaar op het record zelf, en kan dit dus ook worden gebruikt bij het genereren van documenten - Je kunt meerdere filters toevoegen, maar geen filterlogica. Bij meerdere filters wordt er altijd AND gebruikt, en dus moeten alle filters waar zijn om een record te tonen
- Je kunt geen relatieve filtering gebruiken. Als je dus bijvoorbeeld op een datum filtert, dan moet je harde datum gebruiken, en kun je dus niet filteren op bijvoorbeeld Aanmaakdatum = VANDAAG
Je kunt hier ook omheen werken door een formuleveld (checkbox) te maken waar wel relatieve filtering in de formule wordt toegepast -
Als je een header wilt toevoegen bij de tabel, dan moet je hier een losse rij voor toevoegen die je voor de query zet, zodat de header maar 1x getoond wordt. Er zal wel altijd een witregel tussen de header en regels van de tabel zitten. Voorbeeld
Template Gegenereerd document
Ondersteunde veldtypen
Je kunt ieder veldtype gebruiken als merge tag, maar er zijn enkele type velden waar aandachtspunten voor zijn. Voor sommige moet je een formuleveld gebruiken om deze correct weer te geven (bijvoorbeeld datum- of booleanvelden) of kun je niet alle functies gebruiken (RTF)
Datumvelden
Datumvelden worden standaard in amerikaanse standaard meegegeven, meestal met ook nog de tijd erachter, dus bijvoorbeeld 2021-12-31 00:00:00
Veelgebruikte datumvelden hebben daarom al een extra formuleveld met dezelfde naam, maar dan op de nederlandse manier geschreven, zonder tijd erachter (31-12-2021).
Om zo'n datumveld te gebruikenzoek je naar het veld met dezelfde naam, maar dan met "(tekst)" erachter (Voorbeeld: "Startdatum Contract (tekst)").
Is zo'n veld niet aanwezig, dan is er geen standaard formuleveld. Je dient hier dan dus zelf een formuleveld voor aan te maken. Dit kan op de volgende manier:
Voorbeeldveld: Tigris__Startdate__c
Om van dit veld een NL notatie te maken, maak je een formuleveld met als type Tekst aan, en gebruik je de volgende formule:
TEXT(DAY(Tigris__StartDate__c)) + "-" + TEXT(MONTH(Tigris__StartDate__c)) + "-" + TEXT(YEAR(Tigris__StartDate__c))
Als je dit voor een ander veld wil doen, gebruik je dezelfde formule, maar vervang je Tigris__StartDate__c met de API naam van het veld waarvoor je de NL notatie nodig hebt.
Wil je hier hulp bij, dan kun je hiervoor een consultancyticket indienen
Selectievakje (Boolean)
Als je een selectievakje gebruikt als merge tag, krijg je als resultaat true (aan) of false (uit) in het gegenereerde document. Eventueel kun je een formuleveld maken waarin je deze waardes anders presenteert, bijvoorbeeld als Wel of Niet. Onderstaand een voorbeeld voor het veld Tigris__Checkbox__c
Maak een formuleveld met als type Tekst aan, en gebruik een vergelijkbare formule:
IF(Tigis__Checkbox__c = TRUE, "Wel", "Niet")
Wil je hier hulp bij, dan kun je hiervoor een consultancyticket indienen
Velden met opmaak (RTF velden)
Er is deels ondersteuning voor RTF velden. De meeste gebruikte HTML tags worden ondersteund. Hieronder de lijst van ondersteunde attributen en een voorbeeld.
Ondersteunde HTML tags
| HTML-tag | Doel | Opmerkingen/Attributen |
|---|---|---|
<table>, <tr>, <td>
|
Tabellen | ondersteunt colspan, rowspan, style |
<ul>, <ol>, <li>
|
Lijsten | ongeordend/geordend, verwerkt binnen <li>
|
<p> |
Paragrafen | verwerkt inline-stijlen |
<b>, <strong>
|
Vetgedrukt | |
<i>, <em>
|
Cursief | |
<u> |
Onderstrepen | |
<strike> |
Doorhalen | |
<a href="..."> |
Link (hyperlink) | href-attribuut wordt verwerkt |
style="color:..." |
Tekstkleur | rgb, hex, naam kleur |
style="background-color:..." |
Achtergrondkleur | rgb, hex, naam kleur |
style="text-align:..." |
Tekstuitlijning | links, rechts, gecentreerd wordt omgezet |
Voorbeeld RTF veld:
Gegenereerd document
Niet ondersteunde HTML tags
| HTML-tag/Attribuut | Opmerkingen/Uitleg |
|---|---|
<img> |
Afbeeldingen worden niet weergegeven of verwerkt |
style="font-family:..." |
Lettertype-keuze wordt genegeerd |
style="font-size:..." |
Tekstgrootte wordt niet aangepast |
style="width:...", height
|
Breedte/hoogte van elementen behalve tabel/kolom genegeerd |
style="border:..." |
Randstijl van cellen of tabellen niet toegepast |
style="margin:..." |
Marges worden niet verwerkt |
style="padding:..." |
Opvulling wordt niet verwerkt |
<span> met overige stijlen |
Alleen kleur/achtergrondkleur binnen <span> wordt ondersteund |
<div> |
Blokindeling en styling niet toegepast |
CSS classes (class="...") |
Stijlen op basis van class-naam worden genegeerd |
| JavaScript en events | Klik, mouseover, en andere events worden genegeerd |
Tips & Tricks
Waar vandaan genereer ik een contract?
Een contract kan gegenereerd worden vanaf het contractrecord of vanaf de plaatsing. Als er gekozen wordt om deze vanaf de plaatsing te genereren, is het belangrijk dat de opzoekrelatie 'Contract' op de plaatsing gevuld is, voordat het contract gegenereerd wordt. Een document van het type 'Contract' wordt dan namelijk ook automatisch onder het gerelateerde contract gehangen.
Hoe voeg ik tags toe voor ondertekening (bijv. plaats van de handtekening)?
Zie hiervoor het kennisbankartikel over Stiply ondertekening in combinatie met templates
Wat zijn de meest gebruikte tags?
Bijgevoegd een overzicht van de meest gebruikte merge tags vanaf de plaatsing:
Velden op de layouts kunnen in de eigen Tigris omgeving afwijken van wat hierboven wordt genoemd. Als je opties of velden mist, kunnen deze door de admin aan de layout worden toegevoegd
Automatisering
Het is ook mogelijk om documenten automatisch te laten genereren op basis van bepaalde criteria of via een stroom in combinatie met de invocable APEX actie apex-Tigris__GDocumentInvocableController
Voor de inrichting hiervan kan eventueel een consultancyticket worden ingediend