DOCX Templates
This section will explain how to use docx files as templates for your reports.
The basic principal behind how docx templates work, is the system will first create a json representation of the job. It will pass this json object to the template engine along with your template, and the system will replace the placeholders in your document with the values from the json.
There are also a number of other features we can use such as conditional statements, loops, and other special syntax for handling things like images and html.
Note
All of the examples below can be found in
examples.docx
In the examples shown below, we will assume job json looks like this:
{
"reference": "ref123",
"jobDate": "2020-01-01",
"registration": "XXX 123",
"make": "Audi",
"model": "A3",
"principal": {
"business": "Super Insurer",
"address": "221b Baker Street, London"
},
"repairCosts": {
"label": "Repair Estimate",
"agreedSubTotal": "200.00",
"agreedVatTotal": "40.00",
"agreedTotal": "240.00",
"estimatedSubTotal": "200.00",
"estimatedVatTotal": "40.00",
"estimatedTotal": "240.00",
"savingSubTotal": "0.00",
"savingVatTotal": "0.00",
"savingTotal": "0.00",
"currency": "GBP",
"currencyHtml": "£",
"currencySign": "£",
"items": [
{
"label": "Time",
"agreed": "100.00",
"agreedVAT": "20.00",
"agreedWithVAT": "120.00",
"estimated": "100.00",
"estimatedVAT": "20.00",
"estimatedWithVAT": "120.00",
"saving": "0.00",
"savingVAT": "0.00",
"savingWithVAT": "0.00",
"vatRate": "0.200",
"currency": "GBP",
"currencyHtml": "£",
"currencySign": "£"
},
{
"label": "Materials",
"agreed": "100.00",
"agreedVAT": "20.00",
"agreedWithVAT": "120.00",
"estimated": "100.00",
"estimatedVAT": "20.00",
"estimatedWithVAT": "120.00",
"saving": "0.00",
"savingVAT": "0.00",
"savingWithVAT": "0.00",
"vatRate": "0.200",
"currency": "GBP",
"currencyHtml": "£",
"currencySign": "£"
}
]
},
"comments": "<p>This is a <strong>paragraph</strong> of comments</p>",
"files": {
"photos": [
{
"id": "1",
"name": "image.jpg",
"description": "<p>some comments</p>",
"embedLink": false,
"mimeType": "image/jpg",
"url": "https://s3-eu-west-1.amazonaws.com/vas-test-images-public/index.jpg"
}
]
},
"imageUrl": "https://s3-eu-west-1.amazonaws.com/vas-test-images-public/index.jpg",
"imageBase64": "data:image/png;base64,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",
"damage": [
{ "component": "NSF Bumper", "action": "replace" },
{ "component": "Front Bumper", "action": "replace" },
{ "component": "OFF Bumper", "action": "replace" },
{ "component": "Grill", "action": "replace" },
{ "component": "NSF Arch", "action": "replace" },
{ "component": "OSF Arch", "action": "replace" },
{ "component": "Windscreen", "action": "replace" }
],
"repairDuration": "12"
}
Syntax
The follow sections show the different way we can place data from the job json into the document.
Filters
The following sections will describe the filters that are available.
Filters are small functions that we can use to change the data in some way before it is rendered into the document.
Modules
Modules are used for helping us to render the output of certain controls.
See the list of controls below to read about how to render the output: