Catalogus documentsjabloon

Uit ZaaksysteemWiki
Versie door Admin (overleg | bijdragen) op 17 mei 2016 om 07:14 (Tabel)
Ga naar: navigatie, zoeken

Algemeen

Interne documentgenerator LibreOffice

Zaaksysteem.nl heeft een interne documentgenerator van LibreOffice. Dit maakt het mogelijk om geautomatiseerd documenten aan te maken op basis van een sjabloon, zoals bijvoorbeeld een ontvangstbevestiging of beschikking. Documentsjablonen worden centraal in de Catalogus beheerd en worden aan Zaaktypen toegevoegd, zodat deze in zaken gebruikt kunnen worden.

Nieuwe documentsjablonen worden gemaakt door documenten op te maken en deze op te slaan als een ODT-bestand. Je kunt hiervoor LibreOffice gebruiken (indien er geen mogelijkheid is tot het installeren van LibreOffice kan er ook gebruik gemaakt worden van de portable LibreOffice app), maar ook Microsoft Office 2010 kan documenten opslaan in dit formaat.

Een documentsjabloon werkt met ‘magicstrings’. Dit zijn de variabele die verwijzen naar de waarden van Kenmerken binnen een zaak, die het zaaksysteem kan invullen tijdens het genereren van een document.

Externe documentgenerator Xential

Zaaksysteem.nl heeft ook een koppeling met de documentgenerator Xential. Zie voor meer informatie het Koppelprofiel Xential.

Iteratie

De oude methode (t/m versie 3.21) is hier in te zien: Documentsjablonen - Iteratie.

Iteratie zorgt ervoor dat informatie voor de magicstrings niet uit de zaak zelf wordt opgehaald, maar uit alle Gerelateerde zaken. Dit kan vervolgens op drie manieren worden weergegeven:

  • Inline itereren: Op één regel, gescheiden door <komma><spatie>
  • Tekstblok newline itereren: Een tekstblok dat geïtereerd wordt voor elke gerelateerde zaak, gescheiden door <enter>
  • Tabel itereren: Eén tabelrij itereren om één tabel te vormen met informatie uit de gerelateerde zaken

Inline

Input Output
Gerelateerde zaken
De volgende zaken zijn verwerkt: [[iterate:case.related_cases:zaaknummer]].
De volgende zaken zijn verwerkt: 2462, 2463, 2465, 2467.
Deelzaken
De volgende zaken zijn verwerkt: [[iterate:case.child_cases:zaaknummer]].
De volgende zaken zijn verwerkt: 2462, 2463, 2465, 2467.

Newline

In de sjablonen kan een tabellenrij herhaald worden voor elk van de gerelateerde of deelzaken die de zaak heeft.
  1. Zet de cursor op de juiste plek of selecteer het blok tekst en selecteer in het menu Insert - Section...
  2. Zet de cursor in de sectie en selecteer in het menu Insert - Script...
  3. Verander de waarde van 'Script type' in 'zttscript'
  4. Selecteer de 'Text' optie en vul in:
    • Voor gerelateerde zaken:
      iterate case.related_cases
    • Voor deelzaken:
      iterate case.child_cases

Let op: De iteraties worden gescheiden door een return (enter).

Dialoog voor scripts

Tabel

In de sjablonen kan een tekstblok herhaald worden voor elk van de gerelateerde of deelzaken die de zaak heeft.
  1. Maak een tabel die één rij hoog is
  2. Zet de cursor op een willekeurige plek in de tabel en selecteer in het menu Insert - Script...
    • Let op: Voor LibreOffice 5+ moet de optie 'Script' toegevoegd worden via View - Toolbars - Customize. De optie wordt toegevoegd op de geselecteerde locatie met 'Add'. De optie staat onder de categorie 'Insert'.
  3. Verander de waarde van 'Script type' in 'zttscript'
  4. Selecteer de 'Text' optie en vul in:
    • Voor gerelateerde zaken:
      iterate case.related_cases
    • Voor deelzaken:
      iterate case.child_cases

Tabellen hebben over het algemeen een titelrij, maar omdat een itererende tabel uit maar één rij mag bestaan kan deze niet in dezelfde tabel opgenomen worden. De oplossing is eenvoudig: Maak twee tabellen van elk één rij; één voor de titels en één voor de iteratie. Plak deze vervolgens tegen elkaar door de enters ertussen uit te verwijderen.

Iteraties filteren

In sommige gevallen is het niet wenselijk dat alle zaken worden meegenomen bij de iteratie. Daarom kan er aan een iteratie een voorwaarde meegegeven worden, zodat enkel zaken die aan die voorwaarde voldoen geïtereerd worden.

iterate case.related_cases { case.zaaktype == "Vergadering" }
iterate case.related_cases { mor_categorie == "Afval" }

Zie voor de mogelijke vergelijkingen: Rekenen en Vergelijkingen


Dialoog voor scripts

Variabele teksten

De oude methode (t/m versie 3.21) is hier in te zien: Documentsjablonen Variabele teksten.

In de sjablonen kan een gedeelte van het sjabloon afhankelijk van een waarde in de zaak getoond of verborgen worden.

  1. Zet de cursor op de juiste plek of selecteer het blok tekst en selecteer in het menu Insert - Section... of Insert - Frame...
  2. Zet de cursor in de sectie/frame en selecteer in het menu Insert - Script...
    • Let op: De optie 'script' komt niet standaard voor in LibreOffice 5+. De optie kan toegevoegd worden via View - Toolbars - Customize, dan het gewenste menu te selecteren en met 'Add' de optie 'Script' toevoegen.
  3. Verander de waarde van 'Script type' in 'zttscript'
  4. Selecteer de 'Text' optie en vul in:
    show_when { voorbeeld_magicstring == "voorbeeld waarde" }

Mogelijke vergelijkingen

Zie voor de mogelijke vergelijkingen: Rekenen en Vergelijkingen of Rekenen en vergelijkingen uitgebreid

Voorbeeld

Sjabloon

Beste meneer [​[aanvrager_naam]​],

Sectie 1 met: Uw aanvraag is [​[beoordeling_compleet]​]. U kunt uw aanvraag volgen op uw persoonlijke internetpagina.
Sectie 2 met: Uw aanvraag is [​[beoordeling_compleet]​]. U kunt de ontbrekende documenten toevoegen via uw persoonlijke internetpagina.

Script sectie 1
show_when { beoordeling_compleet == "ontvankelijk" }
Script sectie 2
show_when { beoordeling_compleet == "niet ontvankelijk" }
Output

Bij ontvankelijk:
Beste meneer Piet Friet,

Uw aanvraag is ontvankelijk. U kunt uw aanvraag volgen op uw persoonlijke internetpagina.

Bij niet ontvankelijk:
Beste meneer Piet Friet,

Uw aanvraag is niet ontvankelijk. U kunt de ontbrekende documenten toevoegen via uw persoonlijke internetpagina.

Dialoog voor scripts

Variabele newline iteratie

Newline iteratie en variabele teksten maken beide gebruik van secties met daarin een zttscript. Het is daarom mogelijk om deze te combineren met het volgende script:

show_when { voorbeeld_magicstring == "voorbeeld_waarde" }
iterate case.child_cases

Let op: De volgorde is hier van belang. In het bovenstaande voorbeeld wordt eerst gekeken of het iteratie blok opzich getoond moet worden, en wordt vervolgens pas de iteratie uitgevoerd. Zou de volgorde van de instructies omgedraaid zijn wordt eerst een volledige iteratie gedaan, en wordt het originele tekstblok verborgen. Effectief houd dit in dat er altijd geïtereerd wordt.

Let op: Dit is niet hetzelfde als Iteraties filteren. De magicstrings in de 'show_when'-voorwaarde verwijzen naar de zaak zelf en niet naar de gerelateerde en/of deelzaken.

Tips

Paginaovergang
Door variabele tekstblokken te gebruiken is het vrijwel onmogelijk om een paginaovergang goed in te richten. De paginaovergang zal vaak erg lelijk zijn: titel en tekst gescheiden, tabellen in tweeën geknipt, etc. De oplossing hiervoor is om deze teksten in frames te zetten. Deze frames kunnen niet over meerdere pagina's heen vallen en een paragraaf zal daarom netjes als één geheel naar de volgende pagina springen.

Het beste resultaat kan bereikt worden door deze frames:

  • paginabreed te maken (17cm)
  • aan de paragraaf te verankeren
  • geen 'wrap' toe te laten
  • geen spacing te geven
  • geen rand te geven
De titel en tekst blijven netjes bij elkaar