Magazine Informatica

Personalizzare “Nota”. Creazione di una nuova entità base.

Creato il 16 dicembre 2011 da Magnus
Personalizzare “Nota”. Creazione di una nuova entità base.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 :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :