openstamanager/modules/anagrafiche/ajax/select.php

336 lines
15 KiB
PHP
Raw Normal View History

<?php
include_once __DIR__.'/../../../core.php';
switch ($resource) {
case 'clienti':
2019-08-29 15:09:01 +02:00
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) 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";
2019-08-29 15:09:01 +02:00
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
2019-08-29 15:09:01 +02:00
$where[] = "descrizione='Cliente'";
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
}
2019-08-29 15:09:01 +02:00
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
2019-08-29 15:09:01 +02:00
$custom['idtipointervento'] = 'idtipointervento_default';
break;
case 'fornitori':
2019-08-29 15:09:01 +02:00
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) 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";
2019-08-29 15:09:01 +02:00
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
2019-08-29 15:09:01 +02:00
$where[] = "descrizione='Fornitore'";
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
}
2019-08-29 15:09:01 +02:00
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
2019-08-29 15:09:01 +02:00
$custom['idtipointervento'] = 'idtipointervento_default';
break;
2018-11-30 16:10:15 +01:00
case 'vettori':
2019-08-29 15:09:01 +02:00
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) 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";
2018-11-27 11:43:22 +01:00
2019-08-29 15:09:01 +02:00
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
2018-11-27 11:43:22 +01:00
2019-08-29 15:09:01 +02:00
$where[] = "descrizione='Vettore'";
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
}
2019-08-29 15:09:01 +02:00
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
2018-11-27 11:43:22 +01:00
2019-08-29 15:09:01 +02:00
$custom['idtipointervento'] = 'idtipointervento_default';
2018-11-27 11:43:22 +01:00
break;
2018-11-30 16:10:15 +01:00
case 'agenti':
2019-08-29 15:09:01 +02:00
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) 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";
2019-08-29 15:09:01 +02:00
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
2019-08-29 15:09:01 +02:00
$where[] = "descrizione='Agente'";
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
}
2019-08-29 15:09:01 +02:00
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
2019-08-29 15:09:01 +02:00
$results = AJAX::selectResults($query, $where, $filter, $search, $limit, $custom);
2019-08-29 15:09:01 +02:00
// 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;
}
2019-08-29 15:09:01 +02:00
$ids = array_column($results, 'idanagrafica');
$pos = array_search($idagente_default, $ids);
if ($pos !== false) {
$results[$pos]['_bgcolor_'] = '#ff0';
}
break;
case 'tecnici':
2019-08-29 15:09:01 +02:00
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) 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";
2019-08-29 15:09:01 +02:00
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
2019-08-29 15:09:01 +02:00
$where[] = "descrizione='Tecnico'";
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
2019-12-13 10:08:17 +01:00
if (setting('Permetti inserimento sessioni degli altri tecnici')) {
} else {
//come tecnico posso aprire attività solo a mio nome
$user = Auth::user();
if ($user['gruppo'] == 'Tecnici' && !empty($user['idanagrafica'])) {
$where[] = 'an_anagrafiche.idanagrafica='.$user['idanagrafica'];
}
}
2019-08-29 15:09:01 +02:00
}
2019-08-29 15:09:01 +02:00
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
2019-08-29 15:09:01 +02:00
// $custom['idtipointervento'] = 'idtipointervento_default';
break;
2018-11-22 15:34:44 +01:00
2019-08-29 15:09:01 +02:00
case 'clienti_fornitori':
2019-07-24 15:22:10 +02:00
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup, idtipointervento_default, an_tipianagrafiche.idtipoanagrafica FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
2018-11-20 11:53:58 +01:00
2018-11-22 15:34:44 +01:00
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
$where = [];
2018-11-22 15:34:44 +01:00
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
$where[] = "an_tipianagrafiche_anagrafiche.idtipoanagrafica IN (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Cliente' OR descrizione = 'Fornitore')";
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
// Aggiunta filtri di ricerca
if (!empty($search_fields)) {
$where[] = '('.implode(' OR ', $search_fields).')';
}
2018-11-22 15:34:44 +01:00
if (!empty($filter)) {
$where[] = '('.implode(' OR ', $filter).')';
}
2018-11-22 15:34:44 +01:00
$query = str_replace('|where|', !empty($where) ? 'WHERE '.implode(' AND ', $where) : '', $query);
2018-11-20 11:53:58 +01:00
$rs = $dbo->fetchArray($query);
foreach ($rs as $r) {
if ($prev != $r['optgroup']) {
$results[] = ['text' => $r['optgroup'], 'children' => []];
$prev = $r['optgroup'];
}
$results[count($results) - 1]['children'][] = [
'id' => $r['id'],
'text' => $r['descrizione'],
'descrizione' => $r['descrizione'],
];
}
2018-11-20 11:53:58 +01:00
break;
2018-11-22 15:34:44 +01:00
// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
case 'anagrafiche':
2019-08-29 15:09:01 +02:00
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup 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 `optgroup` ASC, ragione_sociale ASC";
2019-08-29 15:09:01 +02:00
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
2019-08-29 15:09:01 +02:00
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
}
2019-08-29 15:09:01 +02:00
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
2019-08-27 17:25:52 +02:00
2019-08-29 15:09:01 +02:00
// Aggiunta filtri di ricerca
if (!empty($search_fields)) {
$where[] = '('.implode(' OR ', $search_fields).')';
}
2019-08-27 17:25:52 +02:00
2019-08-29 15:09:01 +02:00
if (!empty($filter)) {
$where[] = '('.implode(' OR ', $filter).')';
}
2019-08-27 17:25:52 +02:00
2019-08-29 15:09:01 +02:00
$query = str_replace('|where|', !empty($where) ? 'WHERE '.implode(' AND ', $where) : '', $query);
2019-08-27 17:25:52 +02:00
2019-08-29 15:09:01 +02:00
$rs = $dbo->fetchArray($query);
foreach ($rs as $r) {
if ($prev != $r['optgroup']) {
$results[] = ['text' => $r['optgroup'], 'children' => []];
$prev = $r['optgroup'];
2019-08-27 17:25:52 +02:00
}
2019-08-29 15:09:01 +02:00
$results[count($results) - 1]['children'][] = [
'id' => $r['id'],
'text' => $r['descrizione'],
'descrizione' => $r['descrizione'],
];
}
break;
case 'sedi':
if (isset($superselect['idanagrafica'])) {
2019-06-25 17:29:20 +02:00
$query = "SELECT * FROM (SELECT '0' AS id, CONCAT_WS(' - ', 'Sede legale' , (SELECT CONCAT (citta, ' (', ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| ORDER BY descrizione";
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
}
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
if (!empty($search)) {
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
}
}
break;
case 'sedi_azienda':
if (isset($superselect['idanagrafica'])) {
$user = Auth::user();
2019-11-11 18:34:02 +01:00
$id_azienda = get_var('Azienda predefinita');
2019-06-25 17:29:20 +02:00
$query = "SELECT * FROM (SELECT '0' AS id, CONCAT_WS(' - ', 'Sede legale' , (SELECT CONCAT (citta, ' (', ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab |filter| ORDER BY descrizione";
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
}
2019-11-11 18:34:02 +01:00
$where[] = 'idanagrafica='.prepare($id_azienda);
2020-01-15 14:31:23 +01:00
//admin o utente senza una sede prefissata, avrà accesso a tutte le sedi
2020-01-17 17:31:46 +01:00
if (!empty($user->sedi) and !$user->is_admin) {
2020-01-15 14:31:23 +01:00
$where[] = 'id IN('.implode(',', $user->sedi).')';
2020-01-17 17:31:46 +01:00
}
if (!empty($search)) {
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
}
}
break;
case 'referenti':
if (isset($superselect['idanagrafica'])) {
2018-11-15 19:06:42 +01:00
$query = 'SELECT id, nome AS descrizione FROM an_referenti |where| ORDER BY nome';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
}
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
if (!empty($search)) {
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%');
}
}
break;
2019-05-04 00:32:28 +02:00
case 'nazioni':
2020-02-03 15:21:34 +01:00
$query = 'SELECT id AS id, iso2, CONCAT_WS(\' - \', iso2, nome) AS descrizione FROM an_nazioni |where| ORDER BY CASE WHEN iso2=\'IT\' THEN -1 ELSE iso2 END';
2019-05-04 00:32:28 +02:00
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
}
if (!empty($search)) {
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%');
2020-02-03 15:21:34 +01:00
$search_fields[] = 'iso2 LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'CONCAT_WS(\' - \', iso2, nome) LIKE '.prepare('%'.$search.'%');
2019-05-04 00:32:28 +02:00
}
2019-09-13 12:27:29 +02:00
break;
case 'relazioni':
$query = 'SELECT id, descrizione, colore AS _bgcolor_ FROM an_relazioni ORDER BY descrizione';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
}
if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%');
}
break;
2019-09-13 12:27:29 +02:00
case 'dichiarazioni_intento':
$query = "SELECT id, CONCAT_WS(' - ', numero_protocollo, numero_progressivo) as descrizione FROM co_dichiarazioni_intento |where| ORDER BY data";
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
}
$where[] = 'data_inizio < NOW()';
$where[] = 'data_fine > NOW()';
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
}
$where[] = 'id_anagrafica='.prepare($superselect['idanagrafica']);
if (!empty($search)) {
$search_fields[] = 'numero_protocollo LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'numero_progressivo LIKE '.prepare('%'.$search.'%');
}
break;
}