Campi EXTRA
I campi EXTRA
JOLLY consente la creazione diretta da parte dell'utente di campi aggiuntivi personalizzati per ciascuna delle seguenti tabelle:
- archivio articoli
- piano dei conti
- bolle /ordini /fatture (documento)
- bolle/ ordini/ fatture (righe)
- commesse
- impianti
- allegati
- distinta base archivio articoli (distinta_base_articoli)
- distinta base documenti (bolle_sottoarticoli)
Questa possibilità consente di risolvere in modo semplice, efficace ed economico la necessità di avere a disposizione dei campi per immagazzinare dati di interesse specifico per il singolo utente, senza intervenire sul codice del programma.
NB: tutto quanto segue è destinato a personale tecnicamente competente.
Per ogni campo extra è possibile specificare una consistente serie di opzioni, tra le quali le seguenti sono particolarmente importanti e/o utili:
- Tipi di campo
- Validazione dei campi extra
- Valore default
- Valori predefiniti
- Diritti di visualizzazione e modifica del campo - per tipo di allegato
- Diritti di visualizzazione e modifica del campo - per operatore
- Foreign keys
- Campi extra 'speciali'
- Campi extra calcolati
TIPI DI CAMPO
I tipi di campo extra sono i seguenti:
- CHAR: elemento di testo; può essere specificata la dimensione;
- INTEGER: numero intero (4 bytes, valori compresi tra –2147483648 e +2147483647);
- DOUBLE: numero decimale (con la virgola; 8 bytes, valori compresi tra 5x10^–324 e 1.7 x 10^308);
- BOOLEAN (detto anche manicheo): valore VERO/FALSO;
- DATE: data
INFORMAZIONI SUL GRADO DI NECESSITA' DI COMPILAZIONE DEL
CAMPO
E' possibile indicare, per ogni campo, se la sua compilazione è:
- NECESSARIA: JOLLY non procederà al salvataggio del documento fino a che non sarà stato inserito un valore valido per il campo; il campo sarà mostrato colorato in ROSSO;
- CONSIGLIATA: se l'operatore non inserisce un valore valido JOLLY consente il salvataggio del documento ma emette un messaggio di avvertimento; il campo sarà mostrato colorato in VERDE;
- FACOLTATIVA: la compilazione del campo è totalmente facoltativa; nessun messaggio viene mostrato anche in caso di mancata compilazione del campo.
VALORE DEFAULT
Il valore specificato nella apposita casella sarà assegnato al campo in caso di
creazione di nuovi records. Saranno eseguite le seguenti sostituzioni:
- %O nome dell'operatore che sta eseguendo l'operazione
- %W nome della postazione (computer) da cui l'operazione viene eseguita
- %D data odierna
-
%SQL=espressione SQL
- l'opzione deve essere indicata ad inizio riga;
- l'istruzione SQL viene eseguita all'interno di una transazione creata appositamente, che è distinta dalla transazione che racchiude la creazione del documento cui il campo extra appartiene e che viene committata subito dopo l'esecuzione dell'istruzione.
-
esempi di istruzioni SQL:
- %SQL=select dateformat(now(), 'YYYY-MM-DD')
- %SQL=select get_primary_key('idx')
- %SQL=select AA_extra_str_XXX_default from archivio_articoli WHERE AA_str_codice = '%PKC'
- Se il formato del campo è una data, il formato default utilizzato è quello italiano standard: gg/mm/aaaa
-
%PKC primary key per la tabella da cui vengono
copiati i valori; è tipicamente utilizzato all'interno di espressioni %SQL.
Il valore default di campo che contengono la macro %PKC viene ricalcolato ogni volta che si modifica il valore del campo di collegamento tra la tabella che contiene il campo extra e la tabella di riferimento indicata nel prospetto sottostante.
ESEMPIO: supponiamo che sulla tabella bolle_articoli (righe di documenti) esista il campo extra BA_extra_str_XXX il cui valore default è:
%SQL=select AA_extra_str_XXX_default
from archivio_articoli
where AA_str_codice = '%PKC'
Il valore di tale campo extra viene assegnato in fase di creazione di ogni record della table bolle_articoli. Inoltre viene ricalcolato ad ogni modifica del valore del campo BA_str_articolo (che è il campo che collega bolle_articoli ad archivio_articoli).
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NB: poiché i records della tabella allegati possono essere collegati ad oggetti differenti (esempio: conto, documento, articolo, impianto, commessa, ...) è opportuno utilizzare istruzioni %SQL e %PKC solo su allegati il cui uso sia ristretto al tipo di oggetto per il quale tali istruzioni sono concepite (ad esempio: tipi di allegato utilizzabili solo per articoli, solo per documenti, solo per conti, eccetera).
NB: i campi extra della table distinta base documenti (bolle_sottoarticoli) hanno un comportamento anomalo:
- durante la creazione (inserimento di un nuovo articolo nella table bolle_articoli e conseguente caricamento della distinta base dell'articolo caricato) possono essere inizializzati con espressioni SQL che fanno riferimento ai corrispondenti records della tabella distinta_base_articoli da cui vengono copiati;
- se modificati successivamente alla creazione (oppure creati all'interno della distinta base del documento per aggiunta di nuovo componente di distinta base) il programma non esegue più la generazione dei valori attraverso la valutazione dell'eventuale espressione SQL perché la tabella a cui sarebbe possibile far riferimento è cambiata (non è più la distinta_base_articoli ma è la archivio_articoli) e dovrebbe essere conseguentemente modificata anche l'espressione SQL.
Questa anomalia non sembra essere particolarmente rilevante per due motivi:
- non è frequente la modifica della distinta base all'interno del documento
- nei casi in cui sia necessario modificare la distinta base di un documento, in generale si desidera modificare il comportamento della distinta base con informazioni che non sono standard e che per questo motivo tipicamente non sono registrate da nessuna parte.
VALORI
PREDEFINITI
E' possibile definire un insieme di valori predefiniti per il campo.
Tali valori possono essere fissi (ovvero: un elenco di valori ammessi) oppure
determinati dinamicamente attraverso un'istruzione SQL. In quest'ultimo caso la
sintassi utilizzabile può fare uso dei simboli validi per l' espressione che
genera i valori default (ad eccezione ovviamente
della clausola %SQL, che non è ammessa perché sempre implicita).
ATTENZIONE: per evitare di rallentare l'apertura delle finestre è
consigliabile non utilizzare comandi SQL eccessivamente pesanti.
DIRITTI DI VISUALIZZAZIONE E MODIFICA DEL CAMPO - PER
TIPO DI RECORD
Poiché vi sono campi extra che devono essere visualizzati e gestiti solo in
determinate circostanze (ad esempio: se un campo extra serve per riportare la
valutazione dei fornitori, tale campo deve comparire solo sulle schede dei conti
fornitore e non comparire su quelle dei clienti) Jolly prevede la possibilità
di legare la presenza del campo extra in funzione di:
| tipo campo extra | gestione legata a |
|---|---|
| conti | tipo di conto |
| articoli | tipo di articolo |
| impianti | tipo di impianto |
| commesse | --- |
| allegati | tipo di allegato |
| distinta base articoli | --- |
| distinta base documenti | --- |
Per i campi che in una certa situazione non vengono gestiti è possibile indicare il valore default da assegnare al campo.
DIRITTI
DI VISUALIZZAZIONE E MODIFICA DEL CAMPO - PER OPERATORE
Jolly consente inoltre di limitare la visibilità e la modificabilità di ogni campo in
funzione dei diritti dell'operatore che accede al documento. I livelli di permesso sono
quattro: TUTTI/ OPERATORE ISO BASE/ RESPONSABILE ISO, AMMINISTRATORE DI JOLLY.
FOREIGN
KEYS
E' possibile stabilire dei vincoli di integrità referenziale tra un campo extra
e una qualsiasi tabella di Jolly.
L'uso di questa funzione deve essere valutata con estrema attenzione perché
potenzialmente pericolosa.
CAMPI EXTRA 'SPECIALI'
Vi sono alcune funzioni speciali che JOLLY, per evitare di appesantire
inutilmente il codice del programma standard, gestisce attraverso specifici campi
extra. Per attivare tali funzioni è necessario creare ed utilizzare i
campi extra indicati. E' caldamente consigliato non modificare il nome SQL dei
campi extra speciali. Le funzioni speciali attivabili sono le seguenti:
| tabella | numero di campo | nome | funzione |
|---|---|---|---|
| archivio articoli | 87 | AA_str_descrizione_aggiuntiva | descrizione aggiuntiva per l'articolo; il campo viene caricato sul corrispondente campo dei documenti (BA_str_descrizione_aggiuntiva, che non è un campo extra) |
| archivio articoli | 88 | AA_bo_need_serial_number | indica se l'articolo utilizza/richiede il serial number |
| archivio articoli | 89 | AA_str_documento | contiene il nome di un file il cui contenuto viene visualizzato ogni volta che l'articolo viene caricato su un documento |
| archivio articoli | 91 | AA_bo_usa_descrizione_lunga | valore booleano (vero/falso) che indica se quando si carica l'articolo in un documento si desidera utilizzare la descrizione corta oppure quella estesa; se non definito, viene utilizzato il valore generale del programma (definito nelle opzioni generali) |
| archivio articoli | 92 | AA_bo_usa_descrizione_lunga_CLI | come il campo 91, ma con valore specifico per i clienti |
| archivio articoli | 93 | AA_bo_usa_descrizione_lunga_FOR | come il campo 91, ma con valore specifico per i fornitori |
| archivio articoli | 94 | AA_str_message | quando si carica l'articolo su un documento il programma emette il messaggio specificato |
| archivio articoli | 95 | AA_str_codice_badge | contiene il codice di collegamento con il lettore di badge |
| archivio articoli | 96 | AA_bo_riepiloga_footer | gli articoli dotati di questo flag vengono riepilogati automaticamente a piè documento |
| archivio articoli | 97 | livello di ispezione AQL | livello di ispezione da utilizzarsi come default per i controlli in modalità AQL |
| archivio articoli | 98 | valore AQL | valore AQL da utilizzarsi come default per i controlli in modalità AQL |
| archivio articoli | 99 | AA_bo_collaudo_100 | l'articolo deve essere collaudato (al 100%) |
| bolle_articoli | 31 | BA_extra_str_causa_guasto | contiene la causa del guasto nei casi in cui questo valore sia previsto dal documento |
| bolle_articoli | 90 | BA_str_serial_number | campo utilizzato per contenere il serial number dell'articolo |
| bolle_articoli | 91 | BA_extra_str_progetto_ele | usato per i documenti di lavorazione ELE; contiene il riferimento del progetto cui la lavorazione è associata |
| bolle_articoli | 92 | BA_extra_str_esecutore | usato per i documenti di lavorazione ELE; contiene l'operatore che esegue la lavorazione |
| pconti | 97 | severità verifiche AQL | grado di severità da utilizzarsi come default per i controlli in modalità AQL |
| pconti | 91 | PCO_lo_conto_contabilita | contiene il riferimento del conto ad un eventuale piano dei conti esterno (tipicamente: un programma di contabilità esterno) |
CAMPI
EXTRA CALCOLATI
I campi extra possono essere FISICAMENTE CREATI sul database, oppure CALCOLATI.
I campi extra calcolati hanno il grande pregio della flessibilità, perché
possono essere impostati in modo da restituire valori di specifico interesse
dell'utente per la specifica situazione.
Il valore del campo calcolato viene determinato valutando una specifica espressione SQL. Vi sono due tipi di campi calcolati:
- campi query: l'espressione SQL viene inserita come SUBQUERY della query principale, e ne diventa una colonna (o un campo); l'espressione SQL può fare libero riferimento ai campi della query principale; esempio: round(BA_fl_qta, 4) * BA_cr_scontato
- campi calcfields: l'espressione SQL rappresenta una query autonoma che viene eseguita a runtime nel metodo CALCFIELD()' del dataset; il simbolo %PK viene sostituito con il valore della primary key della tabella principale; esempio: SELECT sum(BA_fl_qta) FROM bolle_articoli WHERE (BA_lo_key_bolla = %PK)
La modalità "QUERY" è in genere da preferirsi perché più stabile e tendenzialmente più performante.