Configurazione del contratto di iscrizione tramite modello ODT
Questa mini guida sulla configurazione del contratto di iscrizione della scuola da modello ODT, è suddivisa nei seguenti paragrafi:
- INTRODUZIONE
- DEFINIZIONE SEGNAPOSTI
- LISTE DI SEGNAPOSTI
- SEGNAPOSTI IN TABELLE
- BLOCCHI CONDIZIONALI
- ELENCO SEGNAPOSTI DISPONIBILI
- CARICAMENTO A SISTEMA DEL MODELLO ODT
- UTILIZZO DEL MODELLO DI CONTRATTO
- ESEMPI DI UTILIZZO
1. INTRODUZIONE
Nella direzione di consentire alla singola scuola una gestione autonoma di certificati, attestati, report e documenti di altro tipo, il sistema permette di preparare ed attivare in totale autonomia documenti che saranno poi esportabili per ogni corso e per ogni studente iscritto ai corsi.
Il report dovrà essere un modello in formato .odt, cioè OpenOffice, il contenuto potrà integrare un contenuto dinamico tramite l’utilizzo di segnaposto rispondenti ad una sintassi predefinita, potendo scegliere tra un ampio elenco di entità e di attributi che permettono di generare documenti di vario tipo.
Il sistema permetterà anche di accedere ai campi personalizzati dei corsi e degli utenti, o di inserire tabelle per elencare gli iscritti, con una sintassi piuttosto semplice, permettendo di generare documenti piuttosto ricchi.
La generazione di un report da modello odt permette di generare documenti in formato Open Document Text (documento di testo ODF, estensione .odt), contenenti informazioni dinamiche, utilizzando un file .odt, chiamato modello, nel quale sono inseriti degli appositi segnaposti, che, nel documento finale generato, verrano 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.
Il modello per generare il documento finale, da caricare in fase di configurazione del report, è un normale documento odt e dove c’è del testo, lì può essere inserito un segnaposto, all’interno del normale flusso del testo, anche dentro una tabella.
Questa tipologia di report può essere collegata ad un corso, ad uno studente di un corso o ad un docente di un corso e permette di generare attestati, certificati e report sul corso, può inoltre essere collegata ad uno studente dell’anagrafica studenti, per generare ad esempio delle schede di iscrizione oppure ad un docente dell’anagrafica docenti per generare una lettera di incarico; altro utilizzo possibile è come modello di contratto, da usare nella gestione degli ordini.
2. DEFINIZIONE DEI SEGNAPOSTI
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}.
Se il nome dell’oggetto è plurale, in inglese, significa che è una lista di valori, che può essere utilizzata all’interno di una tabella o per creare un elenco di valori nel documento finale, utilizzando una apposita sintassi per indicare l’inizio e la fine della lista; nella lista dei segnaposti che segue è indicato quando un segnaposto è una lista.
Alcuni segnaposto, ad esempio course, students, student, teachers, teacher, posseggono un attributo che ha un comportamento diverso, l’attributo customfields, la cui sintassi è {oggetto.customfields[codice]}, che serve per mostrare il valore di un campo personalizzato, ad esempio, per mostrare il valore del campo personalizzato del corso con codice _LIVELLO, si usa {course.customfields[_LIVELLO]}.
Riassumendo, se volessimo mostrare il nome, il codice, la sede e il campo personalizzato _LIVELLO, del corso:
{course.name}
{course.code}
{location.location}
{course.customfields[_LIVELLO]}
3. LISTE DI SEGNAPOSTI
La sintassi per utilizzare una lista di valori, prevede di indicare dove inizia la lista e dove finisce, nel blocco di testo racchiuso tra i due marcatori si inseriscono i segnaposti per mostrare i valori di ogni elemento della lista, ad esempio per elencare i nomi completi e l’indirizzo email di ogni studente del corso:
[!– BEGIN students –]
{students.fullName} {students.email}
[!– END students –]
la riga tra [!– BEGIN students –] e [!– END students –] sarà ripetuta per ogni studente, nel documento finale.
4. SEGNAPOSTI IN TABELLE
La sintassi per utilizzare una lista di valori all’interno di una tabella, prevede di indicare dove inizia la riga della tabella e dove finisce, nel blocco di testo racchiuso tra i due marcatori si inseriscono i segnaposti per mostrare i valori di ogni elemento della lista, ad esempio per elencare i nomi completi, l’indirizzo email ed il telefono mobile di ogni studente del corso, all’interno di una tabella:
[!-- BEGIN row.students --] {students.fullName} |
{students.email}
|
{students.mobile} [!-- END row.students --] |
la riga della tabella tra [!– BEGIN row.students –] e [!– END row.students –] sarà ripetuta per ogni studente, nella tabella del documento finale.
5. 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 incluso 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 order.isDiscounted –]
Sconto: {order.discount}
[!– ENDIF order.isDiscounted –]
order.isDiscounted è la condizione, se è vera l’ordine è scontato e viene mostrato lo sconto applicato, se è false l’ordine non è scontato e la riga dello sconto non verrà inserita nel documento finale.
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 l’ordine non è scontato:
[!– IF NOT order.isDiscounted –]
Sconto non applicabile.
[!– ENDIF NOT order.isDiscounted –]
order.isDiscounted è la condizione, se è vera l’ordine è scontato ed il testo “Sconto non applicabile” non verrà mostrato nel documento finale, se è false l’ordine non è scontato e quindi il testo “Sconto non applicabile” verrà mostrato nel documento finale.
Per usare un campo personalizzato come condizione usare la seguente sintassi:
[!– IF student.customfields[CERTIFICAZIONI] –]
Certificazioni: {student.customfields[CERTIFICAZIONI]}
[!– ENDIF student.customfields[CERTIFICAZIONI] –]
la riga all’interno del blocco verrà mostrata solo le certificazioni dello studente sono state indicate, cioè se il campo personalizzato con codice CERTIFICAZIONI dello studente non è vuoto.
6. ELENCO SEGNAPOSTI DISPONIBILI PER I MODELLI DI CONTRATTO
Azienda che emette la fattura:
SEGNAPOSTO |
VALORE |
NOTE |
{company.address} |
indirizzo |
|
{company.cap} |
codice di avviamento postale |
|
{company.city} |
città |
|
{company.country} |
codice della nazione |
|
{company.email} |
|
|
{company.mobile} |
telefono mobile |
|
{company.name} |
ragione sociale |
|
{company.phone} |
telefono fisso |
|
{company.province} |
provincia |
|
{company.taxcode} |
codice fiscale |
|
{company.vatnumber} |
partita iva |
|
{company.vatnumber} |
partita iva |
|
{company.vatnumber} |
partita iva |
|
{company.vatnumber} |
partita iva |
Contraente:
SEGNAPOSTO |
VALORE |
NOTE |
{contractor.address} |
indirizzo |
|
{contractor.birthdate} |
data di nascita |
|
{contractor.birthplace} |
luogo di nascita |
|
{contractor.birthprovince} |
provincia di nascita |
|
{contractor.cap} |
codice di avviamento postale |
|
{contractor.city} |
città |
|
{contractor.customfields[]} |
campo personalizzato |
tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
{contractor.email} |
|
|
{contractor.fullName} |
nominativo |
|
{contractor.gender} |
genere |
|
{contractor.mobile} |
telefono mobile |
|
{contractor.name} |
nome |
|
{contractor.pec} |
indirizzo di posta elettronica certificata |
|
{contractor.phone} |
telefono fisso |
|
{contractor.province} |
provincia |
|
{contractor.relation} |
relazione con lo studente |
valorizzato solo se il contraente è diverso dallo studente |
{contractor.surname} |
cognome |
|
{contractor.taxcode} |
codice fiscale |
|
{contractor.vatnumber} |
partita iva |
CONDIZIONE |
VALORE |
NOTE |
{contractor.isAdult} |
vero se il contraente è maggiorenne, falso altrimenti |
|
{contractor.isNotAdult} |
vero se il contraente è minorenne, falso altrimenti |
Corso, valorizzato solo se c’è un solo corso nell’ordine:
SEGNAPOSTO |
VALORE |
NOTE |
{course.academicYear} |
anno accademico |
|
{course.booksTitleList} |
libri di testo |
ogni titolo è separato con la virgola dal successivo |
{course.code} |
codice |
|
{course.cost} |
costo |
|
{course.customfields[]} |
campo personalizzato |
tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
{course.endDate} |
data fine |
|
{course.hours} |
numero di ore |
|
{course.lessons} |
numero di lezioni |
|
{course.locationCompleteAddress} |
indirizzo completo sede corso |
|
{course.locationName} |
nome sede corso |
|
{course.name} |
nome |
|
{course.startDate} |
data inizio |
|
{course.subject} |
materia di studio |
|
{course.teachersFullNameList} |
nominativi docenti |
ogni nominativo è separato con la virgola dal successivo |
Corsi, valorizzato solo se c’è più di un corso nell’ordine (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{courses.academicYear} |
anno accademico |
|
{courses.booksTitleList} |
libri di testo |
ogni titolo è separato con la virgola dal successivo |
{courses.code} |
codice |
|
{courses.cost} |
costo |
|
{courses.customfields[]} |
campo personalizzato |
tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
{courses.endDate} |
data fine |
|
{courses.hours} |
numero di ore |
|
{courses.lessons} |
numero di lezioni |
|
{courses.locationCompleteAddress} |
indirizzo completo sede corso |
|
{courses.locationName} |
nome sede corso |
|
{courses.name} |
nome |
|
{courses.startDate} |
data inizio |
|
{courses.subject} |
materia di studio |
|
{courses.teachersFullNameList} |
nominativi docenti |
ogni nominativo è separato con la virgola dal successivo |
Data corrente:
SEGNAPOSTO |
VALORE |
NOTE |
{currentDate.date} |
data corrente |
|
{currentDate.year} |
anno corrente |
|
{currentDate.day} |
giorno corrente |
da 01 a 31 |
{currentDate.month} |
mese corrente |
da 1 a 12 |
{currentDate.monthName} |
nome mese corrente |
|
{currentDate.weekDay} |
giorno della settimana |
Azienda cliente:
SEGNAPOSTO |
VALORE |
NOTE |
{customerCompany.address} |
indirizzo |
|
{customerCompany.cap} |
codice di avviamento postale |
|
{customerCompany.city} |
città |
|
{customerCompany.country} |
codice della nazione |
|
{customerCompany.email} |
|
|
{customerCompany.mobile} |
telefono mobile |
|
{customerCompany.name} |
ragione sociale |
|
{customerCompany.phone} |
telefono fisso |
|
{customerCompany.province} |
provincia |
|
{customerCompany.taxcode} |
codice fiscale |
|
{customerCompany.vatnumber} |
partita iva |
Elementi (righe) dell’ordine (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{details.type} |
tipo |
|
{details.amount} |
importo |
|
{details.description} |
descrizione |
|
{details.netAmount} |
importo al netto dell’iva |
|
{details.note} |
note |
|
{details.studentFullName} |
nominativo studente |
|
{details.vat} |
aliquota iva |
|
{details.vatAmount} |
Beni/servizi dell’ordine (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{goodsServices.name} |
nome |
|
{goodsServices.description} |
descrizione |
|
{goodsServices.price} |
prezzo |
Pagamenti rateizzati (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{installments.amount} |
importo rata |
|
{installments.description} |
descrizione |
|
{installments.expiry} |
data scadenza |
|
{installments.number} |
numero rata |
|
{installments.paid} |
se pagata |
|
{installments.paymentDate} |
data pagamento |
|
{installments.remaining} |
ammontare ancora da pagare |
|
{installments.stampAmount} |
importo bollo |
|
{installments.status} |
stato rata |
|
CONDIZIONE |
VALORE |
NOTE |
installments.isAbandoned |
vero se la rata è abbandonata, falso altrimenti |
|
installments.isCanceled |
vero se la rata è cancellata, falso altrimenti |
|
installments.isNotPaid |
vero se la rata è da pagare, falso altrimenti |
|
installments.isPaid |
vero se la rata è pagata, falso altrimenti |
|
installments.isPartiallyPaid |
vero se la rata è pagata parzialmente, falso altrimenti |
Pacchetti di lezioni (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{lessonPackets.cost} |
costo |
|
{lessonPackets.hours} |
ore di lezione |
|
{lessonPackets.minutesPerHours} |
durata dell’ora di lezione |
in minuti |
{lessonPackets.name} |
nome |
|
{lessonPackets.type} |
tipo |
1 se pacchetto aperto, 0 altrimenti |
Tessera di iscrizione:
SEGNAPOSTO |
VALORE |
NOTE |
{membership.cost} |
costo |
|
{membership.description} |
descrizione |
|
{membership.studentFullName} |
cognome e nome studente |
Modello del corso, valorizzato se vi è un solo corso nell’ordine:
SEGNAPOSTO |
VALORE |
NOTE |
{model.name} |
nome modello |
|
{model.rate} |
costo mensile |
Modelli dei corsi, valorizzato se vi sono due o più corsi nell’ordine (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{models.name} |
nome modello |
|
{models.rate} |
costo mensile |
Dati ordine:
SEGNAPOSTO |
VALORE |
NOTE |
{order.amount} |
importo totale dell’ordine |
|
{order.amountPaid} |
importo pagato |
|
{order.amountPaidOnOrder} |
importo pagato all’ordine |
|
{order.amountToPay} |
importo ancora da pagare |
|
{order.customfields[]} |
campo personalizzato |
tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
{order.date} |
data |
|
{order.discount} |
sconto |
|
{order.installmentsAmount} |
importo singola rata |
|
{order.installmentsCounter} |
numero di rate |
|
{order.note} |
note |
|
{order.paymentsCounter} |
numero di pagamenti effettuati |
|
{order.status} |
stato pagamento |
|
{order.teachingYear} |
anno accademico |
|
{order.type} |
tipo |
|
{order.year} |
anno |
|
CONDIZIONE |
VALORE |
NOTE |
order.isDiscounted |
vero se ordine scontato, falso altrimenti |
|
order.isNotDiscounted |
vero se ordine non scontato, falso altrimenti |
|
order.isNotStudentSameAsContractor |
vero se il contraente e lo studente non sono la stessa persona, falso altrimenti |
|
order.isNotVatAdded |
vero se l’ordine è senza iva, falso altrimenti |
|
order.isPartiallyPaid |
vero se l’ordine è parzialmente pagato, falso altrimenti |
|
order.isStudentSameAsContractor |
vero se il contraente e lo studente sono la stessa persona, falso altrimenti |
|
order.isVatAdded |
vero se l’ordine è con iva, falso altrimenti |
Pagamenti (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{payments.amount} |
importo |
|
{payments.date} |
data |
|
{payments.method} |
metodo di pagamento |
Offerte cumulative (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{packageOffers.cost} |
costo |
|
{packageOffers.name} |
nome |
|
{packageOffers.note} |
note |
|
{packageOffers.selfSubscription} |
sottoscrizione autonoma studente |
1 se lo studente si può iscrivere autonomamente, 0 altrimenti |
{packageOffers.type} |
tipo di offerta |
1 se offerta di tipo interno, 0 altrimenti |
Studente, valorizzato solo se l’ordine è relativo ad un solo studente:
SEGNAPOSTO |
VALORE |
NOTE |
{student.address} |
indirizzo |
|
{student.birthday} |
data di nascita |
|
{student.birthplace} |
luogo di nascita |
|
{student.cap} |
codice di avviamento postale |
|
{student.city} |
città |
|
{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.mobile} |
telefono mobile |
|
{student.name} |
nome |
|
{student.phone} |
telefono fisso |
|
{student.province} |
provincia |
|
{student.surname} |
cognome |
|
{student.taxcode} |
codice fiscale |
|
{student.vatnumber} |
partita iva |
Studenti, valorizzato solo se l’ordine è relativo a più studenti (lista):
SEGNAPOSTO |
VALORE |
NOTE |
{students.address} |
indirizzo |
|
{students.birthday} |
data di nascita |
|
{students.birthplace} |
luogo di nascita |
|
{students.cap} |
codice di avviamento postale |
|
{students.city} |
città |
|
{students.customfields[]} |
campo personalizzato |
tra le parentesi quadre deve essere indicato il codice del campo personalizzato |
{students.email} |
|
|
{students.fullName} |
nominativo |
|
{students.gender} |
genere |
|
{students.mobile} |
telefono mobile |
|
{students.name} |
nome |
|
{students.phone} |
telefono fisso |
|
{students.province} |
provincia |
|
{students.surname} |
cognome |
|
{students.taxcode} |
codice fiscale |
|
{students.vatnumber} |
partita iva |
Anno accademico:
SEGNAPOSTO |
VALORE |
NOTE |
{teachingYear.endDate} |
data finale |
|
{teachingYear.firstLesson} |
data prima lezione |
|
{teachingYear.lastLesson} |
data ultima lezione |
|
{teachingYear.name} |
nome anno accademico |
|
{teachingYear.startDate} |
data iniziale |
7. CARICAMENTO A SISTEMA DEL MODELLO DI CONTRATTO
Per inserire il modello del contratto di iscrizione nel sistema navigare su Configurazione → Reports e cliccare il pulsante “Aggiungi report“.
Dalla prossima schermata compilare i seguenti campi:
- Nome*: il nome del report (ad esempio “Contratto standard”, “Contratto corsi estivi”, “Contratto corsi di lingua”, etc)
- Descrizione: eventuale descrizione del contratto di iscrizione
- Tipo di report: scegliere l’opzione “Modello di contratto” per poter caricare il proprio modello
- Sezione in cui mostrare il report *: Ordini
- Estensione del modello: OpenOffice Write (.odt)
- Modello del report: caricare il modello di contratto in formato ODT
- Seleziona tipo: selezionare il tipo di estensione del file che dovrà avere il contratto in sede di scaricamento o invio al cliente, potendo scegliere tra:
- OpenOffice Write (.odt)
- Portable Document Format (.pdf)
- Ordine *: l’ordine di elencazione dei report (es. 1, 2, 3, etc)
Cliccare il pulsante “Aggiungi report” per salvare l’operazione.
Dopo aver caricato il modello, entrare in modifica dello stesso (cliccando l’icona con la pennetta di modifica) e spuntare il checkbox “Abilitato” per abilitare l’esportazione del report dai corsi e cliccare uno dei due pulsanti in fondo alla pagina per salvare l’operazione.
Infine, cliccare l’icona sulla riga del modello caricato, per abilitare gli account amministrativi che potranno utilizzare il modello inserito, sia in sede di iscrizione, sia in sede di scaricamento o invio del contratto al cliente.
8. UTILIZZO DEL MODELLO DI CONTRATTO
In fase di iscrizione dello studente, molto semplicemente, sarà possibile scegliere quale modello di contratto utilizzare tra quelli inseriti ed abilitati, e procedere poi con la ordinaria emissione dell’ordine.
Successivamente, navigando alla voce di menù Gestione finanziaria → Gestione degli ordini, alla voce “Modello di contratto“, il sistema indicherà il modello di contratto che è stato scelto in sede di iscrizione dello studente.
Sarà possibile quindi scaricare il file dell’ordine emesso (nel formato scelto durante la configurazione del modello di contratto) oppure inviarlo tramite email, cliccando l’icona .
Ora, dal prossimo pop-up mostrato dal sistema, sarà possibile:
- Modello di contratto: scegliere di scaricare/inviare al cliente il contratto di iscrizione, utilizzando un diverso modello rispetto a quello scelto in fase di iscrizione, tramite il relativo menù a tendina. Di default il sistema preseleziona il modello di contratto scelto in fase di iscrizione
- Scarica: scaricare il file del contratto di iscrizione (nell’estensione che è stata scelta in fase di configurazione, quindi PDF oppure ODT)
- Invia al cliente: inviare al cliente il contratto di iscrizione tramite email
9. ESEMPI DI UTILIZZO
1. Esempio modello di contratto standard