Guida Redattore PDF

Da Diritto Pratico.

L'app per creare le apps di Diritto Pratico

work in progress...

Questa guida è in fase di redazione e continuo aggiornamento. Torna spesso a visitarla!

Indice

Introduzione

Se stai leggendo queste righe probabilmente conosci già Apps! Avvocati i "redattori assistiti" di Diritto Pratico con i quali predisporre in pochi passaggi, direttamente online, atti e documenti ricorrenti nella professione forense (e non solo). Fra le applicazioni più conosciute e utilizzate quella per la redazione assistita della relata di notifica via PEC, il calcolo e la verifica delle impronte informatiche, la nota deposito documenti con eventuali attestazioni di conformità.

Peculiarità di tutte le apps è la loro accessibilità: non occorre alcuna iscrizione, nessun account, nessun software da installare, nessun dispositivo particolare potendo chiunque accedervi, anche in mobilità, con un semplice smartphone. E il tutto, naturalmente, in modo assolutamente gratuito!

Il Redattore PDF è la nuova applicazione per consentire a chiunque di "programmare" autonomamente nuove apps! o personalizzare, integrare e migliorare quelle create da altri Colleghi!

Come funziona?

Tutto parte da un modello "ospitato" su una pagina di questo wiki o salvato sul proprio PC. Sotto il cofano dell'app Redattore PDF gira un "motore" in grado di interpretare particolari istruzioni inserite nel modello medesimo e che consentono di compiere varie operazioni sul testo: è ad esempio possibile calcolare interessi, termini processuali, l'importo del contributo unificato, i compensi ex dm 55-2014, il risarcimento del danno biologico, eseguire calcoli matematici indicando particolari regole di valorizzazione come arrotondamenti e limiti di valore...

Quali le applicazioni pratiche?

Dalla redazione automatizzata di un preventivo personalizzato (con indicazione dei compensi per fase, le spese ipotizzabili ecc. come ad esempio questo) alla redazione di una richiesta di pagamento con calcolo degli interessi al tasso legale o commerciale e il cacolo del compenso (esempio). Dalla redazione di un ricorso per decreto ingiuntivo su fatture (esempio) al successivo atto di precetto (esempio) ed al pignoramento presso terzi con individuazione automatica del tribunale competente e degli istituti di credito più vicini al debitore quali terzi pignorati.

Quanto è complesso utilizzare il Redattore PDF?

Utilizzare modelli già pronti non presenta alcuna difficoltà. La filosofia di funzionamento è quella di tutte le apps di Diritto Pratico:

  1. scelta del modello da utilizzare
  2. compilazione dei campi variabili
  3. personalizzazione libera del testo
  4. download del documento direttamente in formato PDF ovvero "copia e incolla" sul proprio elaboratore di testi preferito.

Creare i modelli è ovviamente meno immediato ma, come vedremo, tutt'altro che complesso. Obiettivo di questa guida è proprio quello di illustrare tutte le funzionalità del "motore" del Redattore PDF per consentire a chiunque di creare le proprie apps.

Come creare la pagina wiki contenente il modello personalizzato

Per creare un nuovo modello "condiviso", utilizzabile cioè da chiunque, deve essere predisposta una nuova pagina nel wiki di Diritto Pratico: Redattore PDF lo può fare automaticamente a patto di essersi preventivamente registrati sul wiki di Diritto Pratico. Inutile dire che la registrazione sul wiki è assolutamente gratuita e richiesta solo per combattere il fenomeno dello spamming.

Possiamo a questo punto lavorare su un modello esistente che vogliamo modificare oppure iniziare un progetto completamente nuovo: nel primo caso apriamo l'editor del codice cliccando su "modifica il modello", nel secondo colleghiamoci alla pagina di sviluppo raggiungibile a questo indirizzo https://apps.dirittopratico.it/redattore/tester.html o cliccando sul pulsante "crea una nuova app".

In entrambi i casi sarà sufficiente inserire le credenziali di accesso al wiki, scegliere un nome per il nostro lavoro e cliccare su "salva le modifiche sul wiki".

ATTENZIONE: i modelli ospitati sul wiki sono PUBBLICI, fai attenzione a non inserire dati sensibili o contenuti che non vuoi divulgare! Se hai creato un modello altamente personalizzato che ritieni non sia utile alla community, puoi sempre salvarlo in locale sul tuo PC: per utilizzarlo dovrai però caricalo ogni volta cliccando su "carica un modello".


E' anche possibile, se vuoi e lo sa fare, lavorare lato wiki: scegli il nome del tuo modello (che sarà il nome della pagina wiki) e crea la pagina. A questo punto puoi scrivere una breve introduzione/descrizione o quello che vuoi e poi inserire il testo del modello utilizzando il template "modello". Per far questo puoi fare copia e incolla del seguente codice:

{{modello|1=
 
QUI IL TESTO E LE ISTRUZIONI DEL TUO MODELLO
 
}}

Lavorare lato wiki consente di categorizzare i modelli per renderli navigabili direttamente dall'applicazione Redattore PDF e di inserire più modelli in una stessa pagina.

Se non sai come funziona un wiki, non hai alcuna nozione di html (utile per "formattare" in modo più preciso il testo dei modelli) e men che mai sai cosa sia un linguaggio di programmazione non disperare: non serve. Utilizza il primo metodo illustrato e pensa che è molto più importante il tuo know-how giuridico. Immagina cosa potrebbe esserti utile per automatizzare certe procedure ripetitive del tuo lavoro, quelle che ti fanno perdere più tempo e parliamone nel forum.


Campi e Variabili

Fig. 1
Per capire il funzionamento del redattore occorre assimilare due concetti fondamentali: l'utente deve poter inserire un'informazione (compilando un campo) che verrà ricordata e riutilizzata nel testo (per mezzo della variabile che ne rappresenta il contenuto).

Chiariremo subito con un modello semplicissimo.

Ogni esempio a seguire è immediatamente verificabile e "sperimentabile" semplicemente cliccando sull'icona a forma di taccuino. In tal modo il modello di esempio sarà caricato ed "eseguito" sul redattore PDF. Dal Redattore PDF, cliccando sulla scritta "modello" (fig. 1), è possibile aprire l'editor del codice sorgente per poterlo modificare e verificare immediatamente gli effetti con un clic su "rigenera il modello modificato". Infine, per sperimentare liberamente senza alcun modello precaricato dando vita ad un nuovo progetto, collegati alla piattaforma di sviluppo.


Partiamo:

Ciao $[nome], come stai?

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Nell'esempio viene richiesto all'utente di inserire un "nome" utilizzato per completare la frase Ciao ... come stai?. Per far questo viene definito (in questo caso con la sintassi "semplificata") il campo chiamato "nome" racchiuso tra i caratteri di controllo $[ ... ]. Sintassi semplificata perchè, come vedremo, è possibile inserire fra i caratteri di controllo che "delimitano" il campo vere e proprie istruzioni per compiere operazioni più complesse.

In questo caso il nome del campo è quanto sarà mostrato all'utente in fase di compilazione ("nome") e al tempo stesso il nome della variabile che ricorderà quanto inserito dall'utente. Per riferirsi alla variabile sarà sufficiente inserire nel testo il nome del campo preceduto dal carattere di controllo $. Ad esempio:

Ciao $[nome], come stai?

Il dato inserito dall'utente è $nome.

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Abbiamo detto che quella appena illustrata è una sintassi semplificata per la definizione di un campo e della relativa variabile. Potremo tuttavia avere la necessità di essere più descrittivi per facilitare l'utente nella compilazione del modulo. Ad esempio:

Il tuo cliente si chiama $[Inserisci il nome e cognome della parte rappresentata].

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Così facendo, tuttavia, la variabile sarà decisamente poco "maneggevole" se dovessimo adoperarla in altre parti del testo. Da notare che gli spazi nel nome della variabile sono sostituiti "d'ufficio" dal carattere _ che dunque, nell'esempio, diverrà $Inserisci_il_nome_e_cognome_della_parte_rappresentata. Decisamente troppo macchinoso!

Specificare il nome e la descrizione di un campo

Vediamo allora come indicare, in modo distinto, il nome della variabile e la descrizione del campo che sarà mostrata all'utente in fase di compilazione grazie alle istruzioni nome e descrizione

Il tuo cliente si chiama $[nome:parte;descrizione:Inserisci il nome e cognome della parte rappresentata;].

Come detto, il tuo cliente è $parte.

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Ecco dunque la sintassi "ordinaria" (per distinguerla da quella semplificata che abbiamo visto prima e che può sempre tornare utile quando una determinata variabile non dovrà più essere utilizzata nel testo): $[nome:nomevariabile;descrizione:descrizionecampo;]

Abbiamo il nostro "contenitore" $[ ... ] con dentro l'istruzione per nominare la variabile nome:nome della variabile; e quella per specificare la descrizione descrizione:descrizione da mostrare all'utente;. Da notare che ogni istruzione all'interno del contenitore è delimitata dal carattere punto e virgola ;. Questa è una regola sintattica generale, ogni istruzione ha infatti questa struttura: istruzione:argomento(eventualiparametri);. Ma vedremo via via con gli esempi.

Verificare quanto inserito dall'utente

Immaginiamo adesso di dover richiedere all'utente l'inserimento del nome e del codice fiscale:

Il tuo cliente si chiama $[nome:parte;descrizione:Inserisci il nome e cognome della parte rappresentata;] ed il suo codice fiscale è $[nome:cfparte;descrizione:Inserisci il codice fiscale della parte rappresentata;formato:cf;]

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Proviamo ad avviare il redattore e ad inserire, nel campo del codice fiscale, un testo qualsiasi. Riceveremo un errore perchè, in questo caso, abbiamo specificato - grazie all'istruzione formato - una regola di valorizzazione del campo che, nell'esempio, deve contenere un codice fiscale formalmente valido.

Quindi, allorchè si renda necessario verificare quanto inserito dall'utente (ad esempio per evitare che questi compia errori di digitazione) dovremo indicare al redattore "di cosa si tratta" per mezzo dell'istruzione formato. Ad esempio, se vogliamo che venga inserita una mail formalmente valida, potremo specificare formato:email.

Calcoli matematici

Redattore PDF è in grado di eseguire operazioni matematiche anche relativamente complesse. Le formule possono essere inserite nel modello essenzialmente con due modalità:

  1. in sede di definizione di un campo/variabile racchiudendo la formula fra due parentesi tonde poste immediatamente dopo il nome del campo
  2. racchiudendo la formula fra due segni "uguale" =

Un esempio per chiarire:

$[importo]

$[nome:importonetto($importo/1,22);]

L'IVA scorporata da € $importo è pari ad € =$importo-$importonetto=

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Apriamo una parentesi (anzi due!) sulla possibilità di inserire "blocchi commento" nel testo del modello per renderlo più comprensibile e per ottenere anche un altro interessante risultato. "Eseguendo" l'esempio precedente l'importo inserito comparirià anche all'inizio del testo. Questo è normale poichè, di regola, all'istruzione utilizzata per generare il campo (nell'esempio $[importo]) verrà sostituito quanto inserito dall'utente. La seconda istruzione, invece, assegnando un valore ad una variabile senza chiedere nulla all'utente, non sortirà lo stesso effetto.

Come far sparire dal testo elaborato dal redattore il primo importo? Racchiudendo l'istruzione per la generazione del campo in un blocco commento, delimitato da due semplici doppie parentesi tonde + il carattere "due punti" ::

((: questo è un commento visibile solo "lato modello". Tutto ciò che è ricompreso tra due doppie parentesi tonde con i due punti non farà parte del testo elaborato. Tuttavia ogni istruzione inclusa sarà eseguita dal motore del Redattore PDF.

Chiediamo quindi all'utente di inserire un importo e già che ci siamo definiamo anche il formato così avremo l'importo correttamente formattato con due decimali...

$[nome:importo;formato:valuta;]

e calcoliamo l'importo al netto dell'IVA...

$[nome:importonetto($importo/1,22);]

adesso chiudiamo il commento con due punti e due parentesi tonde :))

L'IVA scorporata da € $importo è pari ad € =$importo-$importonetto= ((: mostriamo il risultato :))

Infatti $importonetto + =$importo-$importonetto= = $importo ((: mostriamo anche la riprova! :))

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Blocchi di campi replicabili

In molti casì potrà essere utile consentire all'utente di inserire più elementi a sua discrezione: si pensi ai dettagli delle fatture poste a base di un ricorso per decreto ingiuntivo. Come al solito chiariamo con un esempio:

<blocco:fatture>

fattura n. $[nome:Fattura;descrizione:Riferimenti fattura (numero e data);] per l'importo di € $[nome:FatturaImporto;descrizione:Importo fattura;formato:valuta;]; </blocco:fatture>

$[nome:fatture;descrizione:aggiungi una nuova fattura;aggiungiblocco;]

Corrispettivo complessivo di € $[nome:totale($FatturaImporto);]$totale;

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Nell'esempio chiediamo all'utente di descrivere una fattura (numero e data) e di specificare il suo importo. Da notare che le due istruzioni per generare i campi sono racchiuse tra due tag, il primo di apertura <blocco:fatture> ed il secondo di chiusura </blocco:fatture>. I due tag delimitano, nel nostro esempio, un blocco denominato "fatture" che l'utente potrà replicare cliccando sul pulsante generato dall'istruzione $[nome:fatture;descrizione:aggiungi una nuova fattura;aggiungiblocco;] (dove nome si riferisce al nome del blocco da replicare e aggiungiblocco è l'istruzione per mostrare il pulsante).

Da notare che la variabile $FatturaImporto rappresenterà nel nostro documento finale la somma di tutti gli importi inseriti dall'utente.

Operazioni con le date

Redattore PDF è in grado di eseguire calcoli con le date ad esempio aggiungendo o sottraendo, ad una data fornita dall'utente, giorni, mesi o anni. E' anche possibile imporre il calcolo tenendo conto del periodo di sospensione feriale, della posticipazione del termine al primo giorno non festivo, calcolare termini a ritroso e a giorni liberi.

Vediamo un semplice esempio per calcolare i termini dell'art. 183 comma VI cpc:

Data inserita: $[nome:data;descrizione:inserisci una data;formato:data;]

Memoria n. 1: $[nome:primo($data + 30gg);primononfestivo;sospensioneferiale;]$primo

Memoria n. 2: $[nome:secondo($primo + 30gg);primononfestivo;sospensioneferiale;]$secondo

Memoria n. 3: $[nome:terzo($secondo + 20gg);primononfestivo;sospensioneferiale;]$terzo

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Nell'esempio chiediamo all'utente di inserire una data. Vengono poi definite tre variabili $primo, $secondo e $terzo contenenti rispettivamente la scadenza del primo, del seconto e del terzo termine come prevista dall'art. 183 comma VI cpc. Le formule utilizzate non necessitano, ovviamente, di spiegazione. Da notare che specificando le opzioni primononfestivo e sospensioneferiale chiediamo al redattore di posticipare il risultato alla prima data non festiva e di tenere conto del periodo di sospensione feriale. Altra opzione disponibile ma non utilizzata nell'esempio è giorniliberi.

E' anche possibile calcolare il numero di giorni, mesi o anni che separano due date semplicemente indicando in argomento le due date e l'eventuale "modificatore" per specificare quale risultato vogliamo ottenere: nome:periodo($data1 $data2 opzione); dove $data1 e $data2 sono le date e opzione può essere mesi o anni per calcolare la differenza rispettivamente in mesi o anni. Se non specificata opzione il calcolo verrrà eseguito in giorni.

Vediamo un esempio per calcolare l'età di una persona:

((:

$[nome:datanascita;descrizione:Inserisci la tua data di nascita;formato:data;]

$[nome:giorni($datanascita $DATA);]

$[nome:mesi($datanascita $DATA mesi);]

$[nome:anni($datanascita $DATA anni);]

chiudiamo il blocco commento:)) Se sei nato $GIORNOSETTIMANA($datanascita) $datanascita significa che hai $anni anni. Hai messo alle spalle $mesi mesi per un totale di $giorni giorni!

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


N.B.: Redattore PDF lavora soltanto con date espresse nel formato esteso gg MESE anno (giorno in cifre, mese in lettere non abbreviato, anno in cifre, es: 3 agosto 2015): è dunque fondamentale, in sede di costruzione del campo, specificare che stiamo richiedendo una data con formato:data; in modo da consentire il riconoscimento di una data inserita dall'utente anche in modo alternativo (es. 3 ago 2015, 3/8/15, 03082015 ecc.). I calcoli per somma di giorni, mesi o anni devono essere compresi tra il 1970 ed il 2038 e restituiscono una data nel medesimo formato gg MESE anno. Ove sia necessario individuare il giorno della settimana è possibile utilizzare l'istruzione $GIORNOSETTIMANA(data)

Lavorare con le tabelle a scaglioni

Redattore PDF offre la possibilità di valorizzare una variabile attingendo da una tabella a scaglioni. Questa funzionalità permette di eseguire non solo i calcoli più ovvi come la determinazione del CU o di un compenso ex DM 55/2014 ma anche determinare, ad esempio, l'entità del risarcimento da danno micropermanente:

((:

Richiediamo la data di nascita:

$[nome:datanascita;descrizione:Inserisci la data di nascita;formato:data;]

Calcoliamo l'età in anni semplicemente contando gli anni tra la data di oggi ($DATA) e quella inserita dall'utente:

$[nome:anni($DATA $datanascita anni);]

Chiediamo di indicare l'IP:

$[nome:ip;descrizione:Inserisci la percentuale di invalidità permanente;tipo:select(1%@1//2%@2//3%@3//4%@4//5%@5//6%@6//7%@7//8%@8//9%@9);]

Calcoliamo il risarcimento attingendo dalla tabella a scaglioni "micropermenenti": come scaglione utilizziamo l'età ridotta di un anno e come n-elemento quello rappresentato dalla IP:

$[nome:risarcimento($anni-1);scaglione:micropermanenti §ip;]

chiudiamo il blocco commento :))

Data di nascita: $datanascita ($anni anni)

Risarcimento spettante per una IP accertata del $ip: € $risarcimento

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Come funziona?

Anzitutto occorre poter disporre di una tabella di riferimento sulla pagina Tabelle servizio Redattore PDF. Le tabelle, nel markup mediawiki, hanno la seguente struttura:

{|
!CU
|1100:43-64,50-86
|5200:98-147-196
|26000:237-355,50-474
|52000:518-777-1036
|260000:759-1138,50-1518
|520000:1214-1821-2428
|999999999999999:1686-2529-3372
|}

La prima {| e l'ultima |} riga aprono e chiudono la tabella.

La seconda riga indica il nome della tabella: fondamentale che sia univoco rispetto a quello di tutte le altre tabelle sulla pagina.

I dati nella tabella seguono la seguente logica:

|limite superiore scaglione:dato_1,dato_2,dato_3,dato_4, ... dato_n

Nell'esempio abbiamo una tabella con tre valori per scaglione corrispondenti, rispettivamente, al CU per i giudizi ordinari di primo grado, per l'appello e per la cassazione.

La sintassi per accedere ad un determinato valore è la seguente:

$[nome:nomevariabile(valore);scaglione:nometabella numeroelemento;]

Nell'esempio, posto $valorecausa il valore della causa, potremo avere:

$[nome:CU($valorecausa);scaglione:CU 1;]

per assegnare alla variabile $CU l'importo del Contributo Unificato per una causa ordinaria di primo grado di valore $valorecausa.

Piuttosto che il numeroelemento possiamo anche specificare una percentuale: in tal caso il valore assegnato alla variabile sarà quello, in percentuale, calcolato fra il primo e l'ultimo elemento. Utile in varie circostanze come nel calcolo dei compensi professionali (vedi ad esempio il sorgente della demo Preventivo opposizione decreto ingiuntivo giudice di pace).

Lavorare con le tabelle

da scrivere!

Lavorare con i dataset

Redattore PDF offre la possibilità di lavorare con i dataset in formato csv (comma separated values) consentendo la ricerca fulltext su tutto l'archivio o su campi specifici. Per far questo è disponibile il #tipo "dataset" (che attiva una funzione di autocopletamento associabile a qualsiasi campo richiesto all'utente con possibilità di assegnare a varibili correlate qualsiasi informazione singola o aggregata estrapolabile dal record individuato) e l'istruzione $DATASET (che consente l'estrazione di informazioni dal dataset in forma aggregata secondo filtri di ricerca e pattern definibili dall'utente).

Vediamo la sintassi del "tipo:dataset":

tipo:dataset( dataset | pattern | regole autocompletamento)

dove:

  • dataset è il nome del dataset (se "ospitato" da Diritto Pratico) o l'url del file in formato .csv reperibile in rete
  • pattern individua quali campi del dataset devono essere aggregati per l'autocompletamento e quali assegnati alle varibili correlate create automaticamente da RedattorePDF con la seguente sintatti: campi autocompletamento separati da spazi , campi da assegnare alle varibili automatiche separati dal carattere <code>- (o aggregati se separati da spazi)</code>. Può sembrare complicato ma gli esempi successivi ne chiariranno la semplice logica.

Vediamo un esempio. Il Ministero della Salute mette a disposizione un dataset openData relativo alle farmacie operanti su tutto il territorio nazionale. Il dataset, scaricabile all'indirizzo http://www.dati.salute.gov.it/imgs/C_17_dataset_5_download_itemDownload0_upFile.CSV per ogni record riporta le seguenti informazioni:

  1. CODICEIDENTIFICATIVOFARMACIA
  2. CODFARMACIAASSEGNATODAASL
  3. INDIRIZZO
  4. DESCRIZIONEFARMACIA
  5. PARTITAIVA
  6. CAP
  7. CODICECOMUNEISTAT
  8. DESCRIZIONECOMUNE
  9. FRAZIONE
  10. CODICEPROVINCIAISTAT
  11. SIGLAPROVINCIA
  12. DESCRIZIONEPROVINCIA
  13. CODICEREGIONE
  14. DESCRIZIONEREGIONE
  15. DATAINIZIOVALIDITA
  16. DATAFINEVALIDITA
  17. DESCRIZIONETIPOLOGIA
  18. CODICETIPOLOGIA
  19. LATITUDINE
  20. LONGITUDINE
  21. LOCALIZE

Se volessimo consentire all'utente di selezianare una qualsiasi farmacia ed estrarne i dati associati?

$[nome:farmacia;descrizione:Individua la farmacia iniziando a scrivere quello che conosci (nome, città, indirizzo, cap...);tipo:dataset(http://www.dati.salute.gov.it/imgs/C_17_dataset_5_download_itemDownload0_upFile.CSV%7C4 3 8,1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21);formato:libero;]

L'istruzione definisce un campo di nome farmacia (variabile principale $farmacia) chiedendo all'utente di iniziare a scrivere ciò che conosce della farmacia da trovare (nome, città, indirizzo cap...). il tipo:dataset istruisce RedattorePDF di lavorare con il dataset reperibile all'indirizzo specificato ed indica come pattern per l'autocompletamento i campi n. 4 (DESCRIZIONEFARMACIA), 3 (INDIRIZZO) e 8 (DESCRIZIONECOMUNE). Ciò significa che iniziando a scrivere nel campo saranno filtrati i record che soddisfano i criteri di ricerca e mostrati nome, indirizzo e città delle farmacie trovate. I numeri dopo la virgola indicano invece quali campi del record selezionato dall'utente vogliamo utilizzare nel nostro documento (nell'esempio tutti i campi del dataset da 1 a 21) che verranno così automaticamente assegnati alle variabili automatiche $farmacia1, $farmacia2, $farmacia3 ecc..



Calcolare interessi e rivalutazione monetaria

Redattore PDF offre la possibilità di calcolare interessi e rivalutazione monetaria. Vediamo un esempio:

((: $[nome:importo;descrizione:Inserisci l'importo;]

$[nome:data;descrizione:Inserisci la data dalla quale far decorrere interessi e rivalutazione monetaria;formato:data;]

$[nome:interessi($importo);interessi:tasso legale $data $DATA;]

$[nome:interessicom($importo);interessi:tasso commerciale $data $DATA;]

$[nome:sommarivalutata($importo);rivalutazione: $data $DATA;] :))

Interessi e rivalutazione dal $data ad oggi sulla somma di € $importo

Interessi al tasso legale: € $interessi

Interessi al tasso di mora commerciale: € $interessicom

Somma rivalutata: $sommarivalutata

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Per il calcolo degli interessi occorre poter disporre di una tabella di riferimento sulla pagina Tabelle servizio Redattore PDF. Le tabelle per il calcolo degli interessi, nel markup mediawiki, hanno la seguente struttura:

{|
!tasso legale
|01-01-1957/15-12-1990:5
|16-12-1990/31-12-1996:10
|01-01-1997/31-12-1998:5
|01-01-1999/31-12-2000:2.5
|01-01-2001/31-12-2001:3.5
|01-01-2002/31-12-2003:3
|01-01-2004/31-12-2007:2.5
|01-01-2008/31-12-2009:3
|01-01-2010/31-12-2010:1
|01-01-2011/31-12-2011:1.5
|01-01-2012/31-12-2013:2.5
|01-01-2014/31-12-2014:1
|01-01-2015/19-1-2038:0.5
|}

La prima {| e l'ultima |} riga aprono e chiudono la tabella.

La seconda riga indica il nome della tabella: fondamentale che sia univoco rispetto a quello di tutte le altre tabelle sulla pagina.

I dati nella tabella seguono la seguente logica:

|data iniziale/data finale:tasso

Le date devono essere espresse nel formato solo numerico gg-mm-aaaa e i tassi con i decimali separati dal carattere punto (e non la virgola).

La sintassi per calcolare gli interessi è la seguente:

$[nome:nomevariabile(valore);interessi:nome tabella datainiziale datafinale;]



La funzionalità per il calcolo della rivalutazione monetaria non necessita invece di alcuna tabella interrogando piuttosto, in tempo reale, l'apposito servizio messo a disposizione dall'ISTAT. La sintassi è la seguente:

$[nome:nomevariabile(valore);rivalutazione:datainiziale datafinale;]

che assegnerà alla variabile $nomevariabile la rivalutazione di $valore dalla datainiziale alla datafinale sulla base dell’indice dei prezzi al consumo per le famiglie di operai e impiegati (FOI) al netto dei tabacchi. Possono essere eseguiti calcoli dal 1947 ad oggi. Se non disponibile il dato relativo alla datafinale sarà utilizzato l'ultimo utile.



Blocchi di testo ad inclusione condizionata

Può essere utile includere nel documento porzioni di testo soltanto allorchè sia verificata una determinata condizione. Vediamo un semplice esempio:

Importo inserito: $[nome:importo;descrizione:Inserisci un importo;formato:valuta;]

((:$importo>1000::L'importo inserito è superiore ad € 1.000,00:))((:$importo<1000::L'importo inserito è inferiore ad € 1.000,00:))((:$importo=1.000,00::L'importo inserito è proprio € 1.000,00:))

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Il blocco condizionato è pressochè identico al "blocco commento" di cui abbiamo già parlato, una porzione di testo racchiusa tra due doppie parentesi tonde e due segni di "due punti". La differenza sta nella condizione da verificare che deve seguire immediatamente le due doppie tonde e i due punti di apertura del blocco e terminare con un doppio "due punti" ::. La sintassi è la seguente:

((:espressione booleana semplificata::testo del blocco:))

L'espressione booleana (espressione, cioè, che può essere soltanto vera o falsa) deve avere la seguente sintassi:

elemento1 operatore elemento2 dove l'operatore può essere < (minore), > maggiore, = uguale o ^ diverso.

Nell'esempio: $importo > 1000 sarà vera (e dunque mostrerà il blocco) se la variabile $importo sarà valorizzata con una somma superiore a 1000.

Vediamo un altro esempio:

((:$nome^::Ciao $[nome:nome;opzionale;]!:))((:$nome=::Non hai inserito alcun nome!:))

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


In questo caso nel primo blocco confrontiamo la variabile $nome con una stringa vuota (dopo l'operatore ^ non c'è nulla se non i doppi due punti di chiusura). L'espressione vuol dire: "se la variabile $nome NON è vuota (diversa da niente) mostra il blocco" che sarà "Ciao" seguito dal nome. Nel secondo blocco confrontiamo sempre la variabile $nome con una stringa vuota ma utilizzando l'operatore =. L'espressione vuol dire: "se la variabile $nome è uguale ad una stringa vuota mostra il blocco" che sarà "Non hai inserito alcun nome!".

Se sei completamente digiuno di informatica tutto questo potrà sembrarti incomprensibile: non disperare! Sappi solo che è possibile inserire nel modello parti di testo che risulteranno visibili solo a particolari condizioni. Se hai questa esigenza e non sai come fare chiedi aiuto sul forum.

I blocchi ad inclusione condizionata possono essere utilizzati anche nell'ambito di definizione di una variabile con la sola differenza sintattica che non occorre inserire i due punti insieme alle parentesi tonde di apertura e chiusura. Per chiarire:

Importo: $[nome:importo;descrizione:Inserisci un importo;formato:valuta;]

IVA: $[nome:IVA;descrizione:Selezione l'IVA applicabile;tipo:select(22%@22//10%@10);]

TOTALE: $[nome:totale($importo+($importo*((§IVA=22::22))((§IVA=10::10))/100));formato:valuta;]$totale

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Un esempio di utilizzo dei blocchi ad inclusione condizionata nel modello Lettera adeguamento ISTAT canone locazione: in caso di varizione negativa dell'indice FOI, l'app non adeguerà il canone (che in tal caso subirebbe una riduzione) lasciandolo invariato.



Variabili globali e istruzioni "di trasformazione"

Le variabili globali sono variabili predefinite dal sistema e direttamente riutilizzabili nel testo. Per convenzione sono riconoscibili per essere in maiuscolo come ad esempio $DATA che inserisce la data odierna.

Le istruzioni di trasformazione consentono invece di compiere varie trasformazioni sul testo (solitamente rappresentato da una variabile) passato in argomento. Vediamo un esempio:

$[nome:stringa;descrizione:Scrivi qualcosa!;]

$MAIUS restituisce $MAIUS($stringa)

$MINUS restituisce $MINUS($stringa)

$PRIMAMAIUS restituisce $PRIMAMAIUS($stringa)

$PRIMEMAIUS restituisce $PRIMEMAIUS($stringa)

Oggi, $DATA, è $GIORNOSETTIMANA($DATA).

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Integrazione con Note di Udienza

Redattore PDF può leggere e scrivere su Note di Udienza, la webapp per la verbalizzazione "telematica".

Per inserire nel testo il contenuto di una nota salvata su Note di udienza è sufficiente richiamarlo con l'istruzione $NOTE(codicenota). Ad esempio:

$NOTE(kilo54)

Inserirà nel testo, in corrispondenza dell'istruzione, il contenuto della nota con codice kilo54. Ovviamente, in argomento, possiamo indicare una variabile.

Per salvare un documento su Note di Udienza occorre invece assegnare il codice da utilizzare ad una variabile specificando che si tratta di un codice per il salvataggio su Note con l'istruzione codicenota. Ad esempio:

$[nome:codice;descrizione:Inserisci il codice per il salvataggio su Note di Udienza;codicenota;]

Ove l'utente non inserisca alcun codice ne verrà generato uno casuale. Il salvataggio non è automatico, l'utente dovrà cliccare sullo specifico pulsante che comparirà sotto "scarica il documento in formato PDF".

Il salvataggio sovrascrive il contenuto della nota ove preesistente (contenuto che potrà comunque essere sempre ripristinato navigando nella cronologia delle modifiche di Note di udienza). Per aggiungere il testo elaborato da Redattore PDF ad una nota preesistente occorrerà utilizzare l'istruzione $NOTE per caricarlo ed inserirlo ove serva nel contesto del documento elaborato. In questo esempio per la redazione automatizzata di un provvedimento di assegnazione conseguente il pignoramento di una pensione, il modello prevede la possibilità di fornire il codice di una verbalizzazione su Note di Udienza così da "stendere" in calce alla verbalizzazione stessa l'ordinanza elaborata


Interoperabilità tra le apps

Un'app può richiamare un'altra app "passandole" dei dati: in tal modo l'app "invocata" avrà già alcune variabili prevalorizzate. L'istruzione da utilizzare è la seguente:

$[:app <nome app da richiamare>|<descrizione pulsante>|<variabile app destinataria>@@<variabile da passare>|<variabile app destinataria>@@<variabile da passare>| (...) :]

<nome app da richiamare> è il nome della app che vogliamo lanciare

<descrizione pulsante> è il testo che comparirà sul pulsante che servirà al richiamo dell'app

<variabile app destinataria> è il nome della variabile dell'app "invocanda" senza il segno del dollaro alla quale sarà assegnato il valore posto dopo il doppio segno @

<variabile da passare> è la variabile dell'app "invocante" che sarà assegnato alla variabile dell'app "invocata"

Ad esempio nell'applicazione per la ricerca degli uffici giudiziari competenti per territorio, l'istruzione:

$[:app Trova avvocati|trova Colleghi vicini al Giudice di Pace|indirizzo@@$gdp, $gdpIndirizzo:]

creerà un pulsante "trova Colleghi vicini al Giudice di Pace" che consentirà di lanciare l'app "Trova avvocati" assegnando alla sua variabile $indirizzo la stringa formata dal contenuto della varibile $gdp (la città del Gdp) + una virgola + uno spazio + il contenuto della variabile $gdpIndirizzo (l'indirizzo del GdP).

Il "passaggio" di variabili è opzionale cosicchè l'istruzione in commento è utilizzabile anche soltanto per consentire il richiamo di specifiche apps "correlate" a quella in uso.


Creazione di menu dinamici

In modalità NOEDITOR (attivabile inserendo in qualsiasi punto del codice l'istruzione $NOEDITOR) è possibile creare menu dinamici sullo stile di apps! (Cosa devi fare?) per raccogliere gruppi di collegamenti ipertestuali (a pagine esterne o altre apps) o realizzare "percorsi guidati" con sotto-menu e blocchi testuali a scomparsa (che è possibile mostrare o nascondere dinamicamente).

La sintassi completa è la seguente:

$[:menu(<eventuale titolo del menu>) #<identificativo menu> opzione <eventuale URL collegamento> <descrizione opzione>|<eventuale tooltip opzione> on:<eventuali elementi da visualizzare> off:<eventuali elementi da nascondere> colore:<colore del testo> sfondo:<colore di sfondo>]

dove <eventuale titolo menu> è il titolo, opzionale, da mostrare in testa al menu. Deve essere racchiuso tra parentesi tonde. E' possibile ometterlo (omettendo anche le parentesi) se non necessario o se stiamo definendo le opzioni (successive alla prima) del menu stesso.

<identificativo menu> è l'identificativo numerico univoco del menu: deve essere specificato se stiamo definendo la testa del menu stesso.

<eventuale URL collegamento> è l'URL dell'eventuale collegamento

<descrizione opzione> è il testo che sarà mostrato in corrispondenza della voce di menu

<eventuale tooltip opzione> è il testo dell'eventuale tooltip che sarà mostrato soffermando il puntatore del mouse sull'opzione.

on:<eventuali elementi da visualizzare> è un elenco di identificatori univoci degli elementi da mostrare quando l'utente clicca sull'opzione, separati da virgole (es.: #1,#4,#45)

off:<eventuali elementi da nascondere> è un elenco di identificatori univoci degli elementi da nascondere quando l'utente clicca sull'opzione, separati da virgole (es.: #1,#4,#45)

colore:<colore del testo> consente di specificare il colore del testo secondo la notazione CSS esadecimale o nominale (es. Gray)

sfondo:<colore dello sfondo> consente di specificare il colore dello sfondo secondo la notazione CSS esadecimale o nominale (es. #00FFFF)

Vediamo un esempio:

$[:menu(Cosa devi fare?) #1 opzione Devo eseguire una notifica on:#2 off:#1]

$[:opzione https://apps.dirittopratico.it/redattore/Prova_della_notifica_via_PEC.html Devo fornire la prova di una notifica eseguita via PEC|apre l'app per la redazione assistita della nota di deposito per la prova della notifica eseguita via PEC]

$[:menu(Che tipo di notifica devi eseguire?) #2:off opzione https://apps.dirittopratico.it/notifica.html Devo eseguire una notifica in proprio via PEC|apre l'app per la redazione assistita della relata di notifica via PEC]

$[:opzione https://apps.dirittopratico.it/notificaug.html Devo eseguire una notifica via UNEP|apre l'app per la redazione assistita della relata di notifica da eseguirsi tramite Ufficiale Giudiziario]

$[:opzione ricomincia|torna al passo iniziale on:#1 off:### sfondo:#E4FFE4]

$NOEDITOR

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


la prima linea $[:menu(Cosa devi fare?) #1 opzione Devo eseguire una notifica on:#2 off:#1] crea il primo menu con identificativo #1 e titolo "Cosa devi fare?". Contestualmente definisce la prima opzione "Devo eseguire una notifica" che, se cliccata, mostrerà l'emento con identificativo #2 (nella fattispecie il secondo menu) nascondendo il primo (quindi lo stesso menu che conteneva l'opzione appena cliccata).

la seconda linea $[:opzione https://apps.dirittopratico.it/redattore/Prova_della_notifica_via_PEC.html Devo fornire la prova di una notifica eseguita via PEC|apre l'app per la redazione assistita della nota di deposito per la prova della notifica eseguita via PEC] definisce la seconda opzione del primo menu che sarà semplicemente un link all'app per la redazione assistita della nota di deposito della prova di una notifica via PEC; nella fattispecie viene anche definito un tooltip di aiuto (che sarà mostrato soffermando il puntatore del mouse sull'opzione).

la terza linea $[:menu(Che tipo di notifica devi eseguire?) #2:off opzione https://apps.dirittopratico.it/notifica.html Devo eseguire una notifica in proprio via PEC|apre l'app per la redazione assistita della relata di notifica via PEC] definisce il secondo menu. Importante notare che il secondo menu, all'apertura della pagina, è nascosto (per far questo è sufficiente aggiungere :off all'identificativo, nell'esempio #2:off). Viene definita anche la prima opzione del secondo menu che è semplicemente il link all'app per la redazione assistita della relata di notifica via PEC.

la quarta linea $[:opzione https://apps.dirittopratico.it/notificaug.html Devo eseguire una notifica via UNEP|apre l'app per la redazione assistita della relata di notifica da eseguirsi tramite Ufficiale Giudiziario] definisce la seconda opzione del secondo menu, il collegamento all'app per la redazione assistita della relata di notifica "cartacea".

infine la quinta linea $[:opzione ricomincia|torna al passo iniziale on:#1 off:#2 sfondo:#E4FFE4] definisce l'ultima opzione del secondo menu: se cliccata renderà nuovamente visibile il primo menu e nasconderà tutto il resto. L'opzione sarà mostrata con un colore di sfondo modificato.

Da tenere presente la sintassi specifica dei comandi on: e off:: oltre ad un elenco di identificativi separati da virgole possono anche semplicemente indicare uno, due o tre simboli cancelletto #. Ad esempio:

off:# "spengera" solo l'opzione cliccata

off:## "spengera" tutto il menu cui appartiene l'opzione cliccata

off:### "spengera" tutti i menu ed i blocchi con identificativo


Come personalizzare la nostra "app"

Personalizzare il titolo, il sottotitolo e l'autore

E' possibile personalizzare il nome della nostra app specificandolo con l'istruzione titolo:titolopersonalizzato; che è possibile inserire in qualsiasi codice di definizione campo. Allo stesso modo il sottotitolo con titolo:titolopersonalizzato; e l'autore con autore:nomeautore;. Ad esempio:

$[titolo:Conferimento incarico;sottotitolo:modello per la redazione della lettera di conferimento incarico;autore:Paolino Paperino;]

RedattorePDF imposterà di conseguenza i relativi metadati della pagina web utili, ad esempio, in caso di condivisione sui social networks.



Personalizzare l'aspetto del modulo da compilare

E' possibile personalizzare l'aspetto del modulo da compilare racchiudendo determinati campi in blocchi colorati, inserendo titoli, testo e linee di separazione (vedi ad esempio il modello per l'atto di precetto). Per far questo è disponibile uno specifico set di istruzioni di "formattazione" con sintassi $[:istruzione opzioni] (distinguibili per i due punti subito dopo la prima parentesi quadra).



Incorporare l'app nel proprio sito

Per incorporare una specifica app nel nostro sito è sufficiente cliccare sull'etichetta "modello" e fare copia e incolla con lo snippet riportato subito sotto la finestra del codice sorgente del modello stesso.



Tutte le istruzioni in dettaglio

Istruzioni per la codifica dei campi

nome

Definisce il nome del campo e della relativa variabile che sarà riutilizzabile nel testo.

Esempio: $[nome:Nazione;]

Gli eventuali spazi saranno convertiti nel carattere _.

Indicando tra parentesi un'espressione matematica (comprensiva di eventuali variabili) ne sarà calcolato il valore risultante e assegnato alla variabile $nome. Ad esempio:

$[nome:Capitale;formato:valuta;]
 
$[nome:iva($Capitale*22/100);formato:valuta;]
Iva calcolata: $iva

calcolerà l'IVA sull'importo $Capitale assegnandolo alla variabile $iva.

Allo stesso modo è possibile eseguire calcoli con le date.

N.B.: in caso di assegnazione di un valore calcolato ad una variabile, questo non sarà inserito direttamente nel testo ma occorrerà esplicitarlo ove occorra.

descrizione

Indica cosa richiedere all'utente in fase di compilazione del campo. E' opzionale e se non specificata sarà uguale al nome del campo stesso.

Esempio: $[nome:Indirizzo;descrizione:Inserisci il tuo indirizzo;]

formato

Indica il formato del campo, necessario se occorra la sua "validazione". Può assumere i seguenti valori:

  • stringa: per stringhe di testo;
  • stringamultipla: come sopra ma richiede che siano inserite almeno due parole (utile ad esempio se richiesto il nome ed il cognome, se l'utente inserisce solo il nome sarà segnalato un errore);
  • cf: per il codice fiscale;
  • piva: per la partita IVA;
  • cfpiva: indifferentemente per codice fiscale o partita iva;
  • email: per un indirizzo email;
  • data: per una data (sarà possibile selezionare la data da un piccolo calendario);
  • valuta: per una somma di denaro;

Esempio: $[nome:Indirizzo;formato:stringamultipla;]

arrotondamenti

E' possibile arrotondare per eccesso o per difetto un determinato importo di formato valuta.

Esempio: $[nome:importo_arrotondato($importo);eccesso10;formato:valuta;]

assegnerà alla variabile $importo_arrotondato il valore di $importo arrotondato ai 10 euro superiori.

Le istruzioni di riferimento sono eccessoX e difettoX dove X è l'intero per l'arrotondamento.

Esempio: $[nome:importo_arrotondato($importo);difetto5;formato:valuta;]

assegnerà alla variabile $importo_arrotondato il valore di $importo arrotondato per difetto di 5 euro.

limiti di valore

E' possibile impostare un limite massimo o minimo alla valorizzazione di una varibile con le istruzioni max e min. Esempio:

$[nome:importo($capitale*2);max:500;min:100;formato:valuta;]

assegnerà alla variabile $importo il doppio della variabile $capitale ma senza superare 500 e senza scendere sotto 100.

tipo

Indica quale tipologia di campo utilizzare. Può assumere i seguenti valori:

  • text: per campi testo su singola linea;
  • textarea: per campi testo su più linee;
  • editor: per testo formattabile e con possibilità di incollare immagini;
  • select(opzione 1//opzione 2//opzione 3): per campi a scelta multipla indicando fra parentesi le singole voci separate dalla doppia barra //
  • checkbox: per campi "spuntabili"
  • tabella
  • indirizzo

select e le variabili

select offre la possibilità di specificare in modo distinto l'opzione mostrata all'utente ed il valore da assegnare alla variabile separandoli con il carattere @. Ad esempio:

select(opzione 1@valore 1//opzione 2@valore 2//opzione 3@valore 3)

Nel modello sarà poi possibile riferirsi tanto alla descrizione dell'opzione quanto alla sua valorizzazione. Vediamo un esempio:

((:

$[nome:importo;descrizione:Inserisci un importo;formato:valuta;]

$[nome:selezione;descrizione:Seleziona una opzione;tipo:select(Spese generali al 15%@15//Spese generali al 12,5%@12,5//Spese generali al 10%@10);]

$[nome:risultato($importo+($importo*§selezione/100));] :))

Hai selezionato "$selezione" il cui valore è §selezione

L'importo di € $importo aumentato delle $MINUS($selezione) è pari ad € $risultato.

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Nell'esempio, il riferimento ordinario alla variabile $selezione restituisce la descrizione dell'opzione selezionata dall'utente. Per utilizzare invece la sua valorizzazione è sufficiente riferirsi alla variabile non con il simbolo del dollaro ma con §. Come vedremo parlando di scaglioni e interessi, il riferimento alle variabili con il carattere di controllo § piuttosto che $ consente di utilizzarle anche nel codice per la costruzione dei campi.


checkbox e le variabili

checkbox permette all'utente di spuntare un'opzione: il riferimento ordinario alla variabile (con il carattere del dollaro $) restituisce la descrizione del campo, mentre il riferimento alternativo con il carattere § restituisce 1 se l'utente ha spuntato l'opzione o 0 in caso contrario. Ciò permette di impostare condizioni, ad esempio, in formule matematiche:

((:

$[nome:importo;formato:valuta;]

$[nome:opzione;descrizione:Applica le spese generali;tipo:checkbox;]

$[nome:spesegenerali($importo*15/100);]

$[nome:cpa(($importo((§opzione=1::+$spesegenerali)))*4/100);]

$[nome:imponibile($importo+$cpa((§opzione=1::+$spesegenerali)) );]

$[nome:iva($imponibile*22/100);]

$[nome:totale($imponibile+$iva);]

$[:separatore] :)) Importo comprensivo di ((:§opzione=1::spese generali, :))cpa e IVA: $totale

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


checkbox può anche essere semplicemente utilizzato per includere o meno segmenti di testo in base alla spunta dell'utente. Si veda l'esempio Richiesta esecuzione forzata.


indirizzo

Consente di specificare un indirizzo digitandolo (es. Follonica, via Roma 999) oppure indicandolo sulla mappa e restituendo due ulteriori variabili oltre quella definita con nome per l'indirizzo: nomeLAT per la latitudine e nomeLON per la longitudine. Esempio:

L'indirizzo $[nome:indirizzo;descrizione:Inserisci un indirizzo completo o trovalo sulla mappa;tipo:indirizzo;] si trova alle coordinate lat: $indirizzoLAT - lon: $indirizzoLON

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


E' possibile personalizzare il comportamento dell'input di tipo indirizzo indicando fra parentesi i relativi parametri con la seguente sintassi:

indirizzo(latitudine iniziale|longitudine iniziale|zoom|raggio|modificatori) dove:

  • latitudine iniziale e longitudine iniziale sono le coordinate da utilizzare come default per la visualizzazione della mappa prima dell'input dell'utente (se non specificate punteranno su Roma)
  • zoom indica il livello di zoom iniziale
  • raggio consente di evidenziare un'area dell'estensione specificata intorno al picker
  • modificatori può contenere:
    • nomap per nascondere la mappa
    • nocrd per nascondere le coordinate

Ad esempio: $[nome:posizione;tipo:indirizzo(||||nocrd nomap);]

Chiederà all'utente l'inserimento di un indirizzo senza mostrare mappa né coordinate.


scaglione

Assegna ad una variabile il valore corrispondente ad un determinato scaglione preso a riferimento. Esempio:

$[nome:compensoprecetto($capitale+$interessi);formato:valuta;scaglione:precetto 2;]

assegna alla variabile $compensoprecetto il valore corrispondente per scaglione sull'importo dato dalla somma delle variabili $capitale+$interessi prelevato dalla tabella precetto.

interessi

Assegna ad una variabile gli interessi calcolati sull'importo indicato in argomento. Esempio:

$[nome:interessi($capitale);interessi:tasso commerciale $datainiziale $datafinale;]

assegnerà alla variabile $interessi gli interessi calcolati sulla somma $capitale attingendo alla tabella tasso commerciale dalla data $datainiziale alla data $datafinale.

rivalutazione

Assegna ad una variabile la rivalutazione monetaria calcolata sulla base del'indice ISTAT FOI (Famiglie Impiegati e Operai) al netto dei Tabacchi sull'importo indicato in argomento. Esempio:

$[nome:sommarivalutata($capitale);rivalutazione:$datainiziale $datafinale;]

assegnerà alla variabile $sommarivalutata l'importo rivalutato di $capitale dalla data $datainiziale alla data $datafinale.

persistente

Il campo registrerà un cookie per ricordare quanto inserito dall'utente anche ad un futuro accesso. Esempio:

$[nome:nome;descrizione:Indica il tuo nome;persistente;]

opzionale

Consente di rendere opzionale la valorizzazione del campo. Esempio:

$[nome:titolo;descrizione:Inserisci l'eventuale titolo (es. avv., dott. ecc.);opzionale;]

primononfestivo

Istruzione senza parametri che indica al redattore, in caso di calcoli con le date, di posticipare il risultato alla prima data utile non festiva. Esempio:

$[nome:termine(25 novembre 2015 + 30 gg);primononfestivo;]

assegnerà alla variabile $termine la data del 28 dicembre 2015 (il termine scadrebbe il giorno di Natale ed il primo giorno utile non festivo è infatti lunedì 28).

sospensioneferiale

Istruzione senza parametri che indica al redattore, in caso di calcoli con le date, di tenere conto della sospensione feriale dei termini (mese di agosto). Esempio:

$[nome:termine(15 luglio 2015 + 30 gg);sospensioneferiale;primononfestivo;]

assegnerà alla variabile $termine la data del 14 settembre 2015.

giorniliberi

Istruzione senza parametri che indica al redattore, in caso di calcoli con termini processuali, di non tenere conto nè del dies a quo né del dies ad quem

solocampo

Di default, quanto inserito dall'utente in un campo viene sostituito, in fase di compilazione del modello, anche in corrispondenza dell'istruzione utilizzata per generare il campo medesimo (es.: Ciao $[nome:Inserisci il tuo nome;], come stai?.

Ove si renda necessario utilizzare quanto inserito dall'utente più avanti nel modello solo con la variabile assegnata (nell'esempio precedente $Inserisci_il_tuo_nome) magari per ottenere la compilazione dei campi da parte dell'utente segua un ordine diverso da come questi si susseguono nel modello stesso, è possibile inserire l'opzione solocampo. Esempio:

$[nome:Inserisci il tuo nome;solocampo;]
 
Tanti saluti da $[nome:Luogo;]
 
Firmato: $Inserisci_il_tuo_nome.

In tal modo sarà prima chiesto il nome e poi il luogo. In altre parole l'opzione solocampo permette di valorizzare una variabile riutilizzabile nel documento senza che questa debba necessariamente comparire (es. l'aliquota IVA da utilizzare per la generazione di una fattura).

nocalcolo

Ignora eventuali espressioni matematiche in fase di assegnazione di un valore ad una variabile.

tuttomaiuscolo

Istruzione senza parametri che consente di trasformare in maiuscolo quanto inserito dall'utente.

Esempio: $[nome:tribunale;tuttomaiuscolo;]

N.B.: l'istruzione tuttomaiuscolo trasforma il contenuto stesso della variabile in una stringa con soli caratteri maiuscoli. Ove sia necessario utilizzare il maiuscolo solo in determinate posizioni, utilizzare $MAIUS(nomevariabile)

gps

Consente al browser di valorizzare il campo in modo automatico con la città in cui ci troviamo. La funzione utilizza le API di google per il Reverse Geocoding e potrebbe non funzionare o non essere accurata su PC desktop. L'utente deve acconsentire all'utilizzo della geolocalizzazione. Esempio:

$[nome:comune;descrizione:Inserisci il Comune dove ti trovi o lascia che sia il tuo browser ad individuarlo acconsentendo all'uso del GPS;gps;]

Bene, ti trovi a $comune!

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico



Istruzioni per la formattazione del modulo compilabile

separatore

Consente di inserire una linea di separazione tra i campi.

Esempio: $[:separatore]

lineavuota

Consente di inserire una linea vuota tra i campi.

Esempio: $[:lineavuota]

startbox e endbox

Consentono di racchiudere un gruppo di campi in un box del quale è possibile specificare il colore di sfondo oltre al tipo ed al colore del bordo. Le istruzioni da ultilizzare sono due, uno per indicare l'inizio del box e uno la fine (dopo aver definito i campi da includere. Vediamo un esempio:

$[:startbox yellow 1 solid black]

$[Nome]

$[Cognome]

$[:endbox]

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


la sintassi è la seguente: $[:startbox coloresfondo spessorebordo tipobordo colorebordo]

E' possibile indicare i colori con la notazione CSS esadecimale (es. #FAEBD7) o nominativa (es. AntiqueWhite).

Il bordo, espresso in pixel, può valere da 0 a 9.

Il tipo di bordo è uno di quelli previsti per la relativa proprietà CSS.


titolo

Consente di collocare un titolo esplicativo fra i campi con la sintassi: $[:titoloX titolo da inserire] dove X può valere da 1 a 4 per distinguere titoli di diversa gerarchia e di formato diverso.

Esempio: $[:titolo3 Dati del legale]

testo

Consente di inserire un testo esplicativo fra i campi con la sintatti: $[:testo testo da inserire].

Esempio: $[:testo Questo è un testo libero che può essere inserito tra i campi per fornire, ad esempio, indicazioni nella compilazione]

Istruzioni di trasformazione

$MAIUS

rende maiuscolo l'argomento. Esempio: $MAIUS(nomevariabile)

$MINUS

rende minuscolo l'argomento. Esempio: $MINUS(nomevariabile)

$PRIMAMAIUS

rende maiuscolo solo la prima lettera dell'argomento. Esempio: $PRIMAMAIUS(nomevariabile)

$PRIMEMAIUS

rende maiuscola la prima lettera di ogni parola dell'argomento. Esempio: $PRIMEMAIUS(nomevariabile)

$GIORNOSETTIMANA

restituisce il giorno della settimana di una data passata in argomento. Esempio: $GIORNOSETTIMANA(25 luglio 2015)

$INLETTERE

restituisce una cifra in lettere. Esempio:

Euro $[nome:importo;formato:valuta;] (diconsi euro $INLETTERE($importo))

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico

$GENERE

restituisce una stringa diversa a seconda che la variabile analizzata sia maschile, femminile o una società. La sintassi è la seguente:

$GENERE($variabile|stringa da restituire se maschile|stringa da restituire se femminile|stringa da restituire se trattasi di società)

La stringa per le società è opzionale, se non specificata viene restituita quella per il femminile.

$variabile può essere un nome, un nome e cognome (es. Mario Rossi), o un codice fiscale.

Per $GENERE($stringaDaTestare|il signor|la signora|la) $[nome:stringaDaTestare;descrizione:Nome e cognome, denominazione o codice fiscale;] compare...

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Istruzioni speciali

$GCALENDAR

Crea un link per consentire il salvataggio di un evento sul calendario di Google. La sintassi:

$GCALENDAR(data | descrizione evento | luogo | stringa personalizzata )

dove:

  • data: è la data dell'evento da salvare
  • descrizione evento: è la descrizione dell'evento che sarà possibile personalizzare in sede di salvataggio
  • luogo: è il luogo dell'evento
  • stringa personalizzata: è l'eventuale stringa che sarà inserita nel testo (se non specificata sarà la data stessa)

La data accetta anche gli operatori di cacolo +/- gg mm aa; tutti gli altri parametri sono opzionali.

Vediamo un esempio:

$NOEDITOR

Data: $[nome:data;formato:data;]

Evento: $[scadenza] $GCALENDAR($data -7gg|Tra una settimana scade l'evento: $scadenza|Follonica|(salva sul calendario google\))

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Viene chiesto all'utente di inserire la data e la descrizione di un evento conservate rispettivamente nelle variabili $data e $scadenza. L'istruzione $GCALENDAR crea il link per salvare l'evento sul calendario google anticipando però la data di sette giorni. Il carattere "\" prima della parentesi (escape) indica a redattore PDF che quella non è la parentesi di chiusura dell'istruzione $GCALENDAR ma una parentesi da inserire nel testo personalizzato (salva sul calendario google).

$GMAP

Inserisce una mappa o una foto Street View di Google da scrivere

$IPA_AMM

Interroga il webservice iPA WS05_AMM e restituisce il risultato come stringa formattata. Sintassi:

$IPA_AMM(codice comune | stringa formattata con risultati interrogazione)

la stringa formatta può contenere tutti i dati esposti dal webservice Dati dell'Ente preceduti dal carattere $. Un esempio:


Località inserita dall'utente: $[nome:comune;descrizione:Indica il comune;tipo:tabella(Elenco Comuni Italiani|apps|1,2);formato:libero;]

$IPA_AMM(c_$comune1|<p>Denominazione dell'ente: $des_amm</p><p>Responsaibile: $nome_resp $cogn_resp ($titolo_resp\)</p><p>Indirizzo: $indirizzo</p>)

Modello utilizzabile con Redattore PDF, l'app per creare le apps di Diritto Pratico


Nell'esempio viene chiesto all'utente di inserire il nome di un Comune. Il campo sfrutta la funzione di autocompletamento attingendo alla tabella "Elenco Comuni Italiani" pubblicata sul wiki. In particolare per l'autocompletamento viene utilizzata la colonna 1 (le denominazioni) cui associare il valore della colonna 2 (i codici catastali). Il codice del comune così individuato viene utilizzato per interrogare il webservice "Dati dell'Ente" dell'iPA. Viene poi formattata una stinga HTML contenente i dati di risposta des_amm, nome_resp, cogn_resp, titolo_resp e indirizzo (per gli altri dati ottenibili dall'interrogazione fare riferimento alla documentazione ufficiale del webservice, paragrafo "response").

$MARGINI

Permette di personalizzare i margini del documento PDF con la sintassi: $MARGINI(margineSinistro,margineSuperiore,margineDestro,margineInferiore). Esempio:

$MARGINI(10,5,10,20)

$NOMEFILE

Permette di personalizzare il nome del file che sarà scaricato. Esempio: $NOMEFILE(atto di citazione $parte - $controparte)

$NOEDITOR

Consente di presentare il risultato dell'applicazione non all'interno dell'editor per la personalizzazione del testo ma su una semplice pagina web senza alcuna intestazione. Utile allorchè non sia necessaria la formazione di un documento ma solo la visualizzazione del risultato.

$PAGINANUOVA

Forza il passaggio ad una pagina nuova.

$PAGINEBIANCHE

Consente di estrarre indirizzi dalla banca dati "Pagine Bianche" formattandoli a piacimento. La sintassi:

$PAGINEBIANCHE(chiave di ricerca | città ed eventuale indirizzo di ricerca | tag html | stringa personalizzata )

dove:

  • chiave di ricerca: è il nome o la denominazione del soggetto o del servizio da ricercare (es. "banche");
  • città ed eventuale indirizzo di ricerca: è la città dove eseguire la ricerca; se indicato anche l'indirizzo i risultati saranno ordinati in base alla distanza dal detto indirizzo;
  • tag html: eventuale tag per la suddivisione dei risultati, può valere "p" (paragrafo), "li" (lista) o "primo" per ottenere un solo risultato (il primo).
  • stringa personalizzata: per formattare i risultati

ATTENZIONE: I dati sono ricavati dalla banca dati Pagine Bianche di Seat Pagine Gialle S.p.A.. Nel rispetto dei limiti di utilizzo della banca dati la funzione $PAGINEBIANCHE può ricercare ed estrarre un massimo di quindici risultati.

Come formattare i risultati di $PAGINEBIANCHE

E' possibile fornire all'istruzione $PAGINEBIANCHE il "modello" per la formattazione dei risultati. Questa è la formattazione di default:

<denominazione>, <indirizzo>, <cap> <città>

I parametri a disposizione sono quattro, <denominazione> per il nome o la denominazione, <indirizzo> per l'indirizzo, <cap> per il CAP e <città> per la città.

Ad esempio:

$PAGINEBIANCHE(banche|$indirizzoDebitore|p|<denominazione>, in persona del direttore pro tempore, con sede in <città>, <indirizzo>)

restituirà un elenco con le banche più vicine a $indirizzoDebitore utile per la notifica, ad esempio, di un presso terzi.

Qui un'app dimostrativa per la ricerca degli sportelli bancari.

$WIKI

Permette di estrarre specifici metadati dalle pagine del wiki di Diritto Pratico che lo prevedono. La sintassi:

$WIKI(nomepagina|nomemetadato)

Pagine dei Comuni

Dalle pagine dei Comuni Italiani è possibile estrarre le seguenti informazioni:

  1. provincia: la provincia
  2. cap: il codice di avviamento postale
  3. prefisso: il prefisso telefonico
  4. codcom: il codice del Comune
  5. gdp: il Giudice di Pace competente
  6. tribunale: il Tribunale competente
  7. cda: la Corte d'Appello competente
  8. indirizzo: l'ndirizzo sede del Comune
  9. telefono: il telefono del Comune
  10. email: l'indirizzo mail ordinario del Comune
  11. pec: l'indirizzo PEC del Comune
  12. fax: il numero du fax del Comune
  13. cf: il codice fiscale del Comune

Ad esempio:

$WIKI(Follonica|gdp)

Ritornerà Grosseto, nello specifico il Giudice di Pace competente per Follonica.

Ecco una semplice app per l'individuazione degli uffici giudiziari competenti per territorio.

Pagine degli Uffici Giudiziari

Dalle pagine degli Uffici Giudiziari è possibile estrarre le seguenti informazioni:

  1. distretto: il distretto di appartenenza
  2. comune: il Comune ove ha sede l'Ufficio Giudiziario
  3. cap: il codice di avviamento postale
  4. provincia: la provincia ove ha sede l'Ufficio Giudiziario
  5. cf: il codice fiscale
  6. codiceunivoco: Codice univoco per la fatturazione elettronica
  7. indirizzo: l'indirizzo
  8. telefono: il numero di telefono
  9. fax: il numero di fax
  10. email: l'indirizo email ordinario
  11. pec: l'indirizzo PEC per i depositi telematici
  12. spct: l'indirizzo web della pagina relativa ai servizi attivi per il PCT

Ad esempio:

$WIKI(Tribunale di Grosseto|codiceunivoco)

Ritornerà il codice univoco dell'Ufficio Spese Giustizia del Tribunale di Grosseto.

FAQ: Domande poste frequentemente

SEZIONE IN ALLESTIMENTO!

Nella modalità $NOEDITOR come posso visualizzare la finestra del codice sorgente?

Nella modalità $NOEDITOR non viene mostrato il collegamento per aprire il codice sorgente del modello nel caso in cui l'app non preveda un input da parte dell'utente (ad esempio questa per il calcolo dei termini processuali da oggi). In tal caso sarà premere CTRL+X per aprire la finestra del codice.

Posso inserire elementi grafici nel testo?

E' possibile inserire elementi grafici nel testo copiando un'immagine nella clipboard e poi incollandola nell'editor premendo CTRL+V: le immagini saranno "incorporate" nel codice html della pagina e potranno così far parte anche dei modelli. Per consentire all'utente di inserire un'immagine devi usare un campo di tipo "editor" e utilizzare un browser recente.