Creation of an invoice using ODT template
→ Download this guide in PDF format
IMPORTANT: The file must be in .odt format and not .doc, so the use of word is not recommended. Rather, the use of OpenOffice is highly recommended.
This mini-guide on configuring the school invoice from ODT template, is divided into the following paragraphs:
- INTRODUCTION
- PLACEHOLDER DEFINITION
- PLACEHOLDER LISTS
- PLACEHOLDERS IN TABLES
- CONDITIONAL BLOCKS
- FILTERS
- LIST OF AVAILABLE PLACE CARDS
- MODEL UPLOAD TO SYSTEM
- USE OF THE INVOICE TEMPLATE
- EXAMPLE TEMPLATES
1. INTRODUCTION
An ODT invoice template is an odt format file that you upload to management in the Configuration → Contracts & Reports allows you to generate PDF documents containing dynamic information, using an .odt file, called a template, in which appropriate placeholders are inserted, which, in the final generated document, will be replaced by the value indicated by the placeholder.
WARNING: template refers, in the context of this documentation, to a normal .odt file containing placeholders, the file must be in ODF text document format, extension .odt.
Placeholders can be inserted in a normal writing context. They can also be inserted in tables and can be shown with conditional blocks or filters.
2. DEFINITION OF PLACEHOLDERS
La sintassi per definire un segnaposto è {oggetto.attributo}, il nome dell’oggetto è la parte del nome a sinistra del punto, il nome dell’attributo è la parte a destra del punto; quindi, ad esempio, per mostrare nel documento finale il nome del corso si usa {course.name}, per mostrare la sede del corso si usa {location.location}.
If the object name is plural, it means that a list of values will be generated that can be used within a table or to create a list in the final document. In this sense, an appropriate syntax can be used to indicate the beginning and end of the table.
E’ possibile creare dei segnaposti aggiuntivi utilizzando dei campi personalizzati, la sintassi di questi segnaposti è: {oggetto.customfields[codice]}, verrà mostrato il campo personalizzato che ha il codice inserito tra parentesi quadre.
3. LISTS OF VALUES
The syntax for using a list of values, involves indicating where the list begins and where it ends; in the block of text enclosed between the two markers, placeholders are inserted to show the values of each list item, for example, to list the full names and email address of each student in the course:
[! -- BEGIN students --]
{students.fullName} {students.email}
[!-- END students --]
For lists of values there is a special placeholder, the _total placeholder, which returns the total number of elements in the list.
If it becomes necessary to insert two identical lists within the same document, it will be possible to do so by inserting an underscore ( _ ) in the placeholder of the second list
[!-- BEGIN students_ --]
{students_.fullName} {students_.email}
[!-- END students_ --]
4. PLACEHOLDERS IN TABLES
The syntax for using a list of values within a table involves indicating where the table row begins and where it ends; in the block of text enclosed between the two markers, placeholders are inserted to show the values of each item in the list; for example, to list the full names, email address, and mobile phone of each student in the exam, within a table we would need to enter:
|
{students.email} |
{students.mobile}
|
the table row between [!-- BEGIN row.students --]
e [!-- END row.students --]
will be repeated for each student, in the document table.
If it becomes necessary to insert two identical lists within the same document, it will be possible to do so by inserting an underscore ( _ ) in the placeholder of the second list
|
{students_.email} |
{students_.mobile}
|
5. CONDITIONAL BLOCKS
The conditional block is a part of the document, delimited by appropriate markers, with which a condition is associated that can be true or false, if true the content of the block is shown in the final document, if false the content of the block is deleted from the final document.
One of the defined custom fields or the conditions given in the CONDITION section of the list of available placeholders can be used as a condition for the block.
The condition using a custom field is true if the field is valorized, it is false if it is empty.
The syntax for defining the conditional block involves stating the beginning and end of the block, indicating the associated condition, e.g., to define a conditional block to be shown only if the order is discounted:
[!-- IF order.isDiscounted --]
Sconto: {order.discount}
[!-- ENDIF order.isDiscounted --]
order.isDiscounted is the condition, if it is true the order is discounted and the discount applied is shown, if it is false the order is not discounted and the discount line will not be included in the final document.
You can reverse the condition check by adding NOT to the syntax to define the conditional block, for example, to define a conditional block to be shown only if the order is not discounted:
[!-- IF NOT order.isDiscounted --]
Discount not applicable.
[!-- ENDIF NOT order.isDiscounted --]
order.isDiscounted is the condition, if it is true the order is discounted and the text "Discount not applicable" will not be shown in the final document, if it is false the order is not discounted and therefore the text "Discount not applicable" will be shown in the final document.
To use a custom field as a condition use the following syntax:
[!-- IF student.customfields[CERTIFICAZIONI] --]
Certifications: {student.customfields[CERTIFICATIONS]}
[!-- ENDIF student.customfields[CERTIFICAZIONI] --]
the row within the block will be shown only the student's certifications have been indicated, that is, if the custom field with code CERTIFICATIONS of the student is not empty.
6. FILTERS
Filters allow an operation to be performed that changes the value of the individual placeholder entered in the document and are available for any type of odt report, regardless of section.
The available filters are as follows:
- cut allows us to limit the length of a text within the given value, for example to limit the length of the course name to a maximum of 5 characters we can use the placeholder {course.name|cut[5]}
- daysbefore allows us to compute a date earlier than the date of the valorized placeholder, e.g. if we want to get the date corresponding to 2 weeks before the start of the course we can use the placeholder {course.startDate|daysbefore[14]}
- daysafter allows us to compute a date later than the date of the valorized placeholder, for example if we want to get the date corresponding to 1 week after the start of the course we can use the placeholder {course.startDate|daysafter[7]}
- lowercase changes the value of the placeholder to lowercase, for example to show the course name all in lowercase use the placeholder {course.name|lowercase}
- uppercase changes the value of the placeholder to uppercase, e.g. to show the course name all in uppercase use the placeholder {course.name|uppercase}
- uppercasefirst changes the value of the placeholder by capitalizing the first letter, e.g. to show the course name with the first letter capitalized use the placeholder {course.name|uppercasefirst}
If two versions of the same placeholder are needed in the document, one filtered and one unfiltered, simply add a _ (underscore) to the second occurrence of the placeholder, e.g., use {course.name|cut[5]} to show the abbreviated course name and {course_.name} to show the full course name later.
7. LIST OF PLACEHOLDERS AVAILABLE FOR INVOICE TEMPLATES.
SIGNAGE | VALUE | NOTES |
---|---|---|
{recipient.address} | address | |
{recipient.birthcountry} | country of birth | |
{recipient.birthdate} | date of birth | |
{recipient.birthday} | birthday | |
{recipient.birthplace} | place of birth | |
{recipient.birthprovince} | province of birth | |
{recipient.branchId} | Reference branch name | |
{recipient.cap} | zip code | |
{recipient.cards} | membership card | |
{recipient.cardnumber} | number from the card, if any | |
{recipient.certifiedEmail} | ||
{recipient.city} | city | |
{recipient.citizenship} | citizenship | |
{recipient.clientCode} | addressee code | |
{recipient.country} | country | |
{recipient.countryCode} | country | |
{recipient.customfields[]} | custom field | The custom field code should be indicated between the square brackets |
{recipient.email} | ||
{recipient.fullName} | call sign | |
{recipient.gender} | genre | |
{recipient.id} | identifier | |
{recipient.lastUpdate} | ||
{recipient.passport} | passport | |
{recipient.profession} | profession | |
{recipient.qualification} | qualification | |
{recipient.maritalstatus} | marital status | |
{recipient.mobile} | mobile phone | |
{recipient.mobilePhone} | mobile phone | by Invoice template |
{recipient.name} | name | |
{recipient.notes} | notes | |
{recipient.phone} | landline | |
{recipient.province} | province | |
{recipient.recipientCode} | Recipient code | |
{recipient.splitPayment} | ||
{recipient.surname} | surname | |
{recipient.taxcode} | tax code | |
{recipient.vatnumber} | VAT number | |
{recipient.type} | ||
recipient.zipCode | ZIP CODE | by Invoice template |
CONDITION | VALUE | NOTES |
recipient.isAdult | true if the student is of age, false otherwise | |
recipient.isNotAdult | true if the student is a minor, false otherwise |
Placeholder company order section
Data of the company issuing the invoice. The companies in question are those configured in the management system under Tax Management → Tax SettingsSIGNAGE | VALUE | NOTES |
---|---|---|
{company.address} | address | |
{company.cap} | zip code | |
{company.city} | city | |
{company.country} | country code | |
{company.countryCode} | country iso code | |
{company.email} | ||
{company.mobile} | mobile phone | |
{company.name} | business name | |
{company.phone} | landline | |
{company.provinces} | provinces | |
{company.taxcode} | tax code | |
{company.vatnumber} | VAT number |
Placeholder invoice
SIGNAGE | VALUE | NOTES |
---|---|---|
{invoice.amount} | Total invoice amount | |
{invoice.branchId} | Reference branch name | |
{invoice.date} | Invoice date | |
{invoice.discount} | total invoice discount | |
{invoice.expiry} | Invoice due date | |
{invoice.netAmount} | Net total | |
{invoice.number} | Invoice number | |
{invoice.remaining} | Remaining amount | |
{invoice.series} | Invoice series | |
{invoice.stampAmount} | Stamp amount | |
{invoice.type} | Invoice type | (0 => Invoice, 1 => Credit Note) |
{invoice.vatAmount} | total VAT | |
{invoice.endDateCoursesList} | Course end dates list | |
{invoice.locationCodeNameCoursesList} | Course location code list | |
{invoice.locationNameCoursesList} | List of Course Locations | |
{invoice.ordersNumberList} | List of order numbers | |
{invoice.studentsFullNameList} | List of student names enrolled | |
Additional invoice information | ||
{invoice.additionalInfoInvoice} | Additional electronic invoice information | |
{invoice.ReferenceNumberLine} | ReferenceNumberLine | |
{invoice.IdDocument} | IdDocument | |
{invoice.Data} | Date | |
{invoice.NumItem} | NumItem | |
{invoice.CodeCommitConvention} | CodeCommitConvention | |
{invoice.CodeCUP} | codeCUP | |
{invoice.CodeCIG} | codeCIG | |
{invoice.totalQuantityNumber} | total number of quantities purchased | |
{invoice.invoiceNotes} | notes included in the invoice |
Placeholder items
Invoice details, listSIGNAGE | VALUE | NOTES |
---|---|---|
{items.amount} | total amount | |
{items.code} | technical code article | |
{items.description} | item description | |
{items.discount} | discount | |
{items.id} | ||
{items.netAmount} | Net Amount | |
{items.orderCustomFields} | Custom field related to the order from which the invoice is derived | |
{items.quantity} | quantity | |
{items.vatAmount} | total VAT | |
{items.vatDescription} | Rate name | |
{items.vatNotes} | Notes aliquot | |
{items.vatRates} | % Rate | |
{items.internalEndLevel} | final internal level | By Invoice report If prepared |
{items.internalStartLevel} | initial internal level | By Invoice report If prepared |
{items.totalNetAmount} | Total given by quantity X Unit price |
Placeholders vatrates
Data on amounts grouped by type of VATSIGNAGE | VALUE | NOTES |
---|---|---|
{vatrates.amount} | VAT Amount | |
{vatrates.description} | Rate name | Configurable in Economic Settings - If present stamp can be used in Invoice templates |
{vatrates.message} | VAT invoice message | Configurable in Economic Settings - If present stamp can be used in Invoice templates |
{vatrates.nature} | code nature of VAT | Configurable in Economic Settings - If present stamp can be used in Invoice templates |
{vatrates.netAmount} | Net amount VAT | |
{vatrates.rate} | % VAT | Configurable in Economic Settings |
placeholder installments invoices section
Invoice section installment payments, listSIGNAGE | VALUE | NOTES |
---|---|---|
{installments.amount} | Installment amount | |
{installments.expiry} | Installment due date | |
{installments.paymentmethod} | Installment payment method |
Placeholder order invoice section
order data invoice sectionSIGNAGE | VALUE | NOTES |
---|---|---|
{order.amount} | Order amount | |
{order.branchId} | branch reference | |
{order.customfields[CODE]} | custom order fields | |
{order.date} | date of order | |
{order.discount} | Order discount | |
{order.downPayment} | Advance amount | |
{order.id} | Identifier | |
{order.number} | Order number | |
{order.operatorName} | Operator name that generated the order | |
{order.type} | Order type | (enrollment,renewal,transfer,etc.). |
{order.year} | Order reference year} |
Placeholder orders invoice section
order data invoice section, listSIGNAGE | VALUE | NOTES |
---|---|---|
{orders.amount} | Order amount | |
{orders.branchId} | branch reference | |
{orders.customfields[CODE]} | custom order fields | |
{orders.date} | date of order | |
{orders.discount} | Order discount | |
{orders.downPayment} | Advance amount | |
{orders.id} | Identifier | |
{orders.number} | Order number | |
{orders.operatorName} | Operator name that generated the order | |
{orders.type} | Order type | (enrollment,renewal,transfer,etc.). |
{orders.year} | Order reference year} |
Placeholder course order section
course related data order section, placeholder valued only if there is only one course in the order, if there is a course template in the order the data is retrieved from the course templateSIGNAGE | VALUE | NOTES |
---|---|---|
{course.booksTitleList} | textbooks | each title is separated by comma from the next, not valued if course model |
{course.certificateEndLevel} | Certified course arrival level | |
{course.certificateStartLevel} | certified starting level of the course | |
{course.code} | code | |
{course.cost} | cost | |
{course.costIfInstallments} | cost if payment in installments | Valued only if an installment plan is attached to the course/model |
{course.customfields[]} | custom field | in square brackets should be the custom field code, valorized only if it is a course, not valorized in case of course template |
{course.endDate} | end date | not valued if course model |
{course.duration} | course duration | Can be given in hours, lessons, or as a start and end date |
{course.enrolledStudents} | number of students enrolled | |
{course.firstInstallmentAmount} | first installment amount | Valued only if an installment plan is attached to the course/model |
{course.firstInstallmentDate} | first installment due date | Valued only if an installment plan is attached to the course/model |
{course.firstInstallmentDay} | day of the month first installment due | Valued only if an installment plan is attached to the course/model |
{course.firstInstallmentMonth} | month first installment of any installment plan | |
{course.first installmentMonth} | first installment due month | Valued only if an installment plan is attached to the course/model |
{course.hours} | total lecture hours of the course | |
{course.installmentsNumber} | number of installments | Valued only if an installment plan is attached to the course/model |
{course.internalEndLevel} | Internal arrival level of the course | |
{course.internalEndLevelDescription} | description of the internal arrival level | |
{course.internalStartLevel} | Internal starting level of the course | |
{course.internalStartLevelDescription} | description of the internal level of initiation | |
{course.lessons} | number of lessons | |
{course.lessonsDuration} | lesson duration, set only if regular course, in minutes | |
{course.lessonsEndTime} | final class schedule | Valued only if Group course with one class per week. Not valued if course model |
{course.lessonsPerWeek} | number of lessons per week | |
{course.lessonsStartTime} | initial class schedule | Valued only if Group course with one class per week. Not valued if course model |
{course.lessonsWeekDay} | lessons, day of the week | Valued only if Group course with one class per week. Not valued if course model |
{course.lessonsWeekSchedule} | classes, days of the week and schedule | Valued if more than one class per week, not valued if course model |
{course.installmentsAdvanceAmount} | Amount to be paid to the order in case of installment payment | Valued only if an installment plan is attached to the course/model |
{course.locationCompleteAddress} | full course venue address | not valued if course model |
{course.locationName} | course venue name | not valued if course model |
{course.model} | template name used to create the course | |
{course.name} | name | |
{course.plannedHours} | planned class hours | |
{course.startDate} | start date | not valued if course model |
{course.studentsFullNameList} | student list, the separator is the comma | |
{course.subject} | subject of study | valued only if single subject course |
{course.subjectAlias} | aka subject of study | valued only if single subject course |
{course.teachersFullNameList} | teachers' names | each callsign is separated by comma from the next, not valued if course model |
{course.teachingYear} | academic year | not valued if course model |
{course.fundName} | linked fund | Valued only if present for Invoice templates |
{course.locationCode} | venue code | Valued only if present for Invoice templates |
Courses placeholders order section
course data order section, if course templates are present in the order the data are retrieved from the course templates, listSIGNAGE | VALUE | NOTES |
---|---|---|
{courses.booksTitleList} | textbooks | each title is separated by comma from the next, not valued if course model, not valued if course model |
{courses.certificateEndLevel} | Certified course arrival level | |
{courses.certificateStartLevel} | certified starting level of the course | |
{courses.code} | code | |
{courses.cost} | cost | |
{courses.costIfInstallments} | cost if payment in installments | Valued only if an installment plan is attached to the course/model |
{courses.customfields[]} | custom field | in square brackets should be the custom field code, valorized only if it is a course, not valorized in case of course template |
{course.duration} | course duration | Can be given in hours, lessons, or as a start and end date |
{courses.endDate} | end date | not valued if course model |
{course.enrolledStudents} | number of students enrolled | |
{courses.firstInstallmentAmount} | first installment amount | Valued only if an installment plan is attached to the course/model |
{courses.firstInstallmentDate} | first installment due date | Valued only if an installment plan is attached to the course/model |
{courses.firstInstallmentDay} | day of the month first installment due | Valued only if an installment plan is attached to the course/model |
{courses.first installmentMonth} | first installment due month | Valued only if an installment plan is attached to the course/model |
{courses.hours} | total lecture hours of the course | |
{courses.installmentsAdvanceAmount} | Amount to be paid to the order in case of installment payment | Valued only if an installment plan is attached to the course/model |
{courses.installmentsNumber} | number of installments | Valued only if an installment plan is attached to the course/model |
{course.internalEndLevel} | Internal arrival level of the course | |
{course.internalEndLevelDescription} | description of the internal arrival level | |
{course.internalStartLevel} | Internal starting level of the course | |
{course.internalStartLevelDescription} | description of the internal level of initiation | |
{courses.lessons} | number of lessons | |
{course.lessonsDuration} | lesson duration, set only if regular course, in minutes | |
{courses.lessonsEndTime} | final class schedule | valued only if one class per week, not valued if course model |
{courses.lessonsStartTime} | initial class schedule | valued only if one class per week, not valued if course model |
{course.lessonsPerWeek} | number of lessons per week | |
{course.lessonsStartTime} | initial class schedule | Valued only if Group course with one class per week. Not valued if course model |
{courses.lessonsWeekDay} | lessons, day of the week | valued only if one class per week, not valued if course model |
{courses.lessonsWeekSchedule} | classes, days of the week and schedule | Valued if more than one class per week, not valued if course model |
{courses.locationCompleteAddress} | full course venue address | not valued if course model |
{courses.locationName} | course venue name | not valued if course model |
{course.model} | template name used to create the course | |
{courses.name} | name | |
{course.plannedHours} | planned class hours | |
{courses.startDate} | start date | not valued if course model |
{course.studentsFullNameList} | student list, the separator is the comma | |
{courses.subject} | subject of study | valued only if single subject course |
{courses.subjectAlias} | Aliases subject of study | valued only if single subject course |
{courses._position} | position of the item in the list | |
{courses.teachersFullNameList} | teachers' names | each callsign is separated by comma from the next, not valued if course model |
{courses._total} | Total number of items in the list | |
{course.teachingYear} | academic year | not valued if course model |
Placeholder student order section
order section student data, valued only if there is only one student in the orderSIGNAGE | VALUE | NOTES |
---|---|---|
{student.address} | address | |
{student.birthcountry} | country of birth | |
{student.birthdate} | date of birth | |
{student.birthday} | birthday | |
{student.birthplace} | place of birth | |
{student.birthprovince} | province of birth | |
{student.branchId} | Reference branch name | |
{student.cap} | zip code | |
{student.cardnumber} | Student ID number | |
{student.certifiedEmail} | ||
{student.city} | city | |
{student.country} | country | |
{student.countryCode} | country iso code | |
{student.citizenship} | citizenship | |
{student.customfields[]} | custom field | The custom field code should be indicated between the square brackets |
{student.email} | ||
{student.fullName} | call sign | |
{student.gender} | genre | |
{student.id} | identifier | |
{student.invoiceDataAddress} | Address (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataCity} | City (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataCountry} | Country (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataEmail} | Email (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataFiscalCode} | Tax code (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataMobilePhone} | Mobile phone(billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataName} | Name/Company (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataPec} | PEC (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataPhone} | Landline phone (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataProvince} | Province (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataRecipientCode} | Recipient code (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataVatNumber} | VAT number (billing) | Valued in case the master data includes billing data other than residence data |
{student.invoiceDataZipCode} | ZIP code (billing) | Valued in case the master data includes billing data other than residence data |
{student.lastUpdate} | latest change to master data | |
{student.maritalstatus} | marital status | |
{student.mobile} | mobile phone | |
{student.name} | name | |
{student.pec} | certified e-mail address | |
{student.phone} | landline | |
{student.province} | province | |
{student.passport} | passport | |
{student.profession} | profession | |
{student.qualification} | qualification | |
{student.recipientCode} | addressee code | |
{student.studLocation} | Reference site | |
{student.surname} | surname | |
{student.taxcode} | tax code | |
{student.vatnumber} | VAT number | |
CONDITION | VALUE | NOTES |
student.isAdult | true if the student is of age, false otherwise | |
student.isNotAdult | true if the student is a minor, false otherwise | |
{student.notes} | notes | |
{student.zipCode{ | CAP | per modello Fatture |
Segnaposto students sezione ordini
dati degli studenti dell'ordine sezione ordini, listaSEGNAPOSTO | VALORE | NOTE |
---|---|---|
{students.abilities[]} | skill achieved | The ability code should be indicated in square brackets |
{students.address} | address | |
{students.birthcountry} | country of birth | |
{students.birthdate} | date of birth | |
{students.birthday} | birthday | |
{students.birthplace} | place of birth | |
{students.birthprovince} | province of birth | |
{students.branchId} | Reference branch name | |
{students.cap} | zip code | |
{students.cardnumber} | Card number | |
{students.certifiedEmail} | ||
{students.city} | city | |
{students.citizenship} | citizenship | |
{students.country} | country | |
{students.countryCode} | country iso code | |
{students.customfields[]} | custom field | The custom field code should be indicated between the square brackets |
{students.email} | ||
{students.fullName} | call sign | |
{students.gender} | genre | |
{students.id} | identifier | |
{students.invoiceDataAddress} | address (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataCity} | city (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataCountry} | Country (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataEmail} | Email (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataFiscalCode} | Tax code (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataMobilePhone} | Mobile number (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataName} | Name/Company (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataPec} | Pec (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataPhone} | landline phone (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataProvince} | Province (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataRecipientCode} | Recipient code (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataVatNumber} | VAT number (billing) | Valued in case the master data includes billing data other than residence data |
{students.invoiceDataZipCode} | ZIP code (billing) | Valued in case the master data includes billing data other than residence data |
{students.lastUpdate} | ||
{students.maritalstatus} | marital status | |
{students.mobile} | mobile phone | |
{students.name} | name | |
{students.notes} | notes field | |
{students.passport} | passport | |
{students.pec} | certified e-mail address | |
{students.phone} | landline | |
{students._position} | position of the item in the list | |
{students.profession} | profession | |
{students.province} | province | |
{students.qualification} | qualification | |
{students.recipientCode} | addressee code | |
{students.splitPayment} | ||
{students.studLocation} | Reference site | |
{students.surname} | surname | |
{students.taxcode} | tax code | |
{students._total} | total number of items in the list | |
{students.vatnumber} | VAT number | |
CONDITION | VALUE | NOTES |
students.isAdult | true if the student is of age, false otherwise | |
students.isNotAdult | true if the student is a minor, false otherwise |
8. UPLOADING THE INVOICE TEMPLATE TO THE SYSTEM
To enter the invoice template into the system navigate to Configuration → Reports and click the "Add Report".
From the next screen fill in the following fields:
- Name*: the name of the report (e.g. "Custom Invoice", "Company Invoice 1", "Custom Invoice", etc.)
- Description: possible description of the invoice template
- Report type: from template odt
- Section in which to show the report *: Invoices
- Template extension: OpenOffice Write (.odt)
- Report template: upload the contract template in ODT format.
- Select type: select the type of file extension that the contract should have when downloading or sending to the client, being able to choose from:
- OpenOffice Write (.odt)
- Portable Document Format (.pdf)
- Order *: the order in which the reports are listed (e.g. 1, 2, 3, etc.)
Click the "Add report" to save the operation.
After uploading the template, go into editing the template (by clicking the icon with the edit stick) and check the "Enabled" to enable the export of the report from the courses and click one of the two buttons at the bottom of the page to save the operation.
Finally, click the icon on the row of the uploaded template, to enable administrative accounts that will be able to use the entered template.
9. USE OF THE INVOICE TEMPLATE
Entering the section Tax Management → Tax Settings and in editing one of the companies it will be possible to choose the loaded model as the default.
With this operation at the time the pdf of the invoices will be downloaded in the section Tax Management → Invoices / Credit Notes. the custom template will be shown as the default in the drop-down menu.