Personalizzare “Nota”. Creazione di una nuova entità base.
Creato il 16 dicembre 2011 da Magnus
Riporto un primo interessante tutorial relativo al software gestionale Open Source "Nota – Il Software Gestionale".
Segnalo che probabilmente una delle cose più interessante del software e la facilità di customizzazione delle sue funzionalità.
Il tutorial è applicabile alle versioni di NotaSoftware maggiori o uguali alla 3.0
NotaSoftware NON è solo un programma gestionale, è un framework.
L'idea ( sin dalla sua nascita ) è stata quella di offrire agli utenti uno strumento malleabile, facilmente modificabile senza o con pochissime righe di script.
Il framework essenzialmente lavora sul fatto che ogni gestionale ha bisogno di form, liste, schede master/detail ed altri oggetti che definiremo entità.
Le entità a loro volta sono composte da componenti, che con le loro proprietà ne definiscono la struttura.
Faccio un esempio pratico che servirà meglio a chiarire i concetti esposti.
Ipotizziamo di avere la necessità di salvare dei clienti e quindi avere una anagrafica degli stessi ( Nota: il software base gestisce già la cosa, ma in maniera leggermente diversa. In ogni caso l'esempio è da considerarsi tale ed è molto esplicativo di come è possibile creare immediatamente una nuova entità ).
Nel nostro esempio la nostra entità sarà l'insieme dei nostri clienti ( e quindi la tabella clienti ).
Probabilmente su tale entità si vorranno definire le funzioni di base:
1) Inserimento / modifica dei record
2) Visualizzazione Ricerca dei record
La modalità di realizzazione di tali funzionalità su Nota si basa sul popolamento delle seguenti tabelle "di sistema":
_forms
_forms_columns
_lists
_lists_columns
Gli step da seguire sono quelli a seguire ( tutte le operazioni possono essere eseguite in maniera visuale mediante un qualsiasi tool per mysql ).
Per la creazione della FORM con funzioni di inserimento/modifica:
1) Realizzazione della tabella fisica "clienti" nel proprio db ( è la tabella dove risiederanno i dati )
Allego script sql per la creazione di una semplice tabella:
CREATE TABLE `clienti` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`codice` INT(10) NOT NULL,
`descrizione` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
)
2) Configurazione di un record nella tabella _forms del proprio db:
La tabella _forms è composta dai seguenti campi:
name ( rappresenta il nome della form da creare. Il nome deve avere lo stesso nome della sezione linkata nel menù )
table ( rappresenta il nome della tabella fisica su cui si appoggia la form )
primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia la form )
no_new_record ( è un flag Y/N che indica se la form deve permettere l'inserimento di nuovo record o semplicemente la loro modifica )
Allego script sql:
INSERT INTO `_forms` (`id`, `name`, `table`, `primary_key`, `no_new_record`) VALUES (1, 'clienti/gestione', 'clienti', 'id', NULL),
3) Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _forms_columns del proprio db:
id_form ( id della form a cui il record fa riferimento )
name ( nome descrittivo del campo che stiamo inserendo )
id_field_type ( il tipo che si vuole associare al campo )
field ( nome del campo fisico )
foreign_table ( nome tabella fisica esterna se il campo è in join )
foreign_key ( chiave delle tabella fisica in join se il campo è in join )
foreign_description ( valore da recuperare dalla tabella in join per il campo in join )
label ( valore a video per il campo )
read_only ( flag Y/N che identifica se il campo è di sola lettura )
sequence ( numero di sequenza a video per il campo )
Allego script sql:
INSERT INTO `_form_columns` (`id`, `id_form`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `read_only`, `sequence`) VALUES (1, 1, 'codice', 1, 'CODICE', '', NULL, NULL, NULL, '', 1)
INSERT INTO `_form_columns` (`id`, `id_form`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `read_only`, `sequence`) VALUES (2, 1, 'descrizione', 1, 'DESCRIZIONE', '', NULL, NULL, NULL, '', 2)
Per la creazione della LISTA con funzioni di visualizzazione/ricerca:
1) Configurazione di un record nella tabella _lists del proprio db:
La tabella _lists è composta dai seguenti campi:
name ( rappresenta il nome della lista da creare. Il nome deve avere lo stesso nome della sezione linkata nel menù )
table ( rappresenta il nome della tabella fisica su cui si appoggia la form )
primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia la form )
paginate ( rappresenta il numero di record visualizzati per pagina )
options ( rappresenta le opzioni attive per la lista: e = edit; d = delete; s = search )
Allego script sql:
INSERT INTO `_lists` (`id`, `name`, `table`, `primary_key`, `paginate`, `options`) VALUES (1, 'clienti/gestione', 'clienti', 'id', 15, 'e/d/s')
2) Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _lists_columns del proprio db:
La tabella _lists_columns è composta dai seguenti campi:
id_list ( id della list a cui il record fa riferimento )
name ( nome descrittivo del campo che stiamo inserendo )
id_field_type ( il tipo che si vuole associare al campo )
field ( nome del campo fisico )
foreign_table ( nome tabella fisica esterna se il campo è in join )
foreign_key ( chiave delle tabella fisica in join se il campo è in join )
foreign_description ( valore da recuperare dalla tabella in join per il campo in join )
label ( valore a video per il campo )
search ( flag Y/N che indica se sul campo è possibile eseguire ricerche )
sequence ( numero di sequenza a video per il campo )
Allego script sql:
INSERT INTO `_list_columns` (`id`, `id_list`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `search`, `sequence`) VALUES (1, 1, 'codice', 1, 'CODICE', '', NULL, NULL, '', '', 1)
INSERT INTO `_list_columns` (`id`, `id_list`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `search`, `sequence`) VALUES (2, 1, 'descrizione', 1, 'DESCRIZIONE', '', NULL, NULL, '', '', 2)
A seguire il sito di riferimento: http://www.notasoftware.com
Potrebbero interessarti anche :