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 :

Possono interessarti anche questi articoli :