diff --git a/ajax_select.php b/ajax_select.php index 77a288aae..19d70d317 100644 --- a/ajax_select.php +++ b/ajax_select.php @@ -56,141 +56,135 @@ if (!function_exists('completeResults')) { switch ($op) { case 'clienti': - if ((Modules::get('Anagrafiche')['permessi'] != '-') or (Modules::getAdditionalsQuery('Anagrafiche'))) { - //$citta_cliente = ", IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))"; + //$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, idzona 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"; + $query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale $citta_cliente) AS descrizione, idtipointervento_default, idzona 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) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); - } - - if (empty($filter)) { - $where[] = "descrizione='Cliente'"; - $where[] = 'deleted=0'; - } - - if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - } - - $custom['idtipointervento'] = 'idtipointervento_default'; - $custom['idzona'] = 'idzona'; + foreach ($elements as $element) { + $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); } + if (empty($filter)) { + $where[] = "descrizione='Cliente'"; + $where[] = 'deleted=0'; + } + + if (!empty($search)) { + $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); + } + + $custom['idtipointervento'] = 'idtipointervento_default'; + $custom['idzona'] = 'idzona'; + break; case 'fornitori': - if ((Modules::get('Anagrafiche')['permessi'] != '-') or (Modules::getAdditionalsQuery('Anagrafiche'))) { - $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"; + $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) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); - } - - if (empty($filter)) { - $where[] = "descrizione='Fornitore'"; - $where[] = 'deleted=0'; - } - - if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - } - - $custom['idtipointervento'] = 'idtipointervento_default'; + foreach ($elements as $element) { + $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); } + + if (empty($filter)) { + $where[] = "descrizione='Fornitore'"; + $where[] = 'deleted=0'; + } + + if (!empty($search)) { + $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); + } + + $custom['idtipointervento'] = 'idtipointervento_default'; + break; case 'agenti': - if ((Modules::get('Anagrafiche')['permessi'] != '-') or (Modules::getAdditionalsQuery('Anagrafiche'))) { - $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"; + $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) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); - } - - if (empty($filter)) { - $where[] = "descrizione='Agente'"; - $where[] = 'deleted=0'; - } - - if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - } - - $results = completeResults($query, $where, $filter, $search, $custom); - - // Evidenzia l'agente di default - if ($superselect['idanagrafica']) { - $rsa = $dbo->fetchArray('SELECT idagente FROM an_anagrafiche WHERE idanagrafica='.prepare($superselect['idanagrafica'])); - $idagente_default = $rsa[0]['idagente']; - } else { - $idagente_default = 0; - } - - $ids = array_column($results, $id); - $pos = array_search($idagente_default, $ids); - if ($pos !== false) { - $results[$pos]['_bgcolor_'] = '#ff0'; - } + foreach ($elements as $element) { + $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); } + + if (empty($filter)) { + $where[] = "descrizione='Agente'"; + $where[] = 'deleted=0'; + } + + if (!empty($search)) { + $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); + } + + $results = completeResults($query, $where, $filter, $search, $custom); + + // Evidenzia l'agente di default + if ($superselect['idanagrafica']) { + $rsa = $dbo->fetchArray('SELECT idagente FROM an_anagrafiche WHERE idanagrafica='.prepare($superselect['idanagrafica'])); + $idagente_default = $rsa[0]['idagente']; + } else { + $idagente_default = 0; + } + + $ids = array_column($results, $id); + $pos = array_search($idagente_default, $ids); + if ($pos !== false) { + $results[$pos]['_bgcolor_'] = '#ff0'; + } + break; case 'tecnici': - if ((Modules::get('Anagrafiche')['permessi'] != '-') or (Modules::getAdditionalsQuery('Anagrafiche'))) { - $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"; + $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) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); - } - - if (empty($filter)) { - $where[] = "descrizione='Tecnico'"; - $where[] = 'deleted=0'; - } - - if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - } - - // $custom['idtipointervento'] = 'idtipointervento_default'; + foreach ($elements as $element) { + $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); } + + if (empty($filter)) { + $where[] = "descrizione='Tecnico'"; + $where[] = 'deleted=0'; + } + + if (!empty($search)) { + $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); + } + + // $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'] != '-') or (Modules::getAdditionalsQuery('Anagrafiche'))) { - $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"; + $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) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); - } - - if (empty($filter)) { - $where[] = 'deleted=0'; - } - - if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - } - - // $custom['idtipointervento'] = 'idtipointervento_default'; + foreach ($elements as $element) { + $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); } + + if (empty($filter)) { + $where[] = 'deleted=0'; + } + + if (!empty($search)) { + $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); + } + + // $custom['idtipointervento'] = 'idtipointervento_default'; + break; case 'sedi': - if (Modules::get('Anagrafiche')['permessi'] != '-' && isset($superselect['idanagrafica'])) { - $query = "SELECT * FROM (SELECT 0 AS id, 'Sede legale' AS descrizione, (SELECT an_anagrafiche.idzona FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica = ".prepare($superselect['idanagrafica']).") AS idzona UNION SELECT id, CONCAT_WS(' - ', nomesede, citta), idzona AS idzona FROM an_sedi |where|) AS tab |filter| ORDER BY id"; + if (isset($superselect['idanagrafica'])) { + $query = "SELECT * FROM (SELECT 0 AS id, 'Sede legale' AS descrizione, (SELECT an_anagrafiche.idzona FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica = ".prepare($superselect['idanagrafica']).") AS idzona UNION SELECT id, CONCAT_WS(' - ', nomesede, citta), idzona AS idzona FROM an_sedi |where|) AS tab |filter| ORDER BY id"; foreach ($elements as $element) { $filter[] = 'id='.prepare($element); @@ -202,13 +196,13 @@ switch ($op) { $search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%'); $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); } - - $custom['idzona'] = 'idzona'; + + $custom['idzona'] = 'idzona'; } 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) { @@ -292,85 +286,82 @@ switch ($op) { break; case 'conti': - if (Modules::get('Piano dei conti')['permessi'] != '-') { - $query = 'SELECT * FROM co_pianodeiconti2'; + $query = 'SELECT * FROM co_pianodeiconti2'; - $rs = $dbo->fetchArray($query); - foreach ($rs as $r) { - $results[] = ['text' => $r['numero'].' '.$r['descrizione'], 'children' => []]; + $rs = $dbo->fetchArray($query); + foreach ($rs as $r) { + $results[] = ['text' => $r['numero'].' '.$r['descrizione'], 'children' => []]; - $subquery = 'SELECT * FROM co_pianodeiconti3 |where|'; + $subquery = 'SELECT * FROM co_pianodeiconti3 |where|'; - $where = []; - $filter = []; - $search_fields = []; + $where = []; + $filter = []; + $search_fields = []; - foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); - } - if (!empty($filter)) { - $where[] = '('.implode(' OR ', $filter).')'; - } + foreach ($elements as $element) { + $filter[] = 'id='.prepare($element); + } + if (!empty($filter)) { + $where[] = '('.implode(' OR ', $filter).')'; + } - $where[] = 'idpianodeiconti2='.prepare($r['id']); + $where[] = 'idpianodeiconti2='.prepare($r['id']); - if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); - } - if (!empty($search_fields)) { - $where[] = '('.implode(' OR ', $search_fields).')'; - } + if (!empty($search)) { + $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + } + if (!empty($search_fields)) { + $where[] = '('.implode(' OR ', $search_fields).')'; + } - $wh = ''; - if (count($where) != 0) { - $wh = 'WHERE '.implode(' AND ', $where); - } - $subquery = str_replace('|where|', $wh, $subquery); + $wh = ''; + if (count($where) != 0) { + $wh = 'WHERE '.implode(' AND ', $where); + } + $subquery = str_replace('|where|', $wh, $subquery); - $rs2 = $dbo->fetchArray($subquery); - foreach ($rs2 as $r2) { - $results[count($results) - 1]['children'][] = ['id' => $r2['id'], 'text' => $r2['descrizione']]; - } + $rs2 = $dbo->fetchArray($subquery); + foreach ($rs2 as $r2) { + $results[count($results) - 1]['children'][] = ['id' => $r2['id'], 'text' => $r2['descrizione']]; } } + break; case 'conti-vendite': - if (Modules::get('Piano dei conti')['permessi'] != '-') { - $query = "SELECT co_pianodeiconti3.id, CONCAT_WS( ' ', co_pianodeiconti3.numero, co_pianodeiconti3.descrizione ) AS descrizione FROM co_pianodeiconti3 INNER JOIN (co_pianodeiconti2 INNER JOIN co_pianodeiconti1 ON co_pianodeiconti2.idpianodeiconti1=co_pianodeiconti1.id) ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where| ORDER BY co_pianodeiconti3.numero ASC"; + $query = "SELECT co_pianodeiconti3.id, CONCAT_WS( ' ', co_pianodeiconti3.numero, co_pianodeiconti3.descrizione ) AS descrizione FROM co_pianodeiconti3 INNER JOIN (co_pianodeiconti2 INNER JOIN co_pianodeiconti1 ON co_pianodeiconti2.idpianodeiconti1=co_pianodeiconti1.id) ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where| ORDER BY co_pianodeiconti3.numero ASC"; - foreach ($elements as $element) { - $filter[] = 'co_pianodeiconti3.id='.prepare($element); - } - - $where[] = "co_pianodeiconti1.descrizione='Economico'"; - $where[] = "co_pianodeiconti3.dir='entrata'"; - - if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); - } + foreach ($elements as $element) { + $filter[] = 'co_pianodeiconti3.id='.prepare($element); } + + $where[] = "co_pianodeiconti1.descrizione='Economico'"; + $where[] = "co_pianodeiconti3.dir='entrata'"; + + if (!empty($search)) { + $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + } + break; case 'conti-acquisti': - if (Modules::get('Piano dei conti')['permessi'] != '-') { - $query = "SELECT co_pianodeiconti3.id, CONCAT_WS( ' ', co_pianodeiconti3.numero, co_pianodeiconti3.descrizione ) AS descrizione FROM co_pianodeiconti3 INNER JOIN (co_pianodeiconti2 INNER JOIN co_pianodeiconti1 ON co_pianodeiconti2.idpianodeiconti1=co_pianodeiconti1.id) ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where| ORDER BY co_pianodeiconti3.numero ASC"; + $query = "SELECT co_pianodeiconti3.id, CONCAT_WS( ' ', co_pianodeiconti3.numero, co_pianodeiconti3.descrizione ) AS descrizione FROM co_pianodeiconti3 INNER JOIN (co_pianodeiconti2 INNER JOIN co_pianodeiconti1 ON co_pianodeiconti2.idpianodeiconti1=co_pianodeiconti1.id) ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id |where| ORDER BY co_pianodeiconti3.numero ASC"; - foreach ($elements as $element) { - $filter[] = 'co_pianodeiconti3.id='.prepare($element); - } - - $where[] = "co_pianodeiconti1.descrizione='Economico'"; - $where[] = "co_pianodeiconti3.dir='uscita'"; - - if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); - } + foreach ($elements as $element) { + $filter[] = 'co_pianodeiconti3.id='.prepare($element); } + + $where[] = "co_pianodeiconti1.descrizione='Economico'"; + $where[] = "co_pianodeiconti3.dir='uscita'"; + + if (!empty($search)) { + $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + } + break; case 'impianti': - if (Modules::get('MyImpianti')['permessi'] != '-' && isset($superselect['idanagrafica'])) { + if (isset($superselect['idanagrafica'])) { $query = 'SELECT id, CONCAT(matricola, " - ", nome) AS descrizione FROM my_impianti |where| ORDER BY idsede'; foreach ($elements as $element) { @@ -388,7 +379,7 @@ switch ($op) { break; case 'componenti': - if (Modules::get('Gestione componenti')['permessi'] != '-' && isset($superselect['marticola'])) { + if (isset($superselect['marticola'])) { $query = 'SELECT id, nome AS descrizione, contenuto FROM my_impianto_componenti |where| ORDER BY id'; foreach ($elements as $element) { @@ -421,23 +412,22 @@ switch ($op) { break; case 'categorie': - if (Modules::get('Magazzino')['permessi'] != '-') { - $query = 'SELECT id, nome AS descrizione FROM mg_categorie |where| ORDER BY id'; + $query = 'SELECT id, nome AS descrizione FROM mg_categorie |where| ORDER BY id'; - foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); - } - - $where[] = '`parent` IS NULL'; - - if (!empty($search)) { - $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); - } + foreach ($elements as $element) { + $filter[] = 'id='.prepare($element); } + + $where[] = '`parent` IS NULL'; + + if (!empty($search)) { + $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); + } + break; case 'sottocategorie': - if (Modules::get('Magazzino')['permessi'] != '-' && isset($superselect['id_categoria'])) { + if (isset($superselect['id_categoria'])) { $query = 'SELECT id, nome AS descrizione FROM mg_categorie |where| ORDER BY id'; foreach ($elements as $element) { @@ -453,7 +443,7 @@ switch ($op) { break; case 'preventivi': - if (Modules::get('Preventivi')['permessi'] != '-' && isset($superselect['idanagrafica'])) { + if (isset($superselect['idanagrafica'])) { $query = 'SELECT co_preventivi.id AS id, an_anagrafiche.idanagrafica, CONCAT(numero, " ", nome) AS descrizione, co_preventivi.idtipointervento, (SELECT descrizione descrizione FROM in_tipiintervento WHERE in_tipiintervento.idtipointervento = co_preventivi.idtipointervento) AS idtipointervento_descrizione FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id'; foreach ($elements as $element) { @@ -473,115 +463,108 @@ switch ($op) { break; case 'preventivi_aperti': - if (Modules::get('Preventivi')['permessi'] != '-') { - $query = 'SELECT co_preventivi.id AS id, CONCAT(numero, " ", nome, " (", ragione_sociale, ")") AS descrizione FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id'; + $query = 'SELECT co_preventivi.id AS id, CONCAT(numero, " ", nome, " (", ragione_sociale, ")") AS descrizione FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id'; - foreach ($elements as $element) { - $filter[] = 'idpreventivo='.prepare($element); - } - $where[] = 'idstato IN (1)'; - if (!empty($search)) { - $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); - } + foreach ($elements as $element) { + $filter[] = 'idpreventivo='.prepare($element); } + $where[] = 'idstato IN (1)'; + if (!empty($search)) { + $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); + } + break; case 'contratti': - if (Modules::get('Contratti')['permessi'] != '-') { - $query = 'SELECT co_contratti.id AS id, CONCAT(numero, " ", nome) AS descrizione FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id'; + $query = 'SELECT co_contratti.id AS id, CONCAT(numero, " ", nome) AS descrizione FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id'; - foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); - } - - $where[] = 'an_anagrafiche.idanagrafica='.prepare($superselect['idanagrafica']); - $where[] = 'idstato IN (SELECT `id` FROM co_staticontratti WHERE pianificabile = 1)'; - - if (!empty($search)) { - $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); - } + foreach ($elements as $element) { + $filter[] = 'id='.prepare($element); } + + $where[] = 'an_anagrafiche.idanagrafica='.prepare($superselect['idanagrafica']); + $where[] = 'idstato IN (SELECT `id` FROM co_staticontratti WHERE pianificabile = 1)'; + + if (!empty($search)) { + $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); + } + break; case 'tipiintervento': - if (Modules::get('Interventi')['permessi'] != '-') { - $query = 'SELECT idtipointervento AS id, descrizione FROM in_tipiintervento |where| ORDER BY idtipointervento'; + $query = 'SELECT idtipointervento AS id, descrizione FROM in_tipiintervento |where| ORDER BY idtipointervento'; - foreach ($elements as $element) { - $filter[] = 'idtipointervento='.prepare($element); - } - if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); - } + foreach ($elements as $element) { + $filter[] = 'idtipointervento='.prepare($element); } + if (!empty($search)) { + $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + } + break; case 'misure': - if (Modules::get('Magazzino')['permessi'] != '-') { - $query = 'SELECT valore AS id, valore AS descrizione FROM mg_unitamisura |where| ORDER BY valore'; + $query = 'SELECT valore AS id, valore AS descrizione FROM mg_unitamisura |where| ORDER BY valore'; - foreach ($elements as $element) { - $filter[] = 'valore='.prepare($element).''; - } - if (!empty($search)) { - $search_fields[] = 'valore LIKE '.prepare('%'.$search.'%'); - } + foreach ($elements as $element) { + $filter[] = 'valore='.prepare($element).''; } + if (!empty($search)) { + $search_fields[] = 'valore LIKE '.prepare('%'.$search.'%'); + } + break; case 'prodotti_lotti': - if (Modules::get('Magazzino')['permessi'] != '-') { - $query = 'SELECT DISTINCT lotto AS descrizione FROM mg_prodotti |where|'; + $query = 'SELECT DISTINCT lotto AS descrizione FROM mg_prodotti |where|'; - $where[] = 'idarticolo='.prepare($superselect['idarticolo']); + $where[] = 'idarticolo='.prepare($superselect['idarticolo']); - foreach ($elements as $element) { - $filter[] = 'lotto='.prepare($element).''; - } - - if (!empty($search)) { - $search_fields[] = 'lotto LIKE '.prepare('%'.$search.'%'); - } - - $custom['id'] = 'descrizione'; + foreach ($elements as $element) { + $filter[] = 'lotto='.prepare($element).''; } + + if (!empty($search)) { + $search_fields[] = 'lotto LIKE '.prepare('%'.$search.'%'); + } + + $custom['id'] = 'descrizione'; + break; case 'prodotti_serial': - if (Modules::get('Magazzino')['permessi'] != '-') { - $query = 'SELECT DISTINCT serial AS descrizione FROM mg_prodotti |where|'; + $query = 'SELECT DISTINCT serial AS descrizione FROM mg_prodotti |where|'; - $where[] = 'id_articolo='.prepare($superselect['idarticolo']); - $where[] = 'lotto='.prepare($superselect['lotto']); + $where[] = 'id_articolo='.prepare($superselect['idarticolo']); + $where[] = 'lotto='.prepare($superselect['lotto']); - foreach ($elements as $element) { - $filter[] = 'serial='.prepare($element).''; - } - if (!empty($search)) { - $search_fields[] = 'serial LIKE '.prepare('%'.$search.'%'); - } - - $custom['id'] = 'descrizione'; + foreach ($elements as $element) { + $filter[] = 'serial='.prepare($element).''; } + if (!empty($search)) { + $search_fields[] = 'serial LIKE '.prepare('%'.$search.'%'); + } + + $custom['id'] = 'descrizione'; + break; case 'prodotti_altro': - if (Modules::get('Magazzino')['permessi'] != '-') { - $query = 'SELECT DISTINCT altro AS descrizione FROM mg_prodotti |where|'; + $query = 'SELECT DISTINCT altro AS descrizione FROM mg_prodotti |where|'; - $where[] = 'id_articolo='.prepare($superselect['idarticolo']); - $where[] = 'lotto='.prepare($superselect['lotto']); - $where[] = 'serial='.prepare($superselect['serial']); + $where[] = 'id_articolo='.prepare($superselect['idarticolo']); + $where[] = 'lotto='.prepare($superselect['lotto']); + $where[] = 'serial='.prepare($superselect['serial']); - foreach ($elements as $element) { - $filter[] = 'altro='.prepare($element).''; - } - if (!empty($search)) { - $search_fields[] = 'altro LIKE '.prepare('%'.$search.'%'); - } - - $custom['id'] = 'descrizione'; + foreach ($elements as $element) { + $filter[] = 'altro='.prepare($element).''; } + if (!empty($search)) { + $search_fields[] = 'altro LIKE '.prepare('%'.$search.'%'); + } + + $custom['id'] = 'descrizione'; + break; } diff --git a/lib/functions.js b/lib/functions.js index 7f1f25b39..dfd774bee 100644 --- a/lib/functions.js +++ b/lib/functions.js @@ -1001,6 +1001,10 @@ function start_inputmask(element) { $(element+'.email-mask').inputmask('Regex', { regex: "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+(?:\\.[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$", }); + + $(element+'.alphanumeric-mask').inputmask('Regex', { + regex: "[A-Za-z0-9]{10}", + }); if (isMobile.any()) { $(element+'.inputmask-decimal, '+element+'.date-mask, '+element+'.timestamp-mask').each(function () { diff --git a/modules/interventi/add.php b/modules/interventi/add.php index d0f4ba678..8fd15c93b 100644 --- a/modules/interventi/add.php +++ b/modules/interventi/add.php @@ -71,7 +71,7 @@ elseif (!empty($idcontratto) && !empty($idcontratto_riga)) { $idimpianto = implode(',', array_column($rs, 'idimpianto')); // Seleziono "In programmazione" come stato - $rs = $dbo->fetchArray("SELECT * FROM in_statiintervento WHERE descrizione='In programmazione'"); + $rs = $dbo->fetchArray("SELECT * FROM in_statiintervento WHERE codice='WIP'"); $idstatointervento = $rs[0]['idstatointervento']; } @@ -184,7 +184,7 @@ if (empty($new_codice)) {
- {[ "type": "select", "label": "", "name": "idstatointervento", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento", "value": "" ]} + {[ "type": "select", "label": "", "name": "idstatointervento", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted = 0", "value": "" ]}
diff --git a/modules/stati_intervento/actions.php b/modules/stati_intervento/actions.php index d6066daff..e161213f6 100644 --- a/modules/stati_intervento/actions.php +++ b/modules/stati_intervento/actions.php @@ -14,7 +14,7 @@ switch (post('op')) { $query = 'UPDATE in_statiintervento SET descrizione='.prepare($descrizione).' WHERE idstatointervento='.prepare($id_record).' AND `default`=0'; $dbo->query($query); - $_SESSION['infos'][] = tr('Informazioni salvate correttamente!'); + $_SESSION['infos'][] = tr('Informazioni salvate correttamente.'); break; @@ -22,20 +22,32 @@ switch (post('op')) { $idstatointervento = post('idstatointervento'); $descrizione = post('descrizione'); $colore = post('colore'); + + + + if (count($dbo->fetchArray('SELECT idstatointervento FROM in_statiintervento WHERE idstatointervento='.prepare($idstatointervento).''))>0){ + + $_SESSION['errors'][] = tr('Stato di intervento già esistente.'); + + }else{ + + + $query = 'INSERT INTO in_statiintervento(idstatointervento, descrizione, colore) VALUES ('.prepare($idstatointervento).', '.prepare($descrizione).', '.prepare($colore).')'; + $dbo->query($query); + $id_record = $idstatointervento; - $query = 'INSERT INTO in_statiintervento(idstatointervento, descrizione, colore) VALUES ('.prepare($idstatointervento).', '.prepare($descrizione).', '.prepare($colore).')'; - $dbo->query($query); - $id_record = $idstatointervento; - - $_SESSION['infos'][] = tr('Nuovo stato di intervento aggiunto!'); - + $_SESSION['infos'][] = tr('Nuovo stato di intervento aggiunto.'); + + } + break; case 'delete': - $query = 'DELETE FROM in_statiintervento WHERE idstatointervento='.prepare($id_record).' AND `default`=0'; - $dbo->query($query); + $query = 'UPDATE in_statiintervento SET deleted = 1 WHERE idstatointervento='.prepare($id_record).' AND `default`=0'; + + $dbo->query($query); - $_SESSION['infos'][] = tr('Stato di intervento eliminato!'); + $_SESSION['infos'][] = tr('Stato di intervento eliminato.'); break; } diff --git a/modules/stati_intervento/add.php b/modules/stati_intervento/add.php index 5e386cb1f..ba652eb1f 100644 --- a/modules/stati_intervento/add.php +++ b/modules/stati_intervento/add.php @@ -8,7 +8,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "idstatointervento", "required": 1, "value": "" ]} + {[ "type": "text", "label": "", "name": "idstatointervento", "class": "alphanumeric-mask", "required": 1, "value": "" ]}
diff --git a/update/2_3_1.sql b/update/2_3_1.sql index 8df9254fb..4570e1a8b 100644 --- a/update/2_3_1.sql +++ b/update/2_3_1.sql @@ -45,26 +45,28 @@ UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(an_anagrafiche.idanagrafica) AS -- Aggiungo 1=1 nel WHERE e 2=2 nel HAVING per il widget tutte le anagrafiche UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(an_anagrafiche.idanagrafica) AS dato 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 1=1 AND deleted=0 HAVING 2=2' WHERE `zz_widgets`.`name` = 'Tutte le anagrafiche'; - -- Aggiornamento widget "Crediti da clienti" anche con totali parziali UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(da_pagare-pagato, 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM (co_scadenziario INNER JOIN co_documenti ON co_scadenziario.iddocumento=co_documenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_tipidocumento.dir=\'entrata\'' WHERE `zz_widgets`.`name` = 'Crediti da clienti'; -- Aggiornamento widget "Debiti verso fornitori" anche con totali parziali UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT( -(da_pagare-pagato), 2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM (co_scadenziario INNER JOIN co_documenti ON co_scadenziario.iddocumento=co_documenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_tipidocumento.dir=\'uscita\'' WHERE `zz_widgets`.`name` = 'Debiti verso fornitori'; +-- Aggiungo flag deleted per gli stati intervento +ALTER TABLE `in_statiintervento` ADD `deleted` BOOLEAN NOT NULL DEFAULT FALSE AFTER `completato`; --- Aggiunta possibilità di specificare se uno stato intervento è eliminabile o meno (di default sì) +-- Aggiorno query modulo stati intervento +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `in_statiintervento` WHERE 1=1 AND deleted = 0 HAVING 2=2' WHERE `zz_modules`.`name` = 'Stati di intervento'; + + +-- Aggiungo il flag can_delete ed elimino il flag `default` in quanto non serve più ALTER TABLE `in_statiintervento` ADD `can_delete` BOOLEAN NOT NULL DEFAULT TRUE AFTER `default`; - --- Ridenominazione campo `default` a `can_edit` per maggior chiarezza -ALTER TABLE `in_statiintervento` CHANGE `default` `can_edit` TINYINT( 1 ) NOT NULL ; - +ALTER TABLE `in_statiintervento` DROP `default`; -- Aggiunti come eliminabili gli stati "Chiamata" e "In programmazione" -UPDATE `in_statiintervento` SET `can_delete` = 1, `can_edit` = 1 WHERE `idstatointervento` IN( 'CALL', 'WIP' ); +UPDATE `in_statiintervento` SET `can_delete` = 1 WHERE `idstatointervento` IN( 'CALL', 'WIP' ); -- Aggiunti come non eliminabili ma modificabili gli stati "Fatturato" e "Completato" -UPDATE `in_statiintervento` SET `can_delete` = 0, `can_edit` = 1 WHERE `idstatointervento` IN( 'FAT', 'OK' ); +UPDATE `in_statiintervento` SET `can_delete` = 0 WHERE `idstatointervento` IN( 'FAT', 'OK' ); -- Impostazione di tutti gli eventuali altri tipi di intervento a modificabili e cancellabili -UPDATE `in_statiintervento` SET `can_delete` = 1, `can_edit` = 1 WHERE `idstatointervento` NOT IN( 'FAT', 'OK', 'CALL', 'WIP' ); +UPDATE `in_statiintervento` SET `can_delete` = 1 WHERE `idstatointervento` NOT IN( 'FAT', 'OK', 'CALL', 'WIP' );