L'editor di modelli di documento di Rentman ti permette di personalizzare facilmente i tuoi documenti, per renderli adatti ai tuoi bisogni e a quelli della tua attività. L'editor offre moltissime opzioni di personalizzazione e funziona in maniera intuitiva e spesso basata sul "trascina&rilascia", accessibile a tutti e senza bisogno di usare nessun linguaggio di programmazione.
Detto ciò, vogliamo dare agli utenti più esperti di informatica la possibilità di personalizzare ancora di più i modelli a loro piacimento. Per questo, in Rentman c'è l'opzione per modificare il CSS dei modelli, usare le variabili in maniera logica, e applicare la formattazione condizionale.
N.B.: Queste operazioni richiedono un certo livello di conoscenza informatica. Se non possiedi queste abilità, ti consigliamo di contattare un'azienda esterna o di richiedere il nostro servizio (a pagamento) di personalizzazione dei modelli. Come puoi leggere anche nelle nostre condizioni di utilizzo, non offriamo supporto gratuito nell'implementazione o de-bugging di CSS, variabili o formattazione condizionale.
CSS
Se vuoi modificare ill CSS dei tuoi modelli di documento, puoi farlo dal menù "Stile" dell'editor:
Prima di iniziare a lavorare sul CSS consigliamo di applicare uno stile. In questo modo avrai già una struttura su cui lavorare, e che puoi modificare a tuo piacimento.
Classi CSS
Ogni elemento in Rentman ha una sua classe CSS che puoi usare. Non possiamo fornire qui una lista completa e facile da consultare di tutte le classi, ma puoi facilmente vedere la classe di un elemento usando il tasto "Ispeziona" del browser quando modifichi il documento:
Nell'esempio qui sopra, puoi vedere che la riga con un articolo in affitto nel blocco Materiale ha come classeitem rental
.
Cosniglio: Le righe possono essere generate dinamicamente e potrebbero avere la stessa classe. In questo esempio, tutti gli articoli hanno la stessa classe. Se vuoi selezionare un elemento in particolare, potrebbe essere più facile usare pseudo-selettori come:nth-child(i)
PHP
Mentre modifichi un blocco di testo in qualsiasi modello, vedrai le informazioni mostrate in maniera diversa. Se, per esempio, prima vedevi il nome del tuo cliente come "Azienda X", ora vedrai {$f.customer.displayname}
. Questa è una variabile, ovvero un codice che recupera informazioni dai progetti quando generi il documento e le inserisce al posto giusto.
Modificatori delle variabili
Nella maggior parte dei casi, le variabili sono già tutto quello che ti serve per i tuoi documenti. Ma in alcuni casi, potresti voler modificare anche le variabili. Per esempio, prima di fare un paragone tra un prezzo e un numero (per gli "if statement", spiegati nella prossima sezione dell'articolo), devi convertire il prezzo in un valore numerico.
Questo può essere fatto tramite un modificatore di variabile. Continuando l'esempio di sopra, possiamo usare il modificatore regex_replace e la variabile del prezzo totale del progetto, {$f.project_total_price}
, diventerà così:
{$f.project_total_price|regex_replace:'/[^0-9]/':''|intval}
In questa pagina di modificatori di variabile trovi le modifiche che è possibile apportare.
N.B.: Non tutti i modificatori sono ammessi nel nostro editor di modelli. Quando un modificatore non è ammesso, verrai avvertito. Per altri modificatori e funzioni ammessi, guarda la lista qui sotto.
Ecco una lista di modificatori delle variabili ammessi:
"lcfirstLocal",Esempio:
"lcfirstlocal",
"ucfirstLocal",
"ucfirstlocal",
"formatTime",
"formatBytes",
"formatDateTime",
"formatDiscount",
"formatDistance",
"formatDuration",
"formatMonth",
"formatDay",
"formatDate",
"formatBoolean",
"formatNumber",
"formatPrice",
"formatPercentage",
"formatSpellout",
"formatPriceCustom",
{$number|formatPrice}
mostrerà il numero di {$number}
come un prezzo usando i separatori per decimali e migliaia che hai impostato in Configurazione e nelle impostazioni del tuo paese.{$number}
10000 sarà mostrato così: €10.000,00.Nell'editor di documenti puoi anche usare le funzioni PHP che trovi qui sotto.Consulta la documentazione PHP delle varie funzioni per sapere la sintassi e l'utilizzo.
public const F_TYPE = [
'is_array',
'is_bool',
'is_countable',
'is_int',
'is_integer',
'is_object',
'is_null',
'is_string',
'is_float',
'is_double',
'isset',
];
public const F_CAST = [
'intval',
'boolval',
'doubleval',
'floatval',
];
public const F_DATETIME = [
'time',
'date',
];
public const F_ARRAY = [
'empty',
'count',
'sizeof',
'current',
'explode',
'array_key_exists',
'array_keys',
'array_values',
];
public const F_REGEX = [
'regex_replace',
];
public const F_STRING = [
'nl2br',
"ucfirst",
"lcfirst",
"ucwords",
"htmlentities",
"htmlspecialchars",
"trim",
"ltrim",
"rtrim",
"strtolower",
"strtoupper",
"mb_strtoupper",
"count",
"escape",
"strlen",
"mb_strlen",
"substr",
"mb_substr",
"str_replace",
'str_pad',
'wordwrap',
'sprintf',
'strip_tags',
'urlencode',
];
public const F_MISC = [
'min',
'max',
'abs',
'rand',
'number_format',
'round',
'ceil',
'floor',
];
public const F_RENTMAN = [
"Rentman\\getTemplateVal",
"sumprice",
"substr",
"multiplyprice",
"removePrice",
"toDate",
'buildrow',
'roundcents',
];
If statements (istruzioni condizionali)
Gli "If statements" (anche detti istruzioni condizionali) permettono di mostrare alcune cose quando si verificano certe condizioni, altrimenti di mostrarne altre. Trovi un if statement nel primo blocco di testo di ogni modello di sistema di preventivi, contratti o fatture. Modificandolo, vedrai questo codice:
{$f.customer.displayname}
{if $f.contact > 0}attn. {$f.contact.firstname} {$f.contact.surfix} {$f.contact.lastname}
{/if}{$f.customer.post_street} {$f.customer.post_number}
{$f.customer.post_postalcode} {$f.customer.post_city} {if $f.customer.country != $company.country}{$f.customer.country}{/if}
In questo caso la condizione è definita all'inizio dell'if statement :
{if $f.contact > 0}
Se il valore ripreso dalla variabile {$f.contact}
(il numero di contatti di riferimento che ha questo contatto) è maggiore di 0, sul documento verranno riportate le informazioni prima della tag di chiusura {/if}
. In questo caso, il testo "attn." e nome e cognome del contatto di riferimento. Se però questa condizione non si verifica (e quindi il cliente non ha un contatto di riferimento) tutto quello che c'è nell'if statement viene ignorato.
Si può fare lo stesso usando anche {elseif}
e {else}
. Per esempio:
{if $name ='Fred'}
Gentile Fred
{elseif $name = 'Wilma'}
Gentile Wilma
{else}
Gentile cliente,
{/if}
Formattazione condizionale
La formattazione condizionale ti permette di applicare una classe CSS quando sono presenti certi valori. Per esempio, diciamo che un campo aggiuntivo del tuo materiale può avere due valori: blu e arancione. Con la formattazione condizionale, puoi fare in modo che le righe con il materiale blu avranno la classe CSS .blue
, mentre quelle arancioni avranno la classe CSS .orange
.
Fatto questo, potrai applicare uno stile diverso in base alla classe: per esempio, sfondo arancione o blu per gli articoli di classi diverse.
Usando la formattazione condizionale, non c'è quasi limite alle modifiche grafiche che puoi apportare.
La formattazione condizionale può essere impostata con l'opzione Taglia/Incolla di un blocco selezionato:
Struttura
Quando apri l'opzione Taglia/Incolla, vedrai qualcosa del genere:
Per applicare la formattazione condizionale, puoi aggiungere questo codice prima della parentesi conclusiva:
,
"conditionalstyling": [
{
"condition": {
"field": "templVarName",
"comparator": "comparatorValue",
"value": {
"value": "valueValue"
}
},
"class": "cssClass"
}
]
Poi devi modificare questo codice per specificare le condizioni:
- templVarName = il valore che vedrai nel campo
templVar
per la colonna della quale vuoi controllare le condizioni. Rifacendoci al codice qui sopra, se volessi definire una condizione in base al valore del fattore (staffel), devi scrivere“staffel”
- comparatorValue = il tipo di paragone che vuoi fare tra il campo che hai definito sopra e quello con cui vuoi paragonarlo. Puoi usare vari segni di paragone, come:
=
(uguale a),!=
(diverso da),>
(più grande di),<
(più piccolo di),*=
(contiene),*!=
(non contiene). Se per esempio volessi sapere se il valore è maggiore di 3, dovresti usare>
. - valueValue = il valore che vuoi paragonare. Se volessi vedere che è il valore è maggiore di 3, qui scrivi
3
. È anche possibile il valore di un altro campo, così:"value":{"value":"templVarName", "type: "templVar"}}
- cssClass = La classe CSS che vorresti dare alle righe che soddisfano la condizione. Per esempio
fattoreMaggioreDiTre