Il tutorial è applicabile alle versioni di NotaSoftware maggiori o uguali alla 0.3
Di seguito è indicata la configurazione delle nuove funzionalità di dettaglio del Form e del List.
La modalità di realizzazione di tali funzionalità su Nota si basa sul popolamento delle seguenti tabelle "di sistema":_forms_details
_form_columns_details
_lists_details
_list_columns_details
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 di un DETAIL FORM con funzioni di visualizzazione/inserimento/modifica:
1) Realizzazione della tabella fisica "dettaglio_documenti" nel proprio db ( è la tabella dove risiederanno i dati )
Allego script sql per la creazione di una semplice tabella:
CREATE TABLE `dettaglio_documenti` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`id_documento` INT(11) NOT NULL DEFAULT '0',
`qta` INT(11) NOT NULL DEFAULT '0',
`prezzo_unitario` FLOAT(10,2) NOT NULL DEFAULT '0.00',
`id_articolo` INT(11) UNSIGNED NULL DEFAULT '0',
`totale` FLOAT(10,2) NULL DEFAULT NULL,
`totale_iva` FLOAT(10,2) NULL DEFAULT NULL,
`totale_iva_esclusa` FLOAT(10,2) NULL DEFAULT NULL,
`id_codice_iva` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
2) Configurazione di un record nella tabella _forms_details del proprio db:
La tabella _forms_details è composta dai seguenti campi:
id_form ( rappresenta l'id del form padre – tabella _forms )
name ( rappresenta il nome del detail form da creare. Il nome deve avere lo stesso nome indicato nel file jsp )
table ( rappresenta il nome della tabella fisica su cui si appoggia il detail form )
foreign_table ( rappresenta il nome della tabella fisica su cui si appoggia la form padre)
primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia la form padre )
foreign_key ( rappresenta la chiave della tabella fisica su cui si appoggia il detail form )
auto_format_string ( è un flag Y/N che indica se le label del detail form devono essere formattate automaticamente )
detail_label ( rappresenta il nome della label del pulsante che porta alla form di dettaglio )
detail_form_pre_save ( rappresenta il metodo javascript da invocare prima del salvataggio )
detail_form_post_save ( rappresenta il metodo javascript da invocare dopo del salvataggio )
Allego script sql:
INSERT INTO `_forms_details` (`id`, `id_form`, `name`, `table`, `foreign_table`, `primary_key`, `foreign_key`, `auto_format_string`, `detail_label`, `detail_form_pre_save`, `detail_form_post_save`) VALUES (1, 1, 'documenti/dettaglio_documenti', 'dettaglio_documenti', 'documenti', 'id', 'id_documento', 'Y', 'Visualizza Dettaglio', NULL, 'viewForm()')
3) Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _form_columns_details del proprio db:
id_form_detail ( id della form detail 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 )
foreign_long_description ( valore da recuperare dalla tabella in join per il campo in join )
foreign_sub_table ( nome tabella fisica esterna se il campo è un sub value)
foreign_sub_key ( chiave delle tabella fisica se il campo è un sub value )
sub_more_info ( info aggiungive per un campo di tipo sub value )
foreign_long_key ( chiave verso il valore di default dei campi di tipo long combo box )
foreign_long_default ( valore di default dei campi di tipo long combo box )
Allego script sql:
INSERT INTO `_form_columns_details` (`id`, `id_form_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `foreign_code`, `label`, `read_only`, `sequence`, `foreign_long_description`, `foreign_sub_table`, `foreign_sub_key`, `sub_more_info`, `foreign_long_key`, `foreign_long_default`) VALUES
(1, 1, 'id_articolo', 3, 'id_articolo', 'articoli', 'id', 'descrizione', NULL, 'ARTICOLO', '', 1, 'descrizione', 'articoli', 'id', '', '2', '- Nessun Articolo -')
INSERT INTO `_form_columns_details` (`id`, `id_form_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `foreign_code`, `label`, `read_only`, `sequence`, `foreign_long_description`, `foreign_sub_table`, `foreign_sub_key`, `sub_more_info`, `foreign_long_key`, `foreign_long_default`) VALUES
(2, 1, 'descrizione_articolo', 1, 'descrizione_articolo', '', NULL, NULL, NULL, NULL, '', 2, NULL, NULL, NULL, NULL, NULL, NULL);
Per la creazione di un DETAIL LIST con funzioni di visualizzazione/ricerca:
1) Configurazione di un record nella tabella _lists_details del proprio db:
La tabella _lists_details è composta dai seguenti campi:
id_list ( rappresenta l'id del list padre – tabella _lists )
name ( rappresenta il nome del list detail da creare. Il nome deve avere lo stesso nome indicato nel file jsp )
table ( rappresenta il nome della tabella fisica su cui si appoggia il detail form)
foreign_table ( rappresenta il nome della tabella fisica su cui si appoggia il list padre)
primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia il list padre )
foreign_key ( rappresenta la chiave della tabella fisica su cui si appoggia il detail list )
auto_format_string ( è un flag Y/N che indica se le label del detail list devono essere formattate automaticamente )
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_details` (`id`, `id_list`, `name`, `table`, `foreign_table`, `primary_key`, `foreign_key`, `paginate`, `options`, `auto_format_string`) VALUES
(1, 1, 'documenti/dettaglio_documenti', 'dettaglio_documenti', 'documenti', 'id', 'id_documento', 30, 'e/d/s', 'Y')
2) Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _list_columns_details del proprio db:
La tabella _list_columns_details è composta dai seguenti campi:
id_list_detail ( id del list detail 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_details` (`id`, `id_list_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `read_only`, `search`, `sequence`) VALUES
(1, 1, 'descrizione_articolo', 1, 'descrizione_articolo', '', NULL, NULL, 'Articolo', '', '', 1)
(2, 1, 'prezzo_unitario', 1, 'prezzo_unitario', '', NULL, NULL, 'Prezo Unitario', '', '', 2)
In uno dei seguenti tutorial affronteremo nel dettaglio la creazione di dettagli multipli.