diff --git a/ajax_autocomplete.php b/ajax_autocomplete.php
deleted file mode 100644
index db33e3903..000000000
--- a/ajax_autocomplete.php
+++ /dev/null
@@ -1,1196 +0,0 @@
-fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo htmlspecialchars_decode($rs[$i]['ragione_sociale'], ENT_QUOTES);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco città
- elseif ($op == 'getcitta') {
- $q = 'SELECT DISTINCT(citta) FROM an_anagrafiche WHERE 1=1 '.Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY citta';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo htmlspecialchars_decode($rs[$i]['citta'], ENT_QUOTES);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco province
- elseif ($op == 'getprovince') {
- $q = 'SELECT DISTINCT(provincia) FROM an_anagrafiche WHERE 1=1 '.Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY provincia';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['provincia']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco cap
- elseif ($op == 'getcap') {
- $q = 'SELECT DISTINCT(cap) FROM an_anagrafiche WHERE 1=1 '.Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY cap';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['cap']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco settori
- elseif ($op == 'getsettori') {
- $q = 'SELECT DISTINCT(settore) FROM an_anagrafiche WHERE 1=1 '.Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY settore';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['settore'], ENT_QUOTES);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco marche
- elseif ($op == 'getmarche') {
- $q = 'SELECT DISTINCT(marche) FROM an_anagrafiche WHERE 1=1 '.Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY marche';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['marche'], ENT_QUOTES);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco e-mail - uso la funzione nativa di php "trim" per rimuovere eventuali spazi dalle e-mail
- elseif ($op == 'getemail') {
- $idanagrafica = $get['idanagrafica'];
-
- if ($idanagrafica != '') {
- $WHERE_IDANAGRAFICA = 'AND idanagrafica = '.$idanagrafica;
- }
-
- // tutti i referenti per questo cliente
- $q = 'SELECT DISTINCT(email),idanagrafica,nome FROM an_referenti WHERE 1=1 '.$WHERE_IDANAGRAFICA.' ORDER BY idanagrafica';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- if (trim($rs[$i]['email']) != '') {
- echo html_entity_decode($rs[$i]['nome'].' <'.trim($rs[$i]['email']).'>');
- if (($i) < $n) {
- echo '|';
- }
- }
- }
-
- // --
-
- // tutti gli agenti
- $q = "SELECT DISTINCT(email),ragione_sociale,an_anagrafiche.idanagrafica FROM an_anagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE idtipoanagrafica=(SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Agente') ORDER BY idanagrafica";
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- if (trim($rs[$i]['email']) != '') {
- echo html_entity_decode($rs[$i]['nome'].' <'.trim($rs[$i]['email']).'>');
- if (($i) < $n) {
- echo '|';
- }
- }
- }
-
- // --
-
- // email azienda di questo cliente
- $q = 'SELECT DISTINCT(email),ragione_sociale,idanagrafica FROM an_anagrafiche WHERE 1=1 '.$WHERE_IDANAGRAFICA.' ORDER BY idanagrafica';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- if (trim($rs[$i]['email']) != '') {
- echo html_entity_decode($rs[$i]['ragione_sociale'].' <'.trim($rs[$i]['email']).'>');
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
- }
-
- // Elenco sedi
- elseif ($op == '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 '|';
- }
- }
- }
-
- // Elenco sedi con
- elseif ($op == '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 " - Nessuna - \n";
- echo "Sede legale \n";
-
- for ($i = 0; $i < $n; ++$i) {
- echo ''.$rs[$i]['descrizione']." \n";
- }
- } elseif ($op == 'get_default_value') {
- $idanagrafica = $get['idanagrafica'];
- $q = "SELECT idtipointervento_default FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."' ".Modules::getAdditionalsQuery('Anagrafiche').'';
- $rs = $dbo->fetchArray($q);
-
- echo html_entity_decode($rs[0]['idtipointervento_default'], ENT_QUOTES);
- }
-
- break;
-
- case 'Articoli':
- // Elenco categorie
- if ($op == 'getcategorie') {
- $q = 'SELECT DISTINCT(categoria) FROM mg_articoli WHERE 1=1 '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY categoria';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['categoria']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco subcategorie
- elseif ($op == 'getsubcategorie') {
- $q = 'SELECT DISTINCT(subcategoria) FROM mg_articoli WHERE 1=1 '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY subcategoria';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['subcategoria']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco descrizione
- elseif ($op == 'getdescrizione') {
- $q = 'SELECT DISTINCT(descrizione) FROM mg_articoli WHERE 1=1 '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY descrizione';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['descrizione']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco codici
- elseif ($op == 'getcodice') {
- $q = 'SELECT DISTINCT(codice) FROM mg_articoli WHERE 1=1 '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY codice';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['codice']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
-
- // Elenco lotti in base all'articolo
- elseif ($op == 'getlotti') {
- $idarticolo = $get['idarticolo'];
- $q = 'SELECT DISTINCT(lotto) FROM mg_prodotti WHERE id_articolo="'.$idarticolo.'" '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY lotto ASC';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
-
- echo "- Seleziona un lotto - \n";
-
- for ($i = 0; $i < $n; ++$i) {
- $dir = 'entrata';
-
- $qs = 'SELECT COUNT(serial) AS num_seriali FROM mg_prodotti WHERE id_articolo='.prepare($idarticolo).' AND lotto='.prepare($rs[$i]['lotto']).' '.
- 'AND (serial NOT IN(SELECT serial FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id WHERE lotto='.prepare($rs[$i]['lotto']).' AND serial=mg_prodotti.serial AND dir = '.prepare($dir).') '.
- 'AND serial NOT IN(SELECT serial FROM or_righe_ordini INNER JOIN or_ordini ON or_righe_ordini.idordine = or_ordini.id INNER JOIN or_tipiordine ON or_ordini.idtipoordine = or_tipiordine.id WHERE lotto='.prepare($rs[$i]['lotto']).' AND serial=mg_prodotti.serial AND dir = '.prepare($dir).') '.
- 'AND serial NOT IN(SELECT serial FROM dt_righe_ddt INNER JOIN dt_ddt ON dt_righe_ddt.idddt = dt_ddt.id INNER JOIN dt_tipiddt ON dt_ddt.idtipoddt = dt_tipiddt.id WHERE lotto='.prepare($rs[$i]['lotto']).' AND serial=mg_prodotti.serial AND dir = '.prepare($dir).') '.
- 'AND serial NOT IN(SELECT serial FROM mg_articoli_interventi WHERE lotto='.prepare($rs[$i]['lotto']).' AND serial=mg_prodotti.serial) ) '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY serial ASC';
-
- $rsn = $dbo->fetchArray($qs);
-
- echo ''.htmlentities($rs[$i]['lotto']).' ('.htmlentities($rsn[0]['num_seriali']).") \n";
-
- // echo ''.htmlentities($rs[$i]['lotto'])." \n";
- }
- }
-
- // Elenco lotti in base all'articolo e lotto
- elseif ($op == 'getserial') {
- $idarticolo = $get['idarticolo'];
- $lotto = $get['lotto'];
-
- if (($get['serial_start'] != '') and ($get['serial_end'] != '')) {
- $serial_start = $get['serial_start'];
- $serial_end = $get['serial_end'];
- $additional_where_serial = ' AND CAST(serial AS UNSIGNED) >= CAST('.prepare($$serial_start).' AS UNSIGNED) AND CAST(serial AS UNSIGNED) <= CAST('.prepare($serial_end).' AS UNSIGNED) ';
- } elseif ($get['serial_start'] != '') {
- $serial_start = $get['serial_start'];
- $additional_where_serial = ' AND CAST(serial AS UNSIGNED) > CAST('.prepare($$serial_start).' AS UNSIGNED)';
- } elseif ($get['serial_end'] != '') {
- $serial_end = $get['serial_end'];
- $additional_where_serial = ' AND CAST(serial AS UNSIGNED) < CAST('.prepare($serial_end).' AS UNSIGNED)';
- } else {
- $additional_where_serial = '';
- }
-
- if ($dir == 'entrata') {
- $q = 'SELECT DISTINCT(serial) FROM mg_prodotti WHERE id_articolo='.prepare($idarticolo).' AND lotto='.prepare($lotto).
- ' AND (serial NOT IN(SELECT serial FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial AND dir = '.prepare($dir).')'.
- ' AND serial NOT IN(SELECT serial FROM or_righe_ordini INNER JOIN or_ordini ON or_righe_ordini.idordine = or_ordini.id INNER JOIN or_tipiordine ON or_ordini.idtipoordine = or_tipiordine.id WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial AND dir = '.prepare($dir).') '.
- ' AND serial NOT IN(SELECT serial FROM dt_righe_ddt INNER JOIN dt_ddt ON dt_righe_ddt.idddt = dt_ddt.id INNER JOIN dt_tipiddt ON dt_ddt.idtipoddt = dt_tipiddt.id WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial AND dir = '.prepare($dir).') '.
- 'AND serial NOT IN(SELECT serial FROM mg_articoli_interventi WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial) '.$additional_where_serial.' ) '.
- Modules::getAdditionalsQuery('Magazzino').' ORDER BY serial ASC';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- } else {
- $q = 'SELECT DISTINCT(serial) FROM mg_prodotti WHERE id_articolo='.prepare($idarticolo).' AND lotto='.prepare($lotto).' AND (serial NOT IN(SELECT serial FROM co_righe_documenti WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial ) AND serial NOT IN(SELECT serial FROM or_righe_ordini WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial) AND serial NOT IN(SELECT serial FROM dt_righe_ddt WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial) AND serial NOT IN(SELECT serial FROM mg_articoli_interventi WHERE lotto='.prepare($lotto).' AND serial=mg_prodotti.serial) '.$additional_where_serial.' ) '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY serial ASC';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- }
-
- if (($get['serial_start'] != '') or ($get['serial_end'] != '')) {
- } elseif ($get['lotto'] == '') {
- echo "- Seleziona prima un lotto - \n";
- } else {
- echo "- Seleziona un serial number - \n";
- }
-
- for ($i = 0; $i < $n; ++$i) {
- echo ''.htmlentities($rs[$i]['serial'])." \n";
- }
- }
-
- // Elenco lotti in base all'articolo, lotto e serial
- elseif ($op == 'getaltro') {
- $idarticolo = $get['idarticolo'];
- $lotto = $get['lotto'];
- $serial = $get['serial'];
- $q = 'SELECT DISTINCT(altro) FROM mg_prodotti WHERE id_articolo="'.$idarticolo.'" AND lotto="'.$lotto.'" AND serial="'.$serial.'" AND (altro NOT IN(SELECT altro FROM co_righe_documenti WHERE lotto="'.$lotto.'" AND serial="'.$serial.'" AND altro=mg_prodotti.altro) AND altro NOT IN(SELECT altro FROM or_righe_ordini WHERE lotto="'.$lotto.'" AND serial="'.$serial.'" AND altro=mg_prodotti.altro) AND altro NOT IN(SELECT altro FROM dt_righe_ddt WHERE lotto="'.$lotto.'" AND serial="'.$serial.'" AND altro=mg_prodotti.altro) AND altro NOT IN(SELECT altro FROM mg_articoli_interventi WHERE lotto="'.$lotto.'" AND serial="'.$serial.'" AND altro=mg_prodotti.altro)) '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY altro ASC';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
-
- echo "- Seleziona un altro codice - \n";
-
- for ($i = 0; $i < $n; ++$i) {
- echo ''.htmlentities($rs[$i]['altro'])." \n";
- }
- }
-
- // Legge gli ultimi prezzi di vendita di un determinato cliente e un determinato articolo e li visualizza per suggerire il prezzo di vendita
- elseif ($op == 'getprezzi') {
- $idarticolo = $get['idarticolo'];
- $idanagrafica = $get['idanagrafica'];
- $ids = ['""'];
-
- echo '';
- 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 "\n";
- echo "Documento \n";
- echo "Data \n";
- echo "Totale \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 "Fattura num. ".$n_fattura." \n";
-
- echo "".Translator::dateToLocale($fatture[$i]['data_fattura'])." \n";
- echo "".Translator::numberToLocale($fatture[$i]['costo_unitario'])." € \n";
- array_push($ids, '"'.$fatture[$i]['iddocumento'].'"');
- }
- echo "
\n";
- } else {
- echo ' '.tr('Nessuna vendita di questo articolo al cliente selezionato')."... \n";
- }
- }
- echo ' ';
- }
-
- // Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita
- elseif ($op == 'getprezzivendita') {
- $idarticolo = $get['idarticolo'];
-
- echo '';
- // 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 "\n";
- echo "Documento \n";
- echo "Data \n";
- echo "Totale \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 "Fattura num. ".$n_fattura." \n";
-
- echo "".Translator::dateToLocale($fatture[$i]['data_fattura'])." \n";
- echo "".Translator::numberToLocale($fatture[$i]['costo_unitario'])." € \n";
- }
- echo "
\n";
- } else {
- echo ' '.tr('Questo articolo non è mai stato venduto')."... \n";
- }
- echo ' ';
- echo ' ';
- }
-
- // Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita
- elseif ($op == 'getprezziacquisto') {
- $idarticolo = $get['idarticolo'];
-
- echo '';
- // 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 "\n";
- echo "Documento \n";
- echo "Data \n";
- echo "Totale \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 "Fattura num. ".$n_fattura." \n";
-
- echo "".Translator::dateToLocale($fatture[$i]['data_fattura'])." \n";
- echo "".Translator::numberToLocale($fatture[$i]['costo_unitario'])." € \n";
- }
- echo "
\n";
- } else {
- echo ' '.tr('Questo articolo non è mai stato acquistato')."... \n";
- }
- echo ' ';
- echo ' ';
- }
- break;
-
- case 'Interventi':
- // Elenco nomi
- if ($op == 'get_ragione_sociale') {
- $ragione_sociale = $get['ragione_sociale'];
- $q = "SELECT ragione_sociale FROM an_anagrafiche WHERE ragione_sociale LIKE '%$ragione_sociale%' ".Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY ragione_sociale';
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo htmlspecialchars_decode($rs[$i]['ragione_sociale'], ENT_QUOTES);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
- break;
-
- case 'Preventivi':
- // Elenco nomi preventivi
- if ($op == 'get_select_preventivi') {
- $idanagrafica = $get['idanagrafica'];
- $q = "SELECT co_preventivi.id AS idpreventivo, an_anagrafiche.idanagrafica, nome, idtipointervento FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica WHERE an_anagrafiche.idanagrafica='$idanagrafica' AND idstato NOT IN (SELECT `id` FROM co_statipreventivi WHERE descrizione='Bozza' OR descrizione='Rifiutato' OR descrizione='Pagato') ".Modules::getAdditionalsQuery('Preventivi');
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['idpreventivo'].':'.$rs[$i]['nome'].':'.$rs[$i]['idtipointervento']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
- break;
-
- case 'Contratti':
- // Elenco nomi preventivi
- if ($op == 'get_select_contratti') {
- $idanagrafica = $get['idanagrafica'];
- $q = "SELECT co_contratti.id AS idcontratto, an_anagrafiche.idanagrafica, nome FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE an_anagrafiche.idanagrafica='$idanagrafica' AND idstato NOT IN (SELECT `id` FROM co_staticontratti WHERE fatturabile = 1) ".Modules::getAdditionalsQuery('Contratti');
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- for ($i = 0; $i < $n; ++$i) {
- echo html_entity_decode($rs[$i]['idcontratto'].':'.$rs[$i]['nome']);
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
- break;
-
- case 'Fatture':
- // Elenco fatture non pagate per anagrafica
- if ($op == 'get_fatture') {
- $idanagrafica = $get['idanagrafica'];
- $q = "SELECT data, co_documenti.id AS iddocumento, co_tipidocumento.descrizione AS tipo_doc, dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.idanagrafica='$idanagrafica' AND (idstatodocumento=(SELECT `id` FROM co_statidocumento WHERE descrizione='Emessa') OR (SELECT da_pagare-pagato AS differenza FROM co_scadenziario WHERE NOT iddocumento=co_documenti.id=0) )";
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- if ($n > 0) {
- echo "\n";
- for ($i = 0; $i < $n; ++$i) {
- echo "'.html_entity_decode($rs[$i]['tipo_doc']).' del '.Translator::dateToLocale($rs[$i]['data'])." \n";
- }
- echo " \n";
- } else {
- echo tr('Nessuna fattura trovata').'...';
- }
- }
-
- // Elenco causali prima nota
- elseif ($op == 'get_causali') {
- $descrizione = $get['descrizione'];
- $q = 'SELECT DISTINCT descrizione FROM co_movimenti WHERE descrizione LIKE "%'.$descrizione."%\" AND (iddocumento='' OR iddocumento IS NULL) AND primanota=1 ".Modules::getAdditionalsQuery('Prima nota');
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- if ($n > 0) {
- for ($i = 0; $i < $n; ++$i) {
- echo $rs[$i]['descrizione'];
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
- }
- break;
-
- case 'Ddt':
- // Elenco ddt del fornitore scelto
- if ($op == 'get_ddt') {
- $idfornitore = $get['idfornitore'];
- $q = "SELECT data, dt_ddt.id AS idddt, numero, dt_tipiddt.descrizione AS tipo_doc, dir FROM dt_ddt INNER JOIN dt_tipiddt ON dt_ddt.idtipoddt=dt_tipiddt.id WHERE dt_ddt.idanagrafica='$idfornitore'";
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
- if ($n > 0) {
- echo "\n";
- echo "- Seleziona un ddt - \n";
- for ($i = 0; $i < $n; ++$i) {
- echo "".html_entity_decode($rs[$i]['tipo_doc']).' '.$rs[$i]['numero'].' del '.Translator::dateToLocale($rs[$i]['data'])." \n";
- }
- echo " \n";
- } else {
- echo tr('Nessun ddt trovato')."...\n";
- }
- }
- break;
-
- case 'MyImpianti':
- // Elenco ddt del fornitore scelto
- if ($op == 'get_impianti') {
- $idanagrafica = $get['idanagrafica'];
- $idsede = $get['idsede'];
-
- if ($idsede != '' && $idsede != '-1' && $idsede != 'undefined') {
- $q = 'SELECT *, (SELECT nomesede FROM an_sedi WHERE id=my_impianti.idsede) AS nomesede FROM my_impianti WHERE idanagrafica="'.$idanagrafica.'" AND idsede="'.$idsede.'" ORDER BY idsede';
- } else {
- $q = 'SELECT *, (SELECT nomesede FROM an_sedi WHERE id=my_impianti.idsede) AS nomesede FROM my_impianti WHERE idanagrafica="'.$idanagrafica.'" ORDER BY idsede';
- }
-
- $rs = $dbo->fetchArray($q);
- $n = sizeof($rs);
-
- for ($i = 0; $i < $n; ++$i) {
- echo $rs[$i]['id'].':'.$rs[$i]['matricola'].' - '.$rs[$i]['nome']."\n";
-
- if (($i + 1) < $n) {
- echo '|';
- }
- }
- }
- break;
-}
-
-/*
- == Super search ==
- Ricerca di un termine su tutti i moduli.
- Il risultato è in json
-*/
-if ($op == 'supersearch') {
- $term = $get['term'];
- $term = str_replace('/', '\\/', $term);
- $i = 0;
-
- if (strlen($term) < 2) {
- echo 'null';
- exit;
- }
-
- /*
- Anagrafiche
- */
- if (Modules::getPermission('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[$r + $i]['link'] = $rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$rs[$r]['idanagrafica'];
- $result[$r + $i]['title'] = $rs[$r]['ragione_sociale'];
- $result[$r + $i]['category'] = 'Anagrafiche';
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
- }
-
- $i += $r;
- }
- }
-
- // 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'];
- }
-
- /*
- Referenti anagrafiche
- */
- if (Modules::getPermission('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) {
- // 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]['idanagrafica'].'#tabs-2';
- $result[$r + $i]['title'] = $rs[$r]['nome'];
- $result[$r + $i]['category'] = 'Referenti';
- $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 + $i][$campi[$c]], $matches);
-
- for ($m = 0; $m < sizeof($matches); ++$m) {
- $text = str_replace($matches[$m], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $i += $r;
- }
- }
-
- /*
- 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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $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], "".$matches[$m].' ', $text);
- }
-
- $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
- }
- }
-
- // Aggiunta nome anagrafica come ultimo campo
- if (sizeof($ragioni_sociali) > 1) {
- $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
- }
- }
-
- $i += $r;
- }
- }
-
- // Contratti
- // Ordini
-
- $result = (array) $result;
- foreach ($result as $key => $value) {
- $result[$key]['value'] = $key;
- }
-
- echo json_encode($result);
-}
diff --git a/ajax_complete.php b/ajax_complete.php
new file mode 100644
index 000000000..fcac22f6b
--- /dev/null
+++ b/ajax_complete.php
@@ -0,0 +1,17 @@
+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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result[$r + $i]['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result[$r + $i]['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+ }
+
+ $i += $r;
+ }
+ }
+
+ $results = $result;
+}
diff --git a/ajax_select.php b/ajax_select.php
index 7301af012..605390f16 100644
--- a/ajax_select.php
+++ b/ajax_select.php
@@ -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');
diff --git a/docs/Struttura.md b/docs/Struttura.md
index c61191591..5350d40af 100644
--- a/docs/Struttura.md
+++ b/docs/Struttura.md
@@ -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.
diff --git a/lib/functions.js b/lib/functions.js
index 7f1f25b39..563406b6c 100644
--- a/lib/functions.js
+++ b/lib/functions.js
@@ -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
diff --git a/locale/catalog.pot b/locale/catalog.pot
index cc7c1ed52..8ca7d2716 100644
--- a/locale/catalog.pot
+++ b/locale/catalog.pot
@@ -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 ""
diff --git a/locale/en/en.po b/locale/en/en.po
index 41ac4ee5f..37cf3ef48 100644
--- a/locale/en/en.po
+++ b/locale/en/en.po
@@ -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 ""
diff --git a/locale/it/it.po b/locale/it/it.po
index 2358f648b..1f6e138c3 100644
--- a/locale/it/it.po
+++ b/locale/it/it.po
@@ -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"
diff --git a/modules/anagrafiche/ajax/complete.php b/modules/anagrafiche/ajax/complete.php
new file mode 100644
index 000000000..5ff352930
--- /dev/null
+++ b/modules/anagrafiche/ajax/complete.php
@@ -0,0 +1,34 @@
+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
+ 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 " - Nessuna - \n";
+ echo "Sede legale \n";
+
+ for ($i = 0; $i < $n; ++$i) {
+ echo ''.$rs[$i]['descrizione']." \n";
+ }
+ break;
+}
diff --git a/modules/anagrafiche/ajax/search.php b/modules/anagrafiche/ajax/search.php
new file mode 100644
index 000000000..345d2a2cf
--- /dev/null
+++ b/modules/anagrafiche/ajax/search.php
@@ -0,0 +1,99 @@
+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], "".$matches[$m].' ', $text);
+ }
+
+ $result['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ $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], "".$matches[$m].' ', $text);
+ }
+
+ $result['labels'][] = $campi_text[$c].': '.$text.' ';
+ }
+ }
+
+ // Aggiunta nome anagrafica come ultimo campo
+ if (sizeof($ragioni_sociali) > 1) {
+ $result['labels'][] = 'Anagrafica: '.$ragioni_sociali[$rs[$r]['idanagrafica']].' ';
+ }
+
+ $results[] = $result;
+ }
+}
diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php
index dc9b1fd44..7e1e7a6b8 100644
--- a/modules/anagrafiche/ajax/select.php
+++ b/modules/anagrafiche/ajax/select.php
@@ -1,8 +1,9 @@
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) {
diff --git a/modules/articoli/ajax/complete.php b/modules/articoli/ajax/complete.php
new file mode 100644
index 000000000..736505fe1
--- /dev/null
+++ b/modules/articoli/ajax/complete.php
@@ -0,0 +1,101 @@
+';
+ 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 "
\n";
+ echo "Documento \n";
+ echo "Data \n";
+ echo "Totale \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 "Fattura num. ".$n_fattura." \n";
+
+ echo "".Translator::dateToLocale($fatture[$i]['data_fattura'])." \n";
+ echo "".Translator::numberToLocale($fatture[$i]['costo_unitario'])." € \n";
+ array_push($ids, '"'.$fatture[$i]['iddocumento'].'"');
+ }
+ echo "
\n";
+ } else {
+ echo ' '.tr('Nessuna vendita di questo articolo al cliente selezionato')."... \n";
+ }
+ }
+ echo '';
+ break;
+
+ // Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita
+ case 'getprezzivendita':
+ echo '';
+ // 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 "\n";
+ echo "Documento \n";
+ echo "Data \n";
+ echo "Totale \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 "Fattura num. ".$n_fattura." \n";
+
+ echo "".Translator::dateToLocale($fatture[$i]['data_fattura'])." \n";
+ echo "".Translator::numberToLocale($fatture[$i]['costo_unitario'])." € \n";
+ }
+ echo "
\n";
+ } else {
+ echo ' '.tr('Questo articolo non è mai stato venduto')."... \n";
+ }
+ echo ' ';
+ echo ' ';
+
+ break;
+
+ // Legge gli ultimi prezzi di vendita di un determinato articolo e li visualizza per suggerire il prezzo di vendita
+ case 'getprezziacquisto':
+ echo '';
+ // 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 "\n";
+ echo "Documento \n";
+ echo "Data \n";
+ echo "Totale \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 "Fattura num. ".$n_fattura." \n";
+
+ echo "".Translator::dateToLocale($fatture[$i]['data_fattura'])." \n";
+ echo "".Translator::numberToLocale($fatture[$i]['costo_unitario'])." € \n";
+ }
+ echo "
\n";
+ } else {
+ echo ' '.tr('Questo articolo non è mai stato acquistato')."... \n";
+ }
+ echo ' ';
+ echo ' ';
+
+ break;
+}
diff --git a/modules/ddt/add_articolo.php b/modules/ddt/add_articolo.php
index 889e04ee0..844f7205a 100644
--- a/modules/ddt/add_articolo.php
+++ b/modules/ddt/add_articolo.php
@@ -85,21 +85,21 @@ echo '
echo '
-
+
'.tr('Visualizza ultimi prezzi (cliente)').'
-
+
'.tr('Visualizza ultimi prezzi (acquisto)').'
-
+
'.tr('Visualizza ultimi prezzi (vendita)').'
diff --git a/modules/fatture/add_articolo.php b/modules/fatture/add_articolo.php
index dced8800a..4c8988c19 100644
--- a/modules/fatture/add_articolo.php
+++ b/modules/fatture/add_articolo.php
@@ -106,21 +106,21 @@ echo '
echo '
-
+
'.tr('Visualizza ultimi prezzi (cliente)').'
-
+
'.tr('Visualizza ultimi prezzi (acquisto)').'
-
+
'.tr('Visualizza ultimi prezzi (vendita)').'
diff --git a/modules/interventi/add_articolo.php b/modules/interventi/add_articolo.php
index 7d67982a8..0f9db8ff0 100644
--- a/modules/interventi/add_articolo.php
+++ b/modules/interventi/add_articolo.php
@@ -130,21 +130,21 @@ echo '
echo '
-
+
'.tr('Visualizza ultimi prezzi (cliente)').'
-
+
'.tr('Visualizza ultimi prezzi (acquisto)').'
-
+
'.tr('Visualizza ultimi prezzi (vendita)').'
diff --git a/modules/my_impianti/edit.php b/modules/my_impianti/edit.php
index df13351e4..57e85c634 100644
--- a/modules/my_impianti/edit.php
+++ b/modules/my_impianti/edit.php
@@ -39,7 +39,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "select", "label": "", "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( '/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": "", "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( '/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" ]}
diff --git a/modules/ordini/add_articolo.php b/modules/ordini/add_articolo.php
index 736bbb79b..f300445cc 100644
--- a/modules/ordini/add_articolo.php
+++ b/modules/ordini/add_articolo.php
@@ -94,21 +94,21 @@ echo '
echo '
-
+
'.tr('Visualizza ultimi prezzi (cliente)').'
-
+
'.tr('Visualizza ultimi prezzi (acquisto)').'
-
+
'.tr('Visualizza ultimi prezzi (vendita)').'
diff --git a/src/AJAX.php b/src/AJAX.php
index 0d9711b4d..888139c07 100644
--- a/src/AJAX.php
+++ b/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;
+ }
}
diff --git a/src/Modules.php b/src/Modules.php
index 6cbd40f0c..62c3efc32 100644
--- a/src/Modules.php
+++ b/src/Modules.php
@@ -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.
*