[RISOLTO] Modulo Personalizzato v.2.4

Sezione dedicata lla pubblicazione di tutorial per la versione di base di OpenSTAManager.
luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

[RISOLTO] Modulo Personalizzato v.2.4

Messaggio da luckyesblue »

Salve a tutti, sono nuovo sul sito ed ho da poco iniziato ad utilizzare OSM ed anche a programmare.
Sono qui per capire se magari qualcuno potrebbe darmi una mano a risolvere un problema con un modulo personalizzato che sto sviluppando.

Il modulo in questione è per la gestione delle letture dell'acqua.
Non spiego interamente per non dilungarmi troppo quindi passo direttamente al mio problema.

Ho una tabella Stabili (PK idstabile ) con il modulo inserito in zz_modules ed una tabella utenze (PK id e Campo idstabile nel filtro zz_views) anch'essa inserita in zz_modules, ho creato un record in zz_plugins per visualizzare la lista di tutte le utenze di un determinato stabile.


TABLES:

Codice: Seleziona tutto


-- Tabella Stabili

	CREATE TABLE IF NOT EXISTS `acm_stabili` (
		
		`idstabile`       INT(11)     NOT NULL AUTO_INCREMENT,
		`indirizzo` VARCHAR(155) NOT NULL,
		`civico` VARCHAR(11) NOT NULL,
		`comune` VARCHAR(155) NOT NULL,
		`provincia` CHAR(2) NOT NULL,
		`cap` VARCHAR(5) NOT NULL,
		`codfis` VARCHAR(11) NOT NULL UNIQUE,
		`iva` FLOAT(4,2) NOT NULL,
		`note` VARCHAR(155) NULL,
		`id_amm` INT(11) NULL,
		`id_utente` INT(11) NOT NULL,
		`id_fornitura` INT(11) NOT NULL,
		PRIMARY KEY (`idstabile`)
		
	)
		ENGINE=InnoDB
		AUTO_INCREMENT =0;
		
-- Tabella Utenze / Condomino
	CREATE TABLE IF NOT EXISTS `acm_utenze` (
		
		`id`       INT(11)     NOT NULL AUTO_INCREMENT,
		`nome` VARCHAR(55) NOT NULL,
		`cognome` VARCHAR(55) NOT NULL,
		`scala` CHAR(1) NOT NULL,
		`interno` TINYINT(2) NOT NULL,
		`p_comuni` TINYINT(2) NOT NULL DEFAULT 2,
		`p_uguali` TINYINT(2) NOT NULL DEFAULT 2,
		`idstabile` INT(11) NOT NULL,
		`id_utente` INT(11) NOT NULL,
		`creazione` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
		PRIMARY KEY (`id`),
		FOREIGN KEY (`idstabile`) REFERENCES `acm_stabili`(`idstabile`) ON DELETE CASCADE
		
	)
		ENGINE=InnoDB
		AUTO_INCREMENT =0;
		



ZZ_MODULES UTENZE:

Codice: Seleziona tutto

INSERT INTO `zz_modules`(`name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES ( 'Utenze Stabile', 'Utenze', 'surace/utenze', '{ "main_query": [ { "type": "table", "fields": "Nome, Stabile", 'SELECT |select| FROM `acm_utenze` WHERE 1=1 HAVING 2=2 ORDER BY `id`' WHERE `name` = 'Utenze Stabile';
', '', 'fa fa-address-card-o', '1.0', '2.*', 23, NULL, 1, 0);
'

ZZ_PLUGINS UTENZE IN STABILE:

Codice: Seleziona tutto

INSERT INTO `zz_plugins` (`name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`,`enabled`,`default`, `order`,`compatibility`, `version`, `directory`,`options2`, `options` ) VALUES ( 'Utenze Stabile', 'Utenze', ( SELECT `id` FROM `zz_modules` WHERE `name` = 'Stabili'), ( SELECT `id` FROM `zz_modules` WHERE `name` = 'Stabili'), 'tab', '', 1, 0, 1, '2.*', '2.3', 'utenze', '{ "main_query": [	{	"type": "table", "fields": "Utenza, Interno, Scala",	"query": "SELECT id, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Utenze Stabile') AS _link_module_, id AS _link_record_, CONCAT(nome, ' ', cognome) AS Utenza, interno AS Interno, scala AS Scala FROM acm_utenze WHERE idstabile=|idstabile| HAVING 2=2 ORDER BY id DESC"}	]}
' );


ZZ_VIEWS UTENZE

Codice: Seleziona tutto

INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `enabled`, `default`) VALUES ( ( SELECT `id` FROM `zz_modules` as `utenze` WHERE `name` = 'Utenze Stabile'), 'id', 'id', 1, 0, 0, 0, 0, 1);

INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `enabled`, `default`) VALUES ( ( SELECT `id` FROM `zz_modules` as `utenze` WHERE `name` = 'Utenze Stabile'), 'Nome Cognome', "CONCAT(nome, \' \', cognome)", 2, 1, 0, 0, 1, 1);

INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `enabled`, `default`) VALUES ( ( SELECT `id` FROM `zz_modules` as `utenze` WHERE `name` = 'Utenze Stabile'), 'Dettagli', "CONCAT(\'Scala: \', scala, \' Interno: \', interno)", 3, 1, 0, 0, 1, 1);

INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `enabled`, `default`) VALUES ( ( SELECT `id` FROM `zz_modules` as `utenze` WHERE `name` = 'Utenze Stabile'), 'Stabile', "( SELECT CONCAT(indirizzo, \' \', cap, \' \', comune ) FROM acm_stabili WHERE idstabile=idstabile )", 4, 1, 0, 0, 1, 1);

INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `enabled`, `default`) VALUES ( ( SELECT `id` FROM `zz_modules` as `utenze` WHERE `name` = 'Utenze Stabile'), 'idstabile', 'idstabile', 5, 0, 0, 0, 0, 1);
DOVE L'ULTIMA INSERT DOVREBBE SERVIRMI , CREDO, A RECUPERARMI L'ID CHE MI INTERESSA NELLA QUERY DEL PLUGIN

"DataTables warning: table id=main_57 - Invalid JSON response. For more information about this error, please see http://datatables.net/tn/1"

E dopo aver fatto il refresh:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '|idstabile| HAVING 2=2 ORDER BY id DESC) AS `count`' at line 1

Sapreste dirmi dove sbaglio per favoree :oops:

Avatar utente
dasc3er
Messaggi: 1210
Iscritto il: 11 lug 2016 17:41

Re: Modulo Personalizzato

Messaggio da dasc3er »

Ciao luckyesblue,
Una volta inserito le viste per il modulo devi selezionare i gruppi che vi hanno accesso, attraverso il modulo Viste.

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Modulo Personalizzato

Messaggio da luckyesblue »

Ciao dasc3r, grazie per la tua risposta innanzitutto.
Ho omesso di scriverlo nel post ma ho inserito i permessi per tutti i gruppi che hanno accesso ai plugin e a entrambi i moduli..ma niente.
Mi da sempre lo stesso errore.

Non so se devo inserire una query più specifica nell'init del modulo.

Ho preso spunto dal plugin di myImpianti visualizzato in anagrafica pee la query json.

Che tu sappia devo inserire altro codice in qualche file del modulo?
Grazie

Avatar utente
fabiop82
Messaggi: 896
Iscritto il: 27 mar 2012 19:27
Località: Padova
Contatta:

Re: Modulo Personalizzato

Messaggio da fabiop82 »

il problema è |idstabile| questa stringa deve essere sostituita dall'id del record aperto, che nel tuo caso è uno stabile...

cerca la funzione "replacePlaceholder" nel file "/src/App.php" per capire il funzionamento di quella stringa

Logicamente se effettui modifiche a questo file diventano un problema gli aggiornamenti di release...

forse ti conviene usare una delle stringhe che consideriamo di default come idanagrafica
programmatore freelance - Padova
STAFF OpenSTAManager
http://www.fpsoftware.net

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Modulo Personalizzato

Messaggio da luckyesblue »

Ciao fabiop82 e grazie anche a te per la risposta.

Nella mia installazione (la 2.3) non trovo il file App.php..devo fare l'aggiornamento?

E come potrei inserire il mio idstabile come parametro di default per risolvere il problema?
Grazie ancora

Avatar utente
fabiop82
Messaggi: 896
Iscritto il: 27 mar 2012 19:27
Località: Padova
Contatta:

Re: Modulo Personalizzato

Messaggio da fabiop82 »

direi di sì, ti conviene aggiornare... aspetta ancora qualche giorno per la prossima release stabile magari ...

purtroppo non c'è un modo per rendere il tuo parametro di default ... hai beccato un punto hardcoded del programma :roll:
vedi:
https://github.com/devcode-it/openstama ... p.php#L383
programmatore freelance - Padova
STAFF OpenSTAManager
http://www.fpsoftware.net

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Modulo Personalizzato

Messaggio da luckyesblue »

Ho effettuato l'aggiornamento all'ultima relase ed ho trovato il file che mi indicavi, ho visto la funzione che mi dicevi..perfetto, ed approposito di questo mi sono ricordato che ho aggiunto al file ./ajax_select.php i campi che mi servivano per creare le select dinamica tramite il parametro ajax-source, ma come immagini non è un'ottima soluzione per le release successive, dove protrei inserire i miei filtri per generare le mie select dinamiche senza incorrere a questo problema? Posso fare un override di queste funzioni ( anche per quanto riguarda il mio idstabile )? Se si dove?

Ho visto modutil.php oppure in controller_before.php potrei inserirle in uno di questi?
Grazie ancora e scusate per le troppe domande :roll:

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Modulo Personalizzato

Messaggio da luckyesblue »

Ah scusami fabiop82, non aveo ancora letto..va bene ugualmente tanto per il mio cliente non importa più di tanto aggiornare..e cosa mi dici dell'override delle select dinamiche ajax_select.php?
Ho visto che nella 2.4 non c'è più lo switch case sulla op :o :o .


Grazie ancora ( mi hai risolto un enorme intoppo )

Avatar utente
fabiop82
Messaggi: 896
Iscritto il: 27 mar 2012 19:27
Località: Padova
Contatta:

Re: Modulo Personalizzato

Messaggio da fabiop82 »

riguardo i files "controller_before.php" che è possibile inserire, è una funzionalità nuova, devo ancora provarla anch'io in un caso reale :lol:

riguardo invece "ajax_select.php" , proprio per casi come il tuo, è stata creata una classe "/src/AJAX.php" e poi all'interno di ogni modulo c'è una sotto-cartella "ajax" con alcuni files, praticamente al tuo modulo puoi aggiungere le ricerche tramite ajax, senza "toccare" la struttura originale!

vedi i moduli anagrafiche ed articoli come esempi.

Perdona ma come al solito siamo parecchio indietro con la documentazione...
programmatore freelance - Padova
STAFF OpenSTAManager
http://www.fpsoftware.net

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Modulo Personalizzato

Messaggio da luckyesblue »

Si ho visto e sistemato le select ajax ed anche la questione del plugin oggetto della prima richiesta.
Quindi problema risolto, :D :D .

Capisco che c'è tanto lavoro da fare e che non è semplice stare dietro a tutto ( riguardo alla documentazione ) ma offrite comunque un ottimo supporto tremite il forum ho visto.

In ogni caso ottimo lavoro! ;)

Grazie per il supporto e la disponibilità!!

Rispondi