mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-25 15:22:24 +01:00
Introduzione della nuova struttura AJAX
Introduzione della nuova struttura AJAX per la gestione automatica e modulare del sistema di ricerca e del completamente automatico. Miglioramenti nella gestione dei permessi.
This commit is contained in:
parent
3ca9156741
commit
9c2d1fa607
File diff suppressed because it is too large
Load Diff
17
ajax_complete.php
Normal file
17
ajax_complete.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/core.php';
|
||||
|
||||
if (!isset($resource)) {
|
||||
$module = $get['module'];
|
||||
$op = $get['op'];
|
||||
|
||||
$result = AJAX::complete($op);
|
||||
|
||||
echo $result;
|
||||
}
|
||||
|
||||
// Casi particolari
|
||||
else {
|
||||
|
||||
}
|
535
ajax_search.php
Normal file
535
ajax_search.php
Normal file
@ -0,0 +1,535 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/core.php';
|
||||
|
||||
if (!isset($term)) {
|
||||
/*
|
||||
== Super search ==
|
||||
Ricerca di un termine su tutti i moduli.
|
||||
Il risultato è in json
|
||||
*/
|
||||
|
||||
$term = $get['term'];
|
||||
$term = str_replace('/', '\\/', $term);
|
||||
|
||||
$results = AJAX::search($term);
|
||||
|
||||
echo json_encode($results);
|
||||
}
|
||||
|
||||
// Casi particolari
|
||||
else {
|
||||
$i = 0;
|
||||
|
||||
/*
|
||||
Interventi
|
||||
*/
|
||||
if (Modules::getPermission('Interventi') != '-') {
|
||||
$campi = ['codice', '(SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id)', 'data_richiesta', 'info_sede', 'richiesta', 'descrizione', 'informazioniaggiuntive'];
|
||||
$campi_text = ['Codice intervento', 'Data intervento', 'Data richiesta intervento', 'Sede intervento', 'Richiesta', 'Descrizione', 'Informazioni aggiuntive'];
|
||||
|
||||
$id_module = Modules::get('Interventi')['id'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$build_query .= Modules::getAdditionalsQuery('Interventi');
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data FROM in_interventi WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['id'];
|
||||
$result[$r + $i]['title'] = 'Intervento '.$rs[$r]['codice'].' del '.Translator::dateToLocale($rs[$r]['data']);
|
||||
$result[$r + $i]['category'] = 'Interventi';
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Preventivi
|
||||
*/
|
||||
if (Modules::getPermission('Contabilita') != '-') {
|
||||
$campi = ['numero', 'nome', 'descrizione'];
|
||||
$campi_text = ['Codice preventivo', 'Nome', 'Descrizione'];
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name='Preventivi'");
|
||||
$id_module = $rs[0]['id'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT *, co_preventivi.id AS idpreventivo FROM co_preventivi WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['idpreventivo'];
|
||||
$result[$r + $i]['title'] = 'Preventivo '.$rs[$r]['numero'].(($rs[$r]['data_accettazione'] == '0000-00-00') ? ' del '.Translator::dateToLocale($rs[$r]['data_accettazione']) : '');
|
||||
$result[$r + $i]['category'] = 'Preventivi';
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fatture
|
||||
*/
|
||||
if (Modules::getPermission('Contabilita') != '-') {
|
||||
$campi = ['numero', 'numero_esterno', 'data', 'note', 'note_aggiuntive', 'buono_ordine'];
|
||||
$campi_text = ['Numero', 'Numero secondario', 'Data', 'Note', 'Note aggiuntive', 'Buono d\'ordine'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT *, co_documenti.id AS iddocumento FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
if ($rs[$r]['numero_esterno'] == '') {
|
||||
$numero = $rs[$r]['numero'];
|
||||
} else {
|
||||
$numero = $rs[$r]['numero_esterno'];
|
||||
}
|
||||
|
||||
// Controllo se si tratta di una fattura di acquisto o di vendita e seleziono il modulo opportuno
|
||||
if ($rs[$r]['dir'] == 'uscita') {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Fatture di acquisto'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
} else {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Fatture di vendita'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
}
|
||||
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['iddocumento'];
|
||||
$result[$r + $i]['title'] = $rs[$r]['descrizione'].' num. '.$numero.' del '.Translator::dateToLocale($rs[$r]['data']);
|
||||
$result[$r + $i]['category'] = $rs[$r]['descrizione'];
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Righe fatture
|
||||
*/
|
||||
if (Modules::getPermission('Contabilita') != '-') {
|
||||
$campi = ['descrizione'];
|
||||
$campi_text = ['Riga'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR co_righe_documenti.'.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT co_documenti.*, co_documenti.id AS iddocumento, co_tipidocumento.descrizione AS tipodoc, co_tipidocumento.dir, co_righe_documenti.descrizione FROM co_righe_documenti INNER JOIN (co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id) ON co_documenti.id=co_righe_documenti.iddocumento WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
if ($rs[$r]['numero_esterno'] == '') {
|
||||
$numero = $rs[$r]['numero'];
|
||||
} else {
|
||||
$numero = $rs[$r]['numero_esterno'];
|
||||
}
|
||||
|
||||
// Controllo se si tratta di una fattura di acquisto o di vendita e seleziono il modulo opportuno
|
||||
if ($rs[$r]['dir'] == 'uscita') {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Fatture di acquisto'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
} else {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Fatture di vendita'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
}
|
||||
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['iddocumento'];
|
||||
$result[$r + $i]['title'] = $rs[$r]['tipodoc'].' num. '.$numero.' del '.Translator::dateToLocale($rs[$r]['data']);
|
||||
$result[$r + $i]['category'] = $rs[$r]['tipodoc'];
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Articoli
|
||||
*/
|
||||
if (Modules::getPermission('Articoli') != '-') {
|
||||
$campi = ['codice', 'descrizione', '(SELECT nome FROM mg_categorie WHERE mg_categorie.id = mg_articoli.id_categoria)', '(SELECT nome FROM mg_categorie WHERE mg_categorie.id = mg_articoli.id_sottocategoria)', 'note'];
|
||||
$campi_text = ['Codice', 'Descrizione', 'Categoria', 'Subcategoria', 'Note'];
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name='Articoli'");
|
||||
$id_module = $rs[0]['id'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM mg_articoli WHERE 1=0 '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['id'];
|
||||
$result[$r + $i]['title'] = $rs[$r]['codice'].' - '.$rs[$r]['descrizione'];
|
||||
$result[$r + $i]['category'] = 'Articoli';
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Automezzi
|
||||
*/
|
||||
if (Modules::getPermission('Automezzi') != '-') {
|
||||
$campi = ['nome', 'descrizione', 'targa'];
|
||||
$campi_text = ['Nome', 'Descrizione', 'Targa'];
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name='Automezzi'");
|
||||
$id_module = $rs[0]['id'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM dt_automezzi WHERE 1=0 '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['id'];
|
||||
$result[$r + $i]['title'] = $rs[$r]['nome'];
|
||||
$result[$r + $i]['category'] = 'Automezzi';
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Ddt
|
||||
*/
|
||||
if (Modules::getPermission('Magazzino') != '-') {
|
||||
$campi = ['numero', 'numero_esterno', 'data', 'note'];
|
||||
$campi_text = ['Numero', 'Numero secondario', 'Data', 'Note'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT *, dt_ddt.id AS idddt FROM dt_ddt INNER JOIN dt_tipiddt ON dt_ddt.idtipoddt=dt_tipiddt.id WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
if ($rs[$r]['numero_esterno'] == '') {
|
||||
$numero = $rs[$r]['numero'];
|
||||
} else {
|
||||
$numero = $rs[$r]['numero_esterno'];
|
||||
}
|
||||
|
||||
// Controllo se si tratta di un tipo ddt di acquisto o di vendita e seleziono il modulo opportuno
|
||||
if ($rs[$r]['dir'] == 'uscita') {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Ddt di acquisto'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
} else {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Ddt di vendita'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
}
|
||||
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['idddt'];
|
||||
$result[$r + $i]['title'] = $rs[$r]['descrizione'].' num. '.$numero.' del '.Translator::dateToLocale($rs[$r]['data']);
|
||||
$result[$r + $i]['category'] = $rs[$r]['descrizione'];
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Righe ddt
|
||||
*/
|
||||
if (Modules::getPermission('Magazzino') != '-') {
|
||||
$campi = ['descrizione'];
|
||||
$campi_text = ['Riga'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR dt_righe_ddt.'.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT dt_ddt.*, dt_ddt.id AS idddt, dt_tipiddt.descrizione AS tipodoc, dt_tipiddt.dir, dt_righe_ddt.descrizione FROM dt_righe_ddt INNER JOIN (dt_ddt INNER JOIN dt_tipiddt ON dt_ddt.idtipoddt=dt_tipiddt.id) ON dt_ddt.id=dt_righe_ddt.idddt WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
if ($rs[$r]['numero_esterno'] == '') {
|
||||
$numero = $rs[$r]['numero'];
|
||||
} else {
|
||||
$numero = $rs[$r]['numero_esterno'];
|
||||
}
|
||||
|
||||
// Controllo se si tratta di un tipo ddt di acquisto o di vendita e seleziono il modulo opportuno
|
||||
if ($rs[$r]['dir'] == 'uscita') {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Ddt di acquisto'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
} else {
|
||||
$rsm = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name = 'Ddt di vendita'");
|
||||
$id_module = $rsm[0]['id'];
|
||||
}
|
||||
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['idddt'];
|
||||
// $result[$r+$i]['link'] = ROOTDIR."/modules/magazzino/ddt/ddt.php?idddt=".$rs[$r]['iddocumento']."&dir=".$rs[$r]['dir'];
|
||||
$result[$r + $i]['title'] = $rs[$r]['tipodoc'].' num. '.$numero.' del '.Translator::dateToLocale($rs[$r]['data']);
|
||||
$result[$r + $i]['category'] = $rs[$r]['tipodoc'];
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
MyImpianti
|
||||
*/
|
||||
if (Modules::getPermission('MyImpianti') != '-') {
|
||||
$campi = ['matricola', 'nome', 'descrizione', 'ubicazione', 'occupante', 'proprietario'];
|
||||
$campi_text = ['Matricola', 'Nome', 'Descrizione', 'Ubicazione', 'Occupante', 'Proprietario'];
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name='MyImpianti'");
|
||||
$id_module = $rs[0]['id'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$build_query .= Modules::getAdditionalsQuery('MyImpianti');
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM my_impianti WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
$result[$r + $i]['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['matricola'];
|
||||
$result[$r + $i]['title'] = $rs[$r]['matricola'].' - '.$rs[$r]['nome'];
|
||||
$result[$r + $i]['category'] = 'MyImpianti';
|
||||
$result[$r + $i]['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$i += $r;
|
||||
}
|
||||
}
|
||||
|
||||
$results = $result;
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
include_once __DIR__.'/core.php';
|
||||
|
||||
if (!isset($superselect)) {
|
||||
if (!isset($resource)) {
|
||||
$op = empty($op) ? filter('op') : $op;
|
||||
$search = filter('q');
|
||||
|
||||
@ -11,10 +11,13 @@ if (!isset($superselect)) {
|
||||
}
|
||||
$elements = (!is_array($elements)) ? explode(',', $elements) : $elements;
|
||||
|
||||
$results = AJAX::getSelectValues($op, $elements, $search);
|
||||
$results = AJAX::select($op, $elements, $search);
|
||||
|
||||
echo json_encode($results);
|
||||
} else {
|
||||
}
|
||||
|
||||
// Casi particolari
|
||||
else {
|
||||
switch ($resource) {
|
||||
case 'articoli':
|
||||
$query = 'SELECT mg_articoli.*, co_iva.descrizione AS iva_vendita FROM mg_articoli LEFT OUTER JOIN co_iva ON mg_articoli.idiva_vendita=co_iva.id |where| ORDER BY mg_articoli.id_categoria ASC, mg_articoli.id_sottocategoria ASC';
|
||||
@ -201,7 +204,7 @@ if (!isset($superselect)) {
|
||||
|
||||
$custom['contenuto'] = 'contenuto';
|
||||
|
||||
$results = completeResults($query, $where, $filter, $search, $custom);
|
||||
$results = AJAX::completeResults($query, $where, $filter, $search, $custom);
|
||||
foreach ($results as $key => $value) {
|
||||
$matricola = \Util\Ini::getValue($r['contenuto'], 'Matricola');
|
||||
|
||||
|
@ -13,7 +13,7 @@ currentMenu: struttura
|
||||
- [Struttura](#struttura)
|
||||
- [Root](#root)
|
||||
- [add.php](#addphp)
|
||||
- [ajax_autocomplete.php](#ajax_autocompletephp)
|
||||
- [ajax_complete.php](#ajax_completephp)
|
||||
- [ajax_dataload.php](#ajax_dataloadphp)
|
||||
- [ajax_select.php](#ajax_selectphp)
|
||||
- [bug.php](#bugphp)
|
||||
@ -107,7 +107,7 @@ Il file `add.php` è dedicato alla gestione dei form di creazione nuovi elementi
|
||||
|
||||
In particolare si occupa parallelamente della funzionalità di aggiunta al volo, visibile in azione nei modulo **Interventi**, **Articoli** e in alcuni altri punti del software.
|
||||
|
||||
### ajax_autocomplete.php
|
||||
### ajax_complete.php
|
||||
|
||||
Il file `ajax_dataload.php` gestisce il caricamento dinamico dei dati in varie sezioni del sito, relativamente alle operazioni di auto-completamento dei form e della ricerca globale.
|
||||
|
||||
|
@ -323,7 +323,7 @@ $(document).ready(function () {
|
||||
},
|
||||
source: function (request, response) {
|
||||
$.ajax({
|
||||
url: globals.rootdir + '/ajax_autocomplete.php?op=supersearch&module=*',
|
||||
url: globals.rootdir + '/ajax_search.php',
|
||||
dataType: "json",
|
||||
data: {
|
||||
term: request.term
|
||||
|
@ -65,23 +65,23 @@ msgstr ""
|
||||
msgid "Errore"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:357
|
||||
#: ajax_complete.php:357
|
||||
msgid "Nessuna vendita di questo articolo al cliente selezionato"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:388
|
||||
#: ajax_complete.php:388
|
||||
msgid "Questo articolo non è mai stato venduto"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:419
|
||||
#: ajax_complete.php:419
|
||||
msgid "Questo articolo non è mai stato acquistato"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:488
|
||||
#: ajax_complete.php:488
|
||||
msgid "Nessuna fattura trovata"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:524
|
||||
#: ajax_complete.php:524
|
||||
msgid "Nessun ddt trovato"
|
||||
msgstr ""
|
||||
|
||||
|
@ -64,23 +64,23 @@ msgstr ""
|
||||
msgid "Errore"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:357
|
||||
#: ajax_complete.php:357
|
||||
msgid "Nessuna vendita di questo articolo al cliente selezionato"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:388
|
||||
#: ajax_complete.php:388
|
||||
msgid "Questo articolo non è mai stato venduto"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:419
|
||||
#: ajax_complete.php:419
|
||||
msgid "Questo articolo non è mai stato acquistato"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:488
|
||||
#: ajax_complete.php:488
|
||||
msgid "Nessuna fattura trovata"
|
||||
msgstr ""
|
||||
|
||||
#: ajax_autocomplete.php:524
|
||||
#: ajax_complete.php:524
|
||||
msgid "Nessun ddt trovato"
|
||||
msgstr ""
|
||||
|
||||
|
@ -64,23 +64,23 @@ msgstr "Errore durante l'eliminazione del file _FILE_ in _DIR_!"
|
||||
msgid "Errore"
|
||||
msgstr "Errore"
|
||||
|
||||
#: ajax_autocomplete.php:357
|
||||
#: ajax_complete.php:357
|
||||
msgid "Nessuna vendita di questo articolo al cliente selezionato"
|
||||
msgstr "Nessuna vendita di questo articolo al cliente selezionato"
|
||||
|
||||
#: ajax_autocomplete.php:388
|
||||
#: ajax_complete.php:388
|
||||
msgid "Questo articolo non è mai stato venduto"
|
||||
msgstr "Questo articolo non è mai stato venduto"
|
||||
|
||||
#: ajax_autocomplete.php:419
|
||||
#: ajax_complete.php:419
|
||||
msgid "Questo articolo non è mai stato acquistato"
|
||||
msgstr "Questo articolo non è mai stato acquistato"
|
||||
|
||||
#: ajax_autocomplete.php:488
|
||||
#: ajax_complete.php:488
|
||||
msgid "Nessuna fattura trovata"
|
||||
msgstr "Nessuna fattura trovata"
|
||||
|
||||
#: ajax_autocomplete.php:524
|
||||
#: ajax_complete.php:524
|
||||
msgid "Nessun ddt trovato"
|
||||
msgstr "Nessun ddt trovato"
|
||||
|
||||
|
34
modules/anagrafiche/ajax/complete.php
Normal file
34
modules/anagrafiche/ajax/complete.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
switch ($resource) {
|
||||
case 'get_sedi':
|
||||
$idanagrafica = get('idanagrafica');
|
||||
$q = "SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='".$idanagrafica."' ".Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY id';
|
||||
$rs = $dbo->fetchArray($q);
|
||||
$n = sizeof($rs);
|
||||
|
||||
for ($i = 0; $i < $n; ++$i) {
|
||||
echo html_entity_decode($rs[$i]['id'].':'.$rs[$i]['descrizione']);
|
||||
if (($i + 1) < $n) {
|
||||
echo '|';
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// Elenco sedi con <option>
|
||||
case 'get_sedi_select':
|
||||
$idanagrafica = get('idanagrafica');
|
||||
$q = "SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='".$idanagrafica."' ".Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY id';
|
||||
$rs = $dbo->fetchArray($q);
|
||||
$n = sizeof($rs);
|
||||
|
||||
echo "<option value=\"-1\">- Nessuna -</option>\n";
|
||||
echo "<option value=\"0\">Sede legale</option>\n";
|
||||
|
||||
for ($i = 0; $i < $n; ++$i) {
|
||||
echo '<option value="'.$rs[$i]['id'].'">'.$rs[$i]['descrizione']."</option>\n";
|
||||
}
|
||||
break;
|
||||
}
|
99
modules/anagrafiche/ajax/search.php
Normal file
99
modules/anagrafiche/ajax/search.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
/*
|
||||
Anagrafiche
|
||||
*/
|
||||
$campi = ['codice', 'ragione_sociale', 'piva', 'codice_fiscale', 'indirizzo', 'indirizzo2', 'citta', 'cap', 'provincia', 'telefono', 'fax', 'cellulare', 'email', 'sitoweb', 'note', 'codicerea', 'settore', 'marche', 'cciaa', 'n_alboartigiani'];
|
||||
$campi_text = ['Codice', 'Ragione sociale', 'Partita iva', 'Codice fiscale', 'Indirizzo', 'Indirizzo2', 'Città', 'C.A.P.', 'Provincia', 'Telefono', 'Fax', 'Cellulare', 'Email', 'Sito web', 'Note', 'Codice REA', 'Settore', 'Marche', 'CCIAA', 'Numero di iscrizione albo artigiani'];
|
||||
|
||||
$rs = $dbo->fetchArray("SELECT id FROM zz_modules WHERE name='Anagrafiche'");
|
||||
$id_module = $rs[0]['id'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%" AND deleted = 0';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM an_anagrafiche WHERE 1=0 '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
$result = [];
|
||||
|
||||
$result['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['idanagrafica'];
|
||||
$result['title'] = $rs[$r]['ragione_sociale'];
|
||||
$result['category'] = 'Anagrafiche';
|
||||
$result['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
$results[] = $result;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Referenti anagrafiche
|
||||
*/
|
||||
$campi = ['nome', 'mansione', 'telefono', 'email'];
|
||||
$campi_text = ['Nome', 'Mansione', 'Telefono', 'Email'];
|
||||
|
||||
$build_query = '';
|
||||
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
$build_query .= ' OR '.$campi[$c].' LIKE "%'.$term.'%"';
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM an_referenti WHERE idanagrafica IN('.implode(',', $idanagrafiche).') '.$build_query);
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
$result = [];
|
||||
|
||||
// Loop record corrispondenti alla ricerca
|
||||
for ($r = 0; $r < sizeof($rs); ++$r) {
|
||||
$result['link'] = ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['idanagrafica'].'#tabs-2';
|
||||
$result['title'] = $rs[$r]['nome'];
|
||||
$result['category'] = 'Referenti';
|
||||
$result['labels'] = [];
|
||||
|
||||
// Loop campi da evidenziare
|
||||
for ($c = 0; $c < sizeof($campi); ++$c) {
|
||||
if (preg_match('/'.$term.'/i', $rs[$r][$campi[$c]])) {
|
||||
$text = $rs[$r][$campi[$c]];
|
||||
|
||||
// Evidenzio la parola cercata nei valori dei campi
|
||||
preg_match('/'.$term.'/i', $rs[$r][$campi[$c]], $matches);
|
||||
|
||||
for ($m = 0; $m < sizeof($matches); ++$m) {
|
||||
$text = str_replace($matches[$m], "<span class='highlight'>".$matches[$m].'</span>', $text);
|
||||
}
|
||||
|
||||
$result['labels'][] = $campi_text[$c].': '.$text.'<br/>';
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiunta nome anagrafica come ultimo campo
|
||||
if (sizeof($ragioni_sociali) > 1) {
|
||||
$result['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].'<br/>';
|
||||
}
|
||||
|
||||
$results[] = $result;
|
||||
}
|
||||
}
|
@ -1,8 +1,9 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
switch ($resource) {
|
||||
case 'clienti':
|
||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||
//$citta_cliente = ", IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))";
|
||||
|
||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale $citta_cliente) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||
@ -23,12 +24,10 @@ switch ($resource) {
|
||||
}
|
||||
|
||||
$custom['idtipointervento'] = 'idtipointervento_default';
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'fornitori':
|
||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||
|
||||
foreach ($elements as $element) {
|
||||
@ -47,11 +46,10 @@ switch ($resource) {
|
||||
}
|
||||
|
||||
$custom['idtipointervento'] = 'idtipointervento_default';
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'agenti':
|
||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||
|
||||
foreach ($elements as $element) {
|
||||
@ -69,7 +67,7 @@ switch ($resource) {
|
||||
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
|
||||
}
|
||||
|
||||
$results = completeResults($query, $where, $filter, $search, $custom);
|
||||
$results = AJAX::completeResults($query, $where, $filter, $search, $custom);
|
||||
|
||||
// Evidenzia l'agente di default
|
||||
if ($superselect['idanagrafica']) {
|
||||
@ -84,11 +82,9 @@ switch ($resource) {
|
||||
if ($pos !== false) {
|
||||
$results[$pos]['_bgcolor_'] = '#ff0';
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'tecnici':
|
||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||
|
||||
foreach ($elements as $element) {
|
||||
@ -107,12 +103,10 @@ switch ($resource) {
|
||||
}
|
||||
|
||||
// $custom['idtipointervento'] = 'idtipointervento_default';
|
||||
}
|
||||
break;
|
||||
|
||||
// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
|
||||
case 'anagrafiche':
|
||||
if (Modules::get('Anagrafiche')['permessi'] != '-') {
|
||||
$query = "SELECT CONCAT(an_tipianagrafiche.idtipoanagrafica, '-', an_anagrafiche.idanagrafica) AS id, CONCAT_WS('', ragione_sociale, ' (', citta, ' ', provincia, ')') AS descrizione idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
|
||||
|
||||
foreach ($elements as $element) {
|
||||
@ -130,11 +124,10 @@ switch ($resource) {
|
||||
}
|
||||
|
||||
// $custom['idtipointervento'] = 'idtipointervento_default';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'sedi':
|
||||
if (Modules::get('Anagrafiche')['permessi'] != '-' && isset($superselect['idanagrafica'])) {
|
||||
if (isset($superselect['idanagrafica'])) {
|
||||
$query = "SELECT * FROM (SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| ORDER BY id";
|
||||
|
||||
foreach ($elements as $element) {
|
||||
@ -151,7 +144,7 @@ switch ($resource) {
|
||||
break;
|
||||
|
||||
case 'referenti':
|
||||
if (Modules::get('Anagrafiche')['permessi'] != '-' && isset($superselect['idanagrafica'])) {
|
||||
if (isset($superselect['idanagrafica'])) {
|
||||
$query = 'SELECT id, nome AS descrizione FROM an_referenti |where| ORDER BY id';
|
||||
|
||||
foreach ($elements as $element) {
|
||||
|
101
modules/articoli/ajax/complete.php
Normal file
101
modules/articoli/ajax/complete.php
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
$idarticolo = get('idarticolo');
|
||||
|
||||
switch ($resource) {
|
||||
// Legge gli ultimi prezzi di vendita di un determinato cliente e un determinato articolo e li visualizza per suggerire il prezzo di vendita
|
||||
case 'getprezzi':
|
||||
$idanagrafica = get('idanagrafica');
|
||||
$ids = ['""'];
|
||||
|
||||
echo '<small>';
|
||||
if (!empty($idarticolo)) {
|
||||
// Ultime 5 vendite al cliente
|
||||
$fatture = $dbo->fetchArray('SELECT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo="'.$idarticolo."\" AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') AND idanagrafica=\"".$idanagrafica.'") LIMIT 0,5');
|
||||
|
||||
if (sizeof($fatture) > 0) {
|
||||
echo "<br/><table cellspacing='0' class='table-striped' >\n";
|
||||
echo "<tr><th width='150'>Documento</th>\n";
|
||||
echo "<th width='50'>Data</th>\n";
|
||||
echo "<th width='80' class='text-right' >Totale</th></tr>\n";
|
||||
|
||||
for ($i = 0; $i < sizeof($fatture); ++$i) {
|
||||
($fatture[$i]['n2_fattura'] != '') ? $n_fattura = $fatture[$i]['n2_fattura'] : $n_fattura = $fatture[$i]['n_fattura'];
|
||||
|
||||
$id_module = Modules::get('Fatture di vendita')['id'];
|
||||
echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fattura num. ".$n_fattura."</a></td>\n";
|
||||
|
||||
echo "<td class='table_cell text-left'>".Translator::dateToLocale($fatture[$i]['data_fattura'])."</td>\n";
|
||||
echo "<td class='table_cell text-right'>".Translator::numberToLocale($fatture[$i]['costo_unitario'])." €</td></tr>\n";
|
||||
array_push($ids, '"'.$fatture[$i]['iddocumento'].'"');
|
||||
}
|
||||
echo "</table>\n";
|
||||
} else {
|
||||
echo '<br/>'.tr('Nessuna vendita di questo articolo al cliente selezionato')."...<br/>\n";
|
||||
}
|
||||
}
|
||||
echo '</small>';
|
||||
break;
|
||||
|
||||
// Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita
|
||||
case 'getprezzivendita':
|
||||
echo '<small>';
|
||||
// Ultime 5 vendite totali
|
||||
$fatture = $dbo->fetchArray("SELECT DISTINCT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo='".$idarticolo."' AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') ) ORDER BY data_fattura DESC, n_fattura DESC LIMIT 0,5");
|
||||
|
||||
if (sizeof($fatture) > 0) {
|
||||
echo "<br/><table cellspacing='0' class='table-striped' >\n";
|
||||
echo "<tr><th width='150'>Documento</th>\n";
|
||||
echo "<th width='50'>Data</th>\n";
|
||||
echo "<th width='80' class='text-right' >Totale</th></tr>\n";
|
||||
|
||||
for ($i = 0; $i < sizeof($fatture); ++$i) {
|
||||
($fatture[$i]['n2_fattura'] != '') ? $n_fattura = $fatture[$i]['n2_fattura'] : $n_fattura = $fatture[$i]['n_fattura'];
|
||||
|
||||
$id_module = Modules::get('Fatture di vendita')['id'];
|
||||
echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fattura num. ".$n_fattura."</a></td>\n";
|
||||
|
||||
echo "<td class='table_cell text-left'>".Translator::dateToLocale($fatture[$i]['data_fattura'])."</td>\n";
|
||||
echo "<td class='table_cell text-right'>".Translator::numberToLocale($fatture[$i]['costo_unitario'])." €</td></tr>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
} else {
|
||||
echo '<br/>'.tr('Questo articolo non è mai stato venduto')."...<br/>\n";
|
||||
}
|
||||
echo '</small>';
|
||||
echo '<br/>';
|
||||
|
||||
break;
|
||||
|
||||
// Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita
|
||||
case 'getprezziacquisto':
|
||||
echo '<small>';
|
||||
// Ultime 5 vendite totali
|
||||
$fatture = $dbo->fetchArray("SELECT DISTINCT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo='".$idarticolo."' AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='uscita') ) ORDER BY data_fattura DESC, n_fattura DESC LIMIT 0,5");
|
||||
|
||||
if (sizeof($fatture) > 0) {
|
||||
echo "<br/><table cellspacing='0' class='table-striped' >\n";
|
||||
echo "<tr><th width='150'>Documento</th>\n";
|
||||
echo "<th width='50'>Data</th>\n";
|
||||
echo "<th width='80' class='text-right'>Totale</th></tr>\n";
|
||||
|
||||
for ($i = 0; $i < sizeof($fatture); ++$i) {
|
||||
($fatture[$i]['n2_fattura'] != '') ? $n_fattura = $fatture[$i]['n2_fattura'] : $n_fattura = $fatture[$i]['n_fattura'];
|
||||
|
||||
$id_module = Modules::get('Fatture di acquisto')['id'];
|
||||
echo "<tr><td class='first_cell text-left'><a href='".ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fattura num. ".$n_fattura."</a></td>\n";
|
||||
|
||||
echo "<td class='table_cell text-left'>".Translator::dateToLocale($fatture[$i]['data_fattura'])."</td>\n";
|
||||
echo "<td class='table_cell text-right'>".Translator::numberToLocale($fatture[$i]['costo_unitario'])." €</td></tr>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
} else {
|
||||
echo '<br/>'.tr('Questo articolo non è mai stato acquistato')."...<br/>\n";
|
||||
}
|
||||
echo '</small>';
|
||||
echo '<br/>';
|
||||
|
||||
break;
|
||||
}
|
@ -85,21 +85,21 @@ echo '
|
||||
echo '
|
||||
<div class="row" id="prezzi_articolo">
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (cliente)').'
|
||||
</button>
|
||||
<div id="prezzi" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (acquisto)').'
|
||||
</button>
|
||||
<div id="prezziacquisto" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (vendita)').'
|
||||
</button>
|
||||
<div id="prezzivendita" class="hide"></div>
|
||||
|
@ -106,21 +106,21 @@ echo '
|
||||
echo '
|
||||
<div class="row" id="prezzi_articolo">
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (cliente)').'
|
||||
</button>
|
||||
<div id="prezzi" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (acquisto)').'
|
||||
</button>
|
||||
<div id="prezziacquisto" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (vendita)').'
|
||||
</button>
|
||||
<div id="prezzivendita" class="hide"></div>
|
||||
|
@ -130,21 +130,21 @@ echo '
|
||||
echo '
|
||||
<div class="row" id="prezzi_articolo">
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (cliente)').'
|
||||
</button>
|
||||
<div id="prezzi" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (acquisto)').'
|
||||
</button>
|
||||
<div id="prezziacquisto" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (vendita)').'
|
||||
</button>
|
||||
<div id="prezzivendita" class="hide"></div>
|
||||
|
@ -39,7 +39,7 @@ include_once __DIR__.'/../../core.php';
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted=0 ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "onchange=\"load_preventivi( this.value ); load_contratti( this.value ); $('#idsede').load( '<?php echo $rootdir ?>/ajax_autocomplete.php?module=Anagrafiche&op=get_sedi_select&idanagrafica='+$('#idanagrafica option:selected').val() ); load_impianti( $('#idanagrafica option:selected').val(), $('#idsede option:selected').val() );\"", "ajax-source": "clienti" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted=0 ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "onchange=\"load_preventivi( this.value ); load_contratti( this.value ); $('#idsede').load( '<?php echo $rootdir ?>/ajax_complete.php?module=Anagrafiche&op=get_sedi_select&idanagrafica='+$('#idanagrafica option:selected').val() ); load_impianti( $('#idanagrafica option:selected').val(), $('#idsede option:selected').val() );\"", "ajax-source": "clienti" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -94,21 +94,21 @@ echo '
|
||||
echo '
|
||||
<div class="row" id="prezzi_articolo">
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (cliente)').'
|
||||
</button>
|
||||
<div id="prezzi" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (acquisto)').'
|
||||
</button>
|
||||
<div id="prezziacquisto" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_autocomplete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (vendita)').'
|
||||
</button>
|
||||
<div id="prezzivendita" class="hide"></div>
|
||||
|
133
src/AJAX.php
133
src/AJAX.php
@ -19,22 +19,33 @@ class AJAX
|
||||
return \Whoops\Util\Misc::isAjaxRequest() && filter('ajax') !== null;
|
||||
}
|
||||
|
||||
public static function getSelectValues($resource, $elements = [], $search = null)
|
||||
public static function select($resource, $elements = [], $search = null)
|
||||
{
|
||||
if (!isset($elements)) {
|
||||
$elements = [];
|
||||
}
|
||||
$elements = (!is_array($elements)) ? explode(',', $elements) : $elements;
|
||||
|
||||
$modules = Modules::getAvailableModules();
|
||||
|
||||
// Individuazione dei select esistenti
|
||||
$customs = glob(DOCROOT.'/modules/*/ajax/select.php');
|
||||
$dirs = array_column($modules, 'directory');
|
||||
$pieces = array_chunk($dirs, 5);
|
||||
|
||||
$customs = [];
|
||||
foreach ($pieces as $piece) {
|
||||
$files = glob(DOCROOT.'/modules/{'.implode(',', $piece).'}/ajax/select.php', GLOB_BRACE);
|
||||
$customs = array_merge($customs, $files);
|
||||
}
|
||||
|
||||
// File di gestione predefinita
|
||||
array_unshift($customs, DOCROOT.'/ajax_select.php');
|
||||
|
||||
foreach ($customs as $custom) {
|
||||
$temp = str_replace('/ajax/', '/custom/ajax/', $custom);
|
||||
$file = file_exists($temp) ? $file : $custom;
|
||||
$file = file_exists($temp) ? $temp : $custom;
|
||||
|
||||
$results = self::getFileValues($file, $resource, $elements, $search);
|
||||
$results = self::getSelectResults($file, $resource, $elements, $search);
|
||||
if (isset($results)) {
|
||||
break;
|
||||
}
|
||||
@ -43,7 +54,7 @@ class AJAX
|
||||
return $results;
|
||||
}
|
||||
|
||||
private static function completeResults($query, $where, $filter = [], $search = [], $custom = [])
|
||||
public static function completeResults($query, $where, $filter = [], $search = [], $custom = [])
|
||||
{
|
||||
if (str_contains($query, '|filter|')) {
|
||||
$query = str_replace('|filter|', !empty($filter) ? 'WHERE '.implode(' OR ', $filter) : '', $query);
|
||||
@ -73,7 +84,7 @@ class AJAX
|
||||
return $results;
|
||||
}
|
||||
|
||||
private static function getFileValues($file, $resource, $elements = [], $search = null)
|
||||
private static function getSelectResults($file, $resource, $elements = [], $search = null)
|
||||
{
|
||||
$superselect = self::getSelectInfo();
|
||||
|
||||
@ -86,6 +97,10 @@ class AJAX
|
||||
'text' => 'descrizione',
|
||||
];
|
||||
|
||||
// Database
|
||||
$database = Database::getConnection();
|
||||
$dbo = $database;
|
||||
|
||||
require $file;
|
||||
|
||||
if (!isset($results) && !empty($query)) {
|
||||
@ -99,4 +114,110 @@ class AJAX
|
||||
{
|
||||
return !empty($_SESSION['superselect']) ? $_SESSION['superselect'] : [];
|
||||
}
|
||||
|
||||
public static function search($term)
|
||||
{
|
||||
if (strlen($term) < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
$modules = Modules::getAvailableModules();
|
||||
|
||||
// Individuazione dei select esistenti
|
||||
$dirs = array_column($modules, 'directory');
|
||||
$pieces = array_chunk($dirs, 5);
|
||||
|
||||
$customs = [];
|
||||
foreach ($pieces as $piece) {
|
||||
$files = glob(DOCROOT.'/modules/{'.implode(',', $piece).'}/ajax/search.php', GLOB_BRACE);
|
||||
$customs = array_merge($customs, $files);
|
||||
}
|
||||
|
||||
// File di gestione predefinita
|
||||
array_unshift($customs, DOCROOT.'/ajax_search.php');
|
||||
|
||||
$results = [];
|
||||
foreach ($customs as $custom) {
|
||||
$temp = str_replace('/ajax/', '/custom/ajax/', $custom);
|
||||
$file = file_exists($temp) ? $temp : $custom;
|
||||
|
||||
$module_results = self::getSearchResults($file, $term);
|
||||
|
||||
$results = array_merge($results, $module_results);
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
private static function getSearchResults($file, $term)
|
||||
{
|
||||
// Database
|
||||
$database = Database::getConnection();
|
||||
$dbo = $database;
|
||||
|
||||
// Ricerca anagrafiche per ragione sociale per potere mostrare gli interventi, fatture,
|
||||
// ordini, ecc della persona ricercata
|
||||
$idanagrafiche = ['-1'];
|
||||
$ragioni_sociali = ['-1'];
|
||||
$rs = $dbo->fetchArray('SELECT idanagrafica, ragione_sociale FROM an_anagrafiche WHERE ragione_sociale LIKE "%'.$term.'%"');
|
||||
|
||||
for ($a = 0; $a < sizeof($rs); ++$a) {
|
||||
$idanagrafiche[] = $rs[$a]['idanagrafica'];
|
||||
$ragioni_sociali[$rs[$a]['idanagrafica']] = $rs[$a]['ragione_sociale'];
|
||||
}
|
||||
|
||||
$results = [];
|
||||
|
||||
require $file;
|
||||
|
||||
$results = (array) $results;
|
||||
foreach ($results as $key => $value) {
|
||||
$results[$key]['value'] = $key;
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
public static function complete($resource)
|
||||
{
|
||||
$modules = Modules::getAvailableModules();
|
||||
|
||||
// Individuazione dei select esistenti
|
||||
$dirs = array_column($modules, 'directory');
|
||||
$pieces = array_chunk($dirs, 5);
|
||||
|
||||
$customs = [];
|
||||
foreach ($pieces as $piece) {
|
||||
$files = glob(DOCROOT.'/modules/{'.implode(',', $piece).'}/ajax/complete.php', GLOB_BRACE);
|
||||
$customs = array_merge($customs, $files);
|
||||
}
|
||||
|
||||
// File di gestione predefinita
|
||||
array_unshift($customs, DOCROOT.'/ajax_complete.php');
|
||||
|
||||
foreach ($customs as $custom) {
|
||||
$temp = str_replace('/ajax/', '/custom/ajax/', $custom);
|
||||
$file = file_exists($temp) ? $temp : $custom;
|
||||
|
||||
$result = self::getCompleteResults($file, $resource);
|
||||
if (!empty($result)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private static function getCompleteResults($file, $resource)
|
||||
{
|
||||
// Database
|
||||
$database = Database::getConnection();
|
||||
$dbo = $database;
|
||||
|
||||
ob_start();
|
||||
require $file;
|
||||
$result = ob_get_clean();
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
@ -79,6 +79,24 @@ class Modules
|
||||
return self::$modules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce l'elenco dei moduli con permessi di accesso accordati.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getAvailableModules()
|
||||
{
|
||||
// Individuazione dei moduli con permesso di accesso
|
||||
$modules = self::getModules();
|
||||
foreach ($modules as $key => $module) {
|
||||
if ($module['permessi'] == '-') {
|
||||
unset($modules[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
return $modules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce le informazioni relative a un singolo modulo specificato.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user