Redazione dei Testi DOCX

Tramite la funzione “Documenti Base”, disponibile nel menù Amministrazione del Sistema > Gestione Modelli Documenti > Documenti Base , è possibile personalizzare i modelli dei testi DOCX. Questo menù è solitamente riservato al fornitore, quindi non visibile dagli utenti “base”. Qualora si voglia dare a un utente la possibilità di personalizzare i testi (previa opportuna formazione) andrà abilitato alla visualizzazione di questo punto di menu.

Il testo di tipo DOCX, utilizza il formato open previsto da Microsoft. E' quindi utilizzabile (con piccole differenze dovute all'editor) sia con Word, che con Openoffice, che Libreoffice. In CWOL utilizziamo Onlyoffice che permette la modifica del testo direttamente da browser.

Per il parsing del testo, viene utilizzato Smarty, motore di template in grado di costruire dinamicamente docx e/o pagine html.

Font redazione testo

Il font utilizzato per la redazione del testo è Arial, dimensione 10

Nome testo, Classificazioni e Funzioni

Quando si crea un nuovo template docx, è necessario associare un nome (suffisso cwd_ + nome testo), una descrizione che identifica il testo, una classificazione che può essere Anagrafe, Elettorale o Stato Civile, il tipo che è Docx e una funzione che identifica la tipologia del testo (Certificato, comunicazione ecc..)

Lista guida

Il caricamento dei dati avviene tramite il richiamo di una lista guida mediante ciclo while definita nel programma chiamante:

Per i demografici, i suffissi a disposizione sono tre:

* ANAGRAFE: $ANA
* ELETTORALE: $ELE
* STATO CIVILE: $SCIV

☝ Non è possibile indicare un suffisso differente da quello dell'area di competenza in quanto il testo non funzionerebbe.

esempio sintassi scrittura lista guida:
@{while $ANA->readRecord()}@
... CORPOTESTO ...
@{/while}@

Variabili

la sintassi delle variabili semplici è la seguente: @{$SUFFISSO LISTA + nome variabile}@

Le variabili che vanno a stampare i dati contenuti nella lista guida principale, avranno lo stesso suffisso di quest'ultima.

Esse possono essere riportate con tre diverse sintassi ma l'output non cambia. (☝ E' però fortemente consigliata la prima metodologia contratta di scrittura.)

Esempio:
* @{$ANA::ana_indirizzo}@
* @{$ANA->campo('ana_indirizzo')}@
* @{$GUIDA.DEMOGRAFICI.ANAGRAFE.INDIR_ANA.ana_indirizzo}@

Le variabili possono essere scritte manualmente oppure possono essere richiamate dal plugin accessibile dal menu Plugin > Dizionario.

GUIDA: si trovano tutte le variabili suddivise per area

BASE: sono variabili generiche precaricate, indipendenti dalla lista guida principale utilizzata. Possono essere inserite sia all'interno che al di fuori del ciclo.

INCLUDE: possono essere aggiunti come intestazione o come piè di pagina per stampare blocchi di testo utilizzabili per più testi, come a esempio l'intestazione di un comune con logo.

☝ Quando si sceglie una variabile dal dizionario, prestare sempre attenzione al suffisso poiché quello proposto non è detto sia adeguato ai dati che sto stampando.

Esempio: si sta predisponendo un estratto di nascita e si ha la necessità di stampare la data di nascita. Se si cerca la variabile nel dizionario, essa verrà proposta con il suffisso $ANA @{$ANA::ana_nascita_data}@ La stessa variabile però, può' esser utilizzata anche dallo stato civile dove si sta ciclando la lista guida $SCIV, per cui la variabile dovrà prenderà il nome di @{$SCIV::ana_nascita_data}@

Variabili particolari con passaggio parametro

Ci sono variabili come quelle delle diciture che richiedono il passaggio di parametri.

Esempio:
@{$DICITURE->campo('etichetta(1005)')}@

Cicli per caricare dati aggiuntivi

E' possibile che durante la stesura di un testo si abbia la necessità di stampare dei dati in più rispetto a quelli presenti nella lista guida principale. Oltre al while è possibile sfruttare anche il foreach per elaborare i dati.

Esempio Certificato di famiglia del soggetto X:

Nel testo si avrà:
- un primo ciclo while che va a caricare i dati del soggetto principale:
@{while $ANA->readRecord()}@
- un secondo ciclo while che va a caricare i dati dei familiari
@{$FAMI = $ANA->listaGuida('anaxfami')}@
@{while $FAMI->readRecord()}@
@{$FAMI::ana_cognome}@ ....
@{/while}
@{/while}

☝ Come si può vedere dall'esempio, le variabili stampate all'interno del secondo ciclo hanno come suffisso $FAMI. Il suffisso $FAMI assegnato è un codice parlante ma in questo caso lo si può chiamare come si preferisce. L'importante è che non sia un nome lungo in quanto la risoluzione del testo occupa lo spazio delle variabili scritte.

Le liste ciclo attualmente utilizzabili sono queste:
* ana_elenco_vicendeanag -> elenco vicende anagrafiche
* anaresid_storica -> Indirizzo soggetto a una certa data
* anaxconiuge -> Reperisce i dati del coniuge
* anaxconvivente -> Carica i dati del convivente di fatto
* anaxelettore -> Stampa dati elettore (solo tipolista 01)
* anaxfami -> Elenco Familiari
* anaxfami_storica -> Elenco Familiari a una certa data
* anaxindirizzi -> Ciclo ripetuto per tutti gli indirizzi italiani del soggetto
* anaxstorico_soggetto -> Reperisce le variazioni storiche di generalità e dati personali del Soggetto
* cidxultima -> Ultima carta identità attiva
* DOCDOCUM -> Documenti attivi
* DOCUM -> Documenti
* pratxfamiglia -> Elenco componenti della Famiglia nella pratica (solo attivi/confermati)
* tessxattiva -> Stampa la tessera elettorale attiva

Condizioni

E' possibile operare sulle variabili sfruttando anche l'istruzione if.

Esempio:
@{if $j == 3}@
$j è uguale a 3
@{else}@
$j è diverso da 3
@{/if}@

Per approfondire gli operatori da utilizzare nell'istruzione, guardare il link di riferimento Condizioni e operatori Smarty

Formattazione delle variabili

Attraverso funzioni specifiche di Smarty possiamo impostare una formattazione sulla variabile. Possono essere consultate nello specifico consultando questo link Modificatori di variabili

Esempio formattazione variabile in maiuscolo:
@{$BASE.MESE_CORRENTE_LETTERE|upper}@

Comandi speciali, salto pagina

Rottura pagina: @{$PAGE_BREAK}@

Filtri da associare al testo

E' possibile associare al testo dei filtri, dalla sezione Dati Aggiuntivi.

INCLUDE

E' possibile richiamare nell'intestazione e a piè di pagina, uno o più include per stampare blocchi di testo utilizzabili per più testi, come a esempio l'intestazione di un comune con logo. Nell'include possono essere impostate soltanto variabili precaricate, variabili BASE o variabili smarty come la data e l'ora.

Sintassi richiamo include:
@{$INCLUDE.CWD_intestaCertificati}@

☝ E' possibile includere solo gli include della classificazione di competenza. Se si include in un testo classificato come “ANAGRAFE” un include dell'Elettorale, il contenuto di esso non verrà stampato.