Generazione Report Sondaggi tramite Modello ODT
Nota: Il report è utilizzabile solo per i Sondaggi e non per i Quiz.
IMPORTANTE: il file deve essere in formato .odt e non .doc, si sconsiglia dunque l’uso di word. E’ bensì altamente consigliato l’uso di Openoffice.
Questa guida sulla creazione del Report custom sui Sondaggi è suddivisa nei seguenti paragrafi:
- INTRODUZIONE
- CARICAMENTO A SISTEMA DEL MODELLO
- ELENCO SEGNAPOSTI DISPONIBILI
- BLOCCHI CONDIZIONALI
- FILTRI
- MODELLI DI ESEMPIO
- COLLEGARE IL REPORT AL SONDAGGIO
- UTILIZZO DEL REPORT
1. INTRODUZIONE
Un modello di contratto ODT è un file in formato odt che caricato a gestionale nella sezione Configurazione → Contratti & Report permette di generare documenti in formato PDF contenenti informazioni dinamiche, utilizzando un file .odt, chiamato modello, nel quale sono inseriti degli appositi segnaposti, che, nel documento finale generato, verranno sostituiti dal valore indicato dal segnaposto.
ATTENZIONE: modello si riferisce, nel contesto di questa documentazione, ad un normale file .odt contente dei segnaposti, il file deve essere in formato documento di testo ODF, estensione .odt.
I segnaposti possono essere inseriti in un contesto di scrittura normale. Possono essere inseriti anche in tabelle e possono essere mostrati con blocchi condizionali o filtri.
2. CARICAMENTO A SISTEMA DEL MODELLO
Per inserire il modello di report nel sistema navigare su Configurazione → Contratti & Report e cliccare il pulsante “Aggiungi report“:
La schermata che si apre conterrà tutte le informazioni necessarie per il caricamento del Report:

Compilare i seguenti campi:
- Nome*: il nome del report .
- Descrizione: eventuale descrizione del report.
- Tipo di report: scegliere l’opzione “Da modello ODT” per poter caricare il proprio modello.
- Sezione in cui mostrare il report *: Sondaggi.
- Modello del report: caricare il modello con estensione odt del proprio report.
- Seleziona tipo: selezionare il tipo di estensione del file tra Pdf e Odt.
- Ordine *: l’ordine di elencazione dei report (es. 1, 2, 3, etc).
Finita la configurazione cliccare il pulsante “Aggiungi report” per salvare l’operazione:

3. ELENCO SEGNAPOSTI DISPONIBILI PER I MODELLI DI CONTRATTO
Alcuni dei segnaposti indicati necessitano dell’indicazione [domanda1], [domanda2] ecc.. questa indicazione fa riferimento al nome della domanda che si può visualizzare nel box di destra quando si clicca nel riquadro di una domanda:
Segnaposti survey sezione Sondaggi
Segnaposti per i report Sondaggi| SEGNAPOSTO | VALORE | NOTE |
|---|---|---|
| {survey.name} | Nome del Sondaggio | |
| {survey.questionsnumber} | Numero delle domande presenti nel sondaggio | |
| {survey.surveyquestions[domanda1]} | Riporta la domanda del sondaggio selezionata | Tra parentesi quadre andrà inserito il nome della domanda da visualizzare, di default: [domandaX] |
| {survey.surveyanswers[domanda1]} | Riporta la risposta della domanda selezionata | Tra parentesi quadre andrà inserito il nome della domanda da visualizzare, di default: [domandaX] |
| CONDIZIONE | VALORE | NOTE |
| {survey.isanonymous} | Vero se il Sondaggio è anonimo | |
| {survey.isforstudents} | Vero se il Sondaggio è per Studenti | |
| {survey.isforteachers} | Vero se il Sondaggio è per Docenti | |
| {survey.isforcompanies} | Vero se il Sondaggio è per Aziende | |
| {survey.isforeachstudent} | Vero se il Sondaggio è per singolo Studente |
Segnaposto assignee sezione Sondaggi
Dati dello studente/docente disponibili nella sezione Anagrafiche → Studenti/Docenti.| SEGNAPOSTO | VALORE | NOTE |
|---|---|---|
| {assignee.address} | indirizzo | |
| {assignee.birthdate} | data di nascita | |
| {assignee.birthday} | compleanno | |
| {assignee.birthplace} | luogo di nascita | |
| {assignee.birthprovince} | provincia di nascita | |
| {assignee.birthcountry} | paese di nascita | |
| {assignee.cap} | codice di avviamento postale | |
| {assignee.city} | città | |
| {assignee.country} | nazione | |
| {assignee.countryCode} | nazione | |
| {assignee.citizenship} | cittadinanza | |
| {assignee.passport} | passaporto | |
| {assignee.profession} | professione | |
| {assignee.qualification} | qualifica | |
| {assignee.customfields[]} | campo personalizzato | tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
| {assignee.email} | ||
| {assignee.fullName} | nominativo | |
| {assignee.gender} | genere | |
| {assignee.maritalstatus} | stato civile | |
| {assignee.id} | identificativo | |
| {assignee.mobile} | telefono mobile | |
| {assignee.name} | nome | |
| {assignee.phone} | telefono fisso | |
| {assignee.province} | provincia | |
| {assignee.surname} | cognome | |
| {assignee.taxcode} | codice fiscale | |
| {assignee.vatnumber} | partita iva | |
| {assignee.cardnumber} | numero dalla eventuale tessera | |
| {assignee.notes} | note | |
| CONDIZIONE | VALORE | NOTE |
| assignee.isAdult | vero se lo studente è maggiorenne, falso altrimenti | |
| assignee.isNotAdult | vero se lo studente è minorenne, falso altrimenti |
Segnaposto student sezione Sondaggi
Dati dello studente disponibili nella sezione Anagrafiche → Studenti.Valorizzato solo se il Sondaggio è per singolo Studente. Riporta il segnaposto riferito allo Studente a cui è rivolto il Sondaggio.
| SEGNAPOSTO | VALORE | NOTE |
|---|---|---|
| {student.address} | indirizzo | |
| {student.birthdate} | data di nascita | |
| {student.birthday} | compleanno | |
| {student.birthplace} | luogo di nascita | |
| {student.birthprovince} | provincia di nascita | |
| {student.birthcountry} | paese di nascita | |
| {student.cap} | codice di avviamento postale | |
| {student.city} | città | |
| {student.country} | nazione | |
| {student.countryCode} | nazione | |
| {student.citizenship} | cittadinanza | |
| {student.passport} | passaporto | |
| {student.profession} | professione | |
| {student.qualification} | qualifica | |
| {student.customfields[]} | campo personalizzato | tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
| {student.email} | ||
| {student.fullName} | nominativo | |
| {student.gender} | genere | |
| {student.maritalstatus} | stato civile | |
| {student.id} | identificativo | |
| {student.mobile} | telefono mobile | |
| {student.name} | nome | |
| {student.phone} | telefono fisso | |
| {student.province} | provincia | |
| {student.surname} | cognome | |
| {student.taxcode} | codice fiscale | |
| {student.vatnumber} | partita iva | |
| {student.cardnumber} | numero dalla eventuale tessera | |
| {student.notes} | note | |
| {student.attendances} | ore effettive frequentate dallo studente | |
| CONDIZIONE | VALORE | NOTE |
| student.isAdult | vero se lo studente è maggiorenne, falso altrimenti | |
| student.isNotAdult | vero se lo studente è minorenne, falso altrimenti |
Segnaposto teacher sezione Sondaggi
Dati del docente disponibili nella sezione Anagrafiche → Docenti.Riporta il segnaposto riferito al Docente del corso in cui è inserito il Sondaggio.
| SEGNAPOSTO | VALORE | NOTE |
|---|---|---|
| {teacher.address} | indirizzo | |
| {teacher.birthdate} | data di nascita | |
| {teacher.birthday} | compleanno | |
| {teacher.birthplace} | luogo di nascita | |
| {teacher.birthprovince} | provincia di nascita | |
| {teacher.birthcountry} | paese di nascita | |
| {teacher.cap} | codice di avviamento postale | |
| {teacher.city} | città | |
| {teacher.country} | nazione | |
| {teacher.countryCode} | nazione | |
| {teacher.citizenship} | cittadinanza | |
| {teacher.passport} | passaporto | |
| {teacher.profession} | professione | |
| {teacher.qualification} | qualifica | |
| {teacher.customfields[]} | campo personalizzato | tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
| {teacher.email} | ||
| {teacher.fullName} | nominativo | |
| {teacher.gender} | genere | |
| {teacher.maritalstatus} | stato civile | |
| {teacher.id} | identificativo | |
| {teacher.mobile} | telefono mobile | |
| {teacher.name} | nome | |
| {teacher.phone} | telefono fisso | |
| {teacher.province} | provincia | |
| {teacher.surname} | cognome | |
| {teacher.taxcode} | codice fiscale | |
| {teacher.vatnumber} | partita iva | |
| {teacher.cardnumber} | numero dalla eventuale tessera | |
| {teacher.notes} | note | |
| {teacher.pec} | PEC | |
| {teacher.recipientCode} | Codice Destinatario | |
| {teacher.hourlyFee} | Tariffa personale docente | |
| {teacher.iban} | Iban | |
| {teacher.billingMethod} | Metodo di fatturazione (codice) | |
| {teacher.billingMethodName} | Metodo di fatturazione (nome) | |
| {teacher.studLocation} | Sede di Studio | |
| CONDIZIONE | VALORE | NOTE |
| teacher.isAdult | vero se il docente è maggiorenne, falso altrimenti | |
| teacher.isNotAdult | vero se il docente è minorenne, falso altrimenti |
Segnaposto course sezione corsi
dati relativi al corso sezione corsi, utilizzato nei Sondaggi| SEGNAPOSTO | VALORE | NOTE |
|---|---|---|
| {course.code} | codice | |
| {course.name} | nome | |
| {course.className} | Nome della classe | |
| {course.description} | Descrizione del corso | |
| {course.duration} | Durata del corso con etichette (es. "dal gg/mm/aaaa al gg/mm/aaaa", "x ore", "x lezioni") | |
| {course.hours} | totale delle ore di lezione del corso | |
| {course.lessons} | numero di lezioni | |
| {course.subject} | materia di studio | valorizzato solo se corso mono materia |
| {course.subjectAlias} | Alias materia di studio | valorizzato solo se corso mono materia |
| {course.startDate} | data inizio | non valorizzato se modello di corso |
| {course.endDate} | data fine corso | non valorizzato se modello di corso |
| {course.teachingYear} | anno accademico | non valorizzato se modello di corso |
| {course.teachersFullNameList} | nominativi docenti | ogni nominativo è separato con la virgola dal successivo, non valorizzato se modello di corso |
| {course.studentsFullNameList} | elenco studenti, il separatore è la virgola | |
| {course.booksTitleList} | libri di testo | ogni titolo è separato con la virgola dal successivo, non valorizzato se modello di corso |
| {course.customfields[]} | campo personalizzato | tra le parentesi quadre deve essere indicato il codice del campo personalizzato, valorizzato solo se è un un corso, non valorizzato in caso di modello di corso |
| {course.enrolledStudents} | numero di studenti iscritti | |
| {course.plannedHours} | ore di lezione pianificate | |
| {course.lessonsPerWeek} | numero di lezioni a settimana, impostato solo se corso regolare | |
| {course.lessonsWeekDay} | giorno della settimana di lezione, impostato solo se corso regolare e 1 lezione a settimana | |
| {course.lessonsStartTime} | orario di inizio lezioni, impostato solo se corso regolare | |
| {course.lessonsEndTime} | orario di fine lezioni, impostato solo se corso regolare | |
| {course.lessonsDuration} | durata lezioni, impostato solo se corso regolare, in minuti | |
| {course.lessonsWeekDaySchedule} | Programma settimanale giorni (formato esteso) | |
| {course.lessonsWeekSchedule} | lezioni, giorni della settimana e orario | valorizzato se più di una lezione a settimana, non valorizzato se modello di corso |
| {course.locationName} | nome della sede dove si svolge il cors | |
| {course.locationCompleteAddress} | indirizzo della sede dove si svolge il corso | |
| {course.locationCode} | Codice della sede | |
| {course.cost} | costo del corso | |
| {course.costIfInstallments} | costo in caso di pagamento a rate | |
| {course.certificateStartLevel} | Livello certificato di partenza del corso | Valorizzato se livello inserito nella scheda del corso |
| {course.certificateEndLevel} | Livello certificato di arrivo del corso | Valorizzato se livello inserito nella scheda del corso |
| {course.internalStartLevel} | Livello interno di partenza del corso | Valorizzato se livello inserito nella scheda del corso |
| {course.internalStartLevelFirstPart} | Livello interno di partenza del corso prima parte | Es A1.1 - Beginner. Viene restituito la parte prima della linea - : "A1.1" |
| {course.internalStartLevelSecondPart} | Livello interno di partenza del corso seconda parte | Es A1.1 - Beginner. Viene restituito la seconda parte dopo la linea - : "Beginner" |
| {course.internalStartLevelDescription} | descrizione del livello interno di inizio | |
| {course.internalEndLevel} | Livello interno di arrivo del corso | Valorizzato se livello inserito nella scheda del corso |
| {course.internalEndLevelFirstPart} | Livello interno di fine corso prima parte | Es A1.1 - Beginner. Viene restituito la parte prima della linea - : "A1.1" |
| {course.internalEndLevelSecondPart} | Livello interno di fine corso seconda parte | Es A1.1 - Beginner. Viene restituito la seconda parte dopo la linea - : "Beginner" |
| {course.internalEndLevelDescription} | descrizione del livello interno di arrivo | |
| {course.installmentsNumber} | numero di rate previste dall'eventuale piano di rateizzazione | |
| {course.firstInstallmentAmount} | importo prima rata dell'eventuale piano di rateizzazione | |
| {course.firstInstallmentDate} | data prima rata dell'eventuale piano di rateizzazione | |
| {course.firstInstallmentDay} | giorno prima rata dell'eventuale piano di rateizzazione | |
| {course.firstInstallmentMonth} | mese prima rata dell'eventuale piano di rateizzazione | |
| {course.installmentsAdvanceAmount} | ammontare pagato in anticipo | |
| {course.model} | nome modello usato per creare il corso | |
| {course.fundName} | Nome del Fondo | |
| {course.type} | Tipo di corso (individuale / collettivo) | |
| {course.companyname} | Nome dell'azienda cliente collegata al corso | |
| {course.teacherrate} | Tariffa insegnante | |
| {course.courseTeacherHourlyFee | Tariffa oraria insegnante del corso | |
| {course.courseTeacherTotalHours} | Ore totali insegnante del corso | |
| {course.studyplan} | Piani di studio del corso |
4. BLOCCHI CONDIZIONALI
Il blocco condizionale è una parte del documento, delimitato da appositi marcatori, al quale è associato una condizione che può essere vera o falsa, se è vera il contenuto del blocco viene mostrato nel documento finale, se falsa il contenuto del blocco viene eliminato dal documento finale.
Come condizione per il blocco può essere usato uno dei campi personalizzati definiti o le condizioni indicate nella sezione CONDIZIONE dell’elenco dei segnaposti disponibili.
La condizione che usa un campo personalizzato è vera se il campo è valorizzato, è falsa se è vuoto.
La sintassi per definire il blocco condizionale prevede di indicare l’inizio e la fine del blocco, indicando la condizione associata, ad esempio per definire un blocco condizionale da mostrare solo se l’ordine è scontato:
[!-- IF survey.isanonymous --]
“Il sondaggio è anonimo”
[!-- ENDIF survey.isanonymous --]
survey.isanonymous è la condizione, se è vera la dicitura viene mostrata, se è false la scritta non verrà mostrata.
Si può invertire il controllo della condizione aggiungendo NOT alla sintassi per definire il blocco condizionale, ad esempio per definire un blocco condizionale da mostrare solo se il sondaggio non è anonimo:
[!-- IF NOT survey.isanonymous --]
“Il sondaggio non è anonimo”
[!-- ENDIF NOT survey.isanonymous --]
survey.isanonymous è la condizione, se è vera la dicitura non viene mostrata, se è false la scritta verrà mostrata.
5. FILTRI
I Filtri permettono di eseguire un’operazione che modifica il valore del singolo segnaposto inserito nel documento e sono disponibili per ogni tipo di report odt, indipendentemente dalla sezione.
I filtri disponibili sono i seguenti:
- cut permette di limitare la lunghezza di un testo entro il valore indicato, ad esempio per limitare la lunghezza del nome dello Studente ad un massimo di 5 caratteri possiamo usare il segnaposto {student.name|cut[5]}
- daysbefore permette di calcolare una data anteriore alla data del segnaposto valorizzato, ad esempio se vogliamo ottenere la data corrispondente a 2 settimane prima dell’inizio del corso possiamo usare il segnaposto {course.startDate|daysbefore[14]}
- daysafter permette di calcolare una data posteriore alla data del segnaposto valorizzato, ad esempio se vogliamo ottenere la data corrispondente a 1 settimana dopo l’inizio del corso possiamo usare il segnaposto {course.startDate|daysafter[7]}
- lowercase cambia il valore del segnaposto in minuscolo, ad esempio per mostrare il nome del corso tutto in minuscolo usare il segnaposto {course.name|lowercase}
- uppercase cambia il valore del segnaposto in maiuscolo, ad esempio per mostrare il nome del corso tutto in maiuscolo usare il segnaposto {course.name|uppercase}
- uppercasefirst cambia il valore del segnaposto mettendo in maiuscolo la prima lettera, ad esempio per mostrare il nome del corso con la prima lettera in maiuscolo usare il segnaposto {course.name|uppercasefirst}
Se nel documento dovessero essere necessarie due versioni dello stesso segnaposto, una filtrata ed una non filtrata, basterà aggiungere un _ (trattino basso) alla seconda occorrenza del segnaposto, ad esempio usare {student.name|cut[5]} per mostrare il nome del corso abbreviato e {student_.name} per mostrare successivamente il nome del corso completo.
6. MODELLI DI ESEMPIO
7. COLLEGARE IL REPORT AL SONDAGGIO
Per collegare il Report al Sondaggio desiderato occorre andare nella sezione Quiz e Sondaggi, entrare in modifica del Sondaggio e selezionare nel campo Report dei risultati il Report creato in precedenza:

8. UTILIZZO DEL REPORT
Per poter utilizzare il Report appena caricato sarà sufficiente navigare all’interno di un Corso con il Sondaggio compilato e sotto la sezione Quiz e Sondaggi cliccare sull’icona a forma di occhio:

Di seguito cliccare il pulsante Download accanto al nome del Docente/Studente di cui si vuole scaricare il Sondaggio.
