<?php
include_once ("core.php");

if (! isset($op)) $op = filter('op');

$superselect = array();
foreach ($_SESSION["superselect"] as $id => $value) {
	$superselect[$id] = $value;
}
// aggiungi per multiple $id_elemtno

$search = filter('q');
$module_name = $ajaxsource['module'];

$where = array();
$search_query = array();
$result = array();

switch ($op) {
	case "clienti" :
		if ($modules_info["Anagrafiche"]["permessi"] != '-') {
			$query = "SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione, citta, 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";

			if (isset($id_elemento)) array_push($where, "an_anagrafiche.idanagrafica=" . prepare($id_elemento));
			array_push($where, "descrizione='Cliente'");
			array_push($where, "deleted=0");
			if (isset($search)) {
				array_push($search_query, "ragione_sociale LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "citta LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "provincia LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				$descrizione = $r['descrizione'];

				if( $r['citta'] != '' ){
					$descrizione .= " (".$r['citta'].")";
				}

				array_push($result, array('id' => $r['id'],'text' => $descrizione,'idtipointervento' => $r['idtipointervento_default']));
			}
		}
		break;

	case "fornitori" :
		if ($modules_info["Anagrafiche"]["permessi"] != '-') {
			$query = "SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione, citta 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";

			if (isset($id_elemento)) array_push($where, "an_anagrafiche.idanagrafica=" . prepare($id_elemento));
			array_push($where, "descrizione='Fornitore'");
			array_push($where, "deleted=0");
			if (isset($search)) {
				array_push($search_query, "ragione_sociale LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "citta LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "provincia LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				$descrizione = $r['descrizione'];

				if( $r['citta'] != '' ){
					$descrizione .= " (".$r['citta'].")";
				}

				array_push($result, array('id' => $r['id'],'text' => $descrizione,'idtipointervento' => $r['idtipointervento_default']));
			}
		}
		break;

	case "agenti" :
		if ($modules_info["Anagrafiche"]["permessi"] != '-') {
			$query = "SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione, citta 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";

			if (isset($id_elemento)) array_push($where, "an_anagrafiche.idanagrafica=" . prepare($id_elemento));
			array_push($where, "descrizione='Agente'");
			array_push($where, "deleted=0");
			if (isset($search)) {
				array_push($search_query, "ragione_sociale LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "citta LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "provincia LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			// 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;

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				$bgcolor = ($r['id'] == $idagente_default) ? '#ff0' : '';

				$descrizione = $r['descrizione'];

				if( $r['citta'] != '' ){
					$descrizione .= " (".$r['citta'].")";
				}

				array_push($result, array('id' => $r['id'],'text' => $descrizione,'idtipointervento' => $r['idtipointervento_default'],'_bgcolor_' => $bgcolor));
			}
		}
		break;

	case "tecnici" :
		if ($modules_info["Anagrafiche"]["permessi"] != '-') {
			$query = "SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione, citta 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";

			if (isset($id_elemento)) array_push($where, "an_anagrafiche.idanagrafica=" . prepare($id_elemento));
			array_push($where, "descrizione='Tecnico'");
			array_push($where, "deleted=0");
			if (isset($search)) {
				array_push($search_query, "ragione_sociale LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "citta LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "provincia LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				$descrizione = $r['descrizione'];

				array_push( $result, array('id' => $r['id'],'text' => $descrizione, 'idtipointervento' => $r['idtipointervento_default']) );
			}
		}
		break;

	// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
	case "anagrafiche" :
		if ($modules_info["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";

			if (isset($id_elemento)) array_push($where, "an_anagrafiche.idanagrafica=" . prepare($id_elemento));
			array_push($where, "deleted=0");
			if (isset($search)) {
				array_push($search_query, "ragione_sociale LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "citta LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "provincia LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione'],'idtipointervento' => $r['idtipointervento_default']));
			}
		}
		break;

	case "sedi" :
		if ($modules_info["Anagrafiche"]["permessi"] != '-' && isset($superselect['idanagrafica'])) {
			$query = "SELECT id, CONCAT_WS(' - ', nomesede, citta) AS descrizione FROM an_sedi |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "idanagrafica=" . prepare($superselect['idanagrafica']));
			if (isset($search)) {
				array_push($search_query, "nomesede LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "citta LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			array_push($result, array('id' => '0','text' => 'Sede legale'));

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione']));
			}
		}
		break;
		
		
	case "documenti" :
		if ($modules_info["Anagrafiche"]["permessi"] != '-' && isset($superselect['idanagrafica'])) {
			$query = "SELECT id, numero_documento AS descrizione FROM co_documenti |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "idanagrafica=" . prepare($superselect['idanagrafica']));
			array_push($where, "idtipodocumento=" . prepare($superselect['idtipodoc']));		

			if (isset($search)) {
				array_push($search_query, "numero_documento LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "numero_esterno LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

		//	array_push($result, array('id' => '0','text' => 'Documento non trovato'));

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione']));
			}
		}
		break;	
		
		

	case "referenti" :
		if ($modules_info["Anagrafiche"]["permessi"] != '-' && isset($superselect['idanagrafica'])) {
			$query = "SELECT id, nome AS descrizione FROM an_referenti |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "idanagrafica=" . prepare($superselect['idanagrafica']));
			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione']));
			}
		}
		break;

	case "articoli_filtro" :		
		$len=strlen($search);
		if ($len >= get_var("Numero caratteri prima di inizio ricerca articolo")) {
			$query = "SELECT * FROM mg_articoli |where| ORDER BY id_categoria ASC, id_sottocategoria ASC";
			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "attivo=1");
		
				
			$filtro_cat=$_SESSION['filtro_categoria'];
			if ($filtro_cat <> '0') {	
				array_push($where, "id_categoria ='".$filtro_cat."'");
			}
			$filtro_fornitore=$_SESSION['filtro_fornitore'];
			if ($filtro_fornitore <> '0') {	
				array_push($where, "idfornitore ='".$filtro_fornitore."'");
			}
			
			
			
			if (isset($search)) {	
				array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));	
				array_push($search_query, "codice LIKE " . prepare("%" . $search . "%"));	
				array_push($search_query, "pro_barcode LIKE " . prepare("%" . $search . "%"));					
			}		
		
			
			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$prev = - 1;
			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				if ($prev != $r['id_categoria']) {
					$prev = $r['id_categoria'];
					array_push($result, array('text' => $dbo->fetchArray("SELECT `nome` FROM `mg_categorie` WHERE `id`=". prepare($r['id_categoria']))[0]["nome"], 'children' => array()));
				}

				array_push($result[count($result) - 1]['children'], array('id_conto' => $r['id_conto'],'id' => $r['id'],'text' => $r['pro_barcode'] . " - " . $r['codice'] . " - " . $r['descrizione'], 'um' => $r['um'], 'idiva' => number_format( $r['id_ivavendita'], $settings['Cifre decimali'], ",", "" ), 'prezzo_acquisto' => number_format( $r['prezzo_acquisto'], $settings['Cifre decimali'], ",", "" ), 'prezzo_vendita' => number_format( $r['prezzo_vendita'], $settings['Cifre decimali'], ",", "" )));
			}
		}
		break;	
	case "articoli_filtro_servizi" :		
		$len=strlen($search);
		if ($len >= get_var("Numero caratteri prima di inizio ricerca articolo")) {
			$query = "SELECT * FROM mg_articoli |where| ORDER BY id_categoria ASC, id_sottocategoria ASC";
			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "attivo=1");
			array_push($where, "servizio=1");
		
				
			$filtro_cat=$_SESSION['filtro_categoria'];
			if ($filtro_cat <> '0') {	
				array_push($where, "id_categoria ='".$filtro_cat."'");
			}
			$filtro_fornitore=$_SESSION['filtro_fornitore'];
			if ($filtro_fornitore <> '0') {	
				array_push($where, "idfornitore ='".$filtro_fornitore."'");
			}
			
			
			
			if (isset($search)) {	
				array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));	
				array_push($search_query, "codice LIKE " . prepare("%" . $search . "%"));	
				array_push($search_query, "pro_barcode LIKE " . prepare("%" . $search . "%"));					
			}		
		
			
			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$prev = - 1;
			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				if ($prev != $r['id_categoria']) {
					$prev = $r['id_categoria'];
					array_push($result, array('text' => $dbo->fetchArray("SELECT `nome` FROM `mg_categorie` WHERE `id`=". prepare($r['id_categoria']))[0]["nome"], 'children' => array()));
				}

				array_push($result[count($result) - 1]['children'], array('id_conto' => $r['id_conto'],'id' => $r['id'],'text' => $r['pro_barcode'] . " - " . $r['codice'] . " - " . $r['descrizione'], 'um' => $r['um'], 'idiva' => number_format( $r['id_ivavendita'], $settings['Cifre decimali'], ",", "" ), 'prezzo_acquisto' => number_format( $r['prezzo_acquisto'], $settings['Cifre decimali'], ",", "" ), 'prezzo_vendita' => number_format( $r['prezzo_vendita'], $settings['Cifre decimali'], ",", "" )));
			}
		}
		break;	
	case "articoli_filtro_kit" :		
		$len=strlen($search);
		if ($len >= get_var("Numero caratteri prima di inizio ricerca articolo")) {
			$query = "SELECT * FROM mg_articoli |where| ORDER BY id_categoria ASC, id_sottocategoria ASC";
			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "attivo=1 and pro_kit=1");
		
				
			$filtro_cat=$_SESSION['filtro_categoria'];
			if ($filtro_cat <> '0') {	
				array_push($where, "id_categoria ='".$filtro_cat."'");
			}
			$filtro_fornitore=$_SESSION['filtro_fornitore'];
			if ($filtro_fornitore <> '0') {	
				array_push($where, "idfornitore ='".$filtro_fornitore."'");
			}
			
			
			
			if (isset($search)) {	
				array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));	
				array_push($search_query, "codice LIKE " . prepare("%" . $search . "%"));	
				array_push($search_query, "pro_barcode LIKE " . prepare("%" . $search . "%"));					
			}		
		
			
			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$prev = - 1;
			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				if ($prev != $r['id_categoria']) {
					$prev = $r['id_categoria'];
					array_push($result, array('text' => $dbo->fetchArray("SELECT `nome` FROM `mg_categorie` WHERE `id`=". prepare($r['id_categoria']))[0]["nome"], 'children' => array()));
				}

				array_push($result[count($result) - 1]['children'], array('id_conto' => $r['id_conto'],'id' => $r['id'],'text' => $r['pro_barcode'] . " - " . $r['codice'] . " - " . $r['descrizione'], 'um' => $r['um'], 'idiva' => number_format( $r['id_ivavendita'], $settings['Cifre decimali'], ",", "" ), 'prezzo_acquisto' => number_format( $r['prezzo_acquisto'], $settings['Cifre decimali'], ",", "" ), 'prezzo_vendita' => number_format( $r['prezzo_vendita'], $settings['Cifre decimali'], ",", "" )));
			}
		}
		break;	
		
		
	case "articoli" :
		
		$query = "SELECT * FROM mg_articoli |where| ORDER BY id_categoria ASC, id_sottocategoria ASC";

		if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
		array_push($where, "attivo=1");
		if (isset($search)) {
			array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));
			array_push($search_query, "codice LIKE " . prepare("%" . $search . "%"));	
			array_push($search_query, "pro_barcode LIKE " . prepare("%" . $search . "%"));		
		}

		$wh = "";
		if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
		if (count($where) != 0) {
			$wh = "WHERE " . implode(" AND ", $where);
		}
		$query = str_replace("|where|", $wh, $query);

		$prev = - 1;
		$rs = $dbo->fetchArray($query);
		foreach ($rs as $r) {
			if ($prev != $r['id_sottocategoria']) {
				$prev = $r['id_sottocategoria'];
				array_push($result, array('text' => $dbo->fetchArray("SELECT `nome` FROM `mg_categorie` WHERE `id`=". prepare($r['id_categoria']))[0]["nome"], 'children' => array()));
			}

			array_push($result[count($result) - 1]['children'], array('id' => $r['id'],'text' => $r['pro_barcode'] . " - " . $r['codice'] . " - " . $r['descrizione'], 'um' => $r['um'], 'prezzo_acquisto' => number_format( $r['prezzo_acquisto'], $settings['Cifre decimali'], ",", "" ), 'prezzo_vendita' => number_format( $r['prezzo_vendita'], $settings['Cifre decimali'], ",", "" )));
		}
		break;

	case "conti" :
		if ($modules_info["Piano dei conti"]["permessi"] != '-') {
			$query = "SELECT * FROM co_pianodeiconti2";

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('text' => $r['numero'] . " " . $r['descrizione'],'children' => array()));

				$where = array();
				$search_query = array();

				$subquery = "SELECT * FROM co_pianodeiconti3 |where|";

				if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
				array_push($where, "idpianodeiconti2=" . prepare($r['id']));
				if (isset($search)) {
					array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));
				}
				if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");

				$wh = "";
				if (count($where) != 0) {
					$wh = "WHERE " . implode(" AND ", $where);
				}
				$subquery = str_replace("|where|", $wh, $subquery);

				$rs2 = $dbo->fetchArray($subquery);
				foreach ($rs2 as $r2) {
					array_push($result[count($result) - 1]['children'], array('id' => $r2['id'],'text' => $r2['descrizione']));
				}
			}
		}
		break;

	case "conti-vendite" :
		if ($modules_info["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";

			if (isset($id_elemento)) array_push($where, "co_pianodeiconti3.id=" . prepare($id_elemento));
			array_push($where, "co_pianodeiconti1.descrizione='Economico'");
			array_push($where, "co_pianodeiconti3.dir='entrata'");
			if (isset($search)) {
				array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione']));
			}
		}
		break;

	case "conti-acquisti" :
		if ($modules_info["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";

			if (isset($id_elemento)) array_push($where, "co_pianodeiconti3.id=" . prepare($id_elemento));
			array_push($where, "co_pianodeiconti1.descrizione='Economico'");
			array_push($where, "co_pianodeiconti3.dir='entrata'");
			if (isset($search)) {
				array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione']));
			}
		}
		break;

	case "impianti" :
		if ($modules_info["MyImpianti"]["permessi"] != '-' && isset($superselect['idanagrafica'])) {
			$query = "SELECT *, (SELECT nomesede FROM an_sedi WHERE id=my_impianti.idsede) AS nomesede FROM my_impianti |where| ORDER BY idsede";

			if (isset($id_elemento)) array_push($where, "idsede=" . prepare($id_elemento));
			array_push($where, "idanagrafica=" . prepare($superselect['idanagrafica']));
			array_push($where, "idsede=" . prepare($superselect['idsede']));
			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
				array_push($search_query, "matricola LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['matricola'] . " - " . $r['nome'] . " " . $r['marca'] . " " . $r['modello']));
			}
		}
		break;

	case "componenti" :
		if ($modules_info["Gestione componenti"]["permessi"] != '-' && isset($superselect['marticola'])) {
			$query = "SELECT * FROM my_impianto_componenti |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "idimpianto=" . prepare($id_elemento));

			$temp = array();
			$impianti = explode(",", $superselect['marticola']);
			foreach ($impianti as $key => $idimpianto) {
				array_push($temp, "idimpianto=" . prepare($idimpianto));
			}
			array_push($where, "(" . implode(" OR ", $temp) . ")");

			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				$nome = "";
				if (strpos($r['contenuto'], "[Matricola]") !== false) {
					$ini_array = parse_ini_string(read($r['contenuto']), true);
					foreach ($ini_array as $sezione => $array_impostazioni) {
						if ($sezione == 'Matricola') $nome .= $ini_array[$sezione]['valore'] . " - ";
					}
				}
				$nome .= $r["nome"];
				array_push($result, array('id' => $r['id'],'text' => $nome));
			}
		}

		break;

	case "categorie" :
		if ($modules_info["Magazzino"]["permessi"] != '-') {
			$query = "SELECT id, nome FROM mg_categorie |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "`parent`=0");
			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['nome']));
			}
		}
		break;

	case "sottocategorie" :
		if ($modules_info["Magazzino"]["permessi"] != '-' && isset($superselect['id_categoria'])) {
			$query = "SELECT id, nome FROM mg_categorie |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "`parent`=".prepare($superselect['id_categoria']));
			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['nome']));
			}
		}
		break;

	case "preventivi" :
		if ($modules_info["Preventivi"]["permessi"] != '-' && isset($superselect['idanagrafica'])) {
			$query = "SELECT co_preventivi.id AS idpreventivo, an_anagrafiche.idanagrafica, numero, nome, idtipointervento FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "an_anagrafiche.idanagrafica=" . prepare($superselect['idanagrafica']));
			array_push($where, "idstato NOT IN (SELECT `id` FROM co_statipreventivi WHERE descrizione='Bozza' OR descrizione='Rifiutato' OR descrizione='Pagato')");
			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['idpreventivo'],'text' => $r['numero'] . " " . $r['nome']));
			}
		}
		break;

	case "preventivi_aperti" :
		if ($modules_info["Preventivi"]["permessi"] != '-') {
			$query = "SELECT co_preventivi.id AS idpreventivo, an_anagrafiche.idanagrafica, numero, nome, idtipointervento, ragione_sociale FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY idpreventivo";

			if (isset($id_elemento)) array_push($where, "idpreventivo=" . prepare($id_elemento));
			array_push($where, "idstato IN (1)");
			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['idpreventivo'],'text' => $r['numero'] . " " . $r['nome'] . " (" . $r['ragione_sociale'] . ")"));
			}
		}
		break;

	case "contratti" :
		if ($modules_info["Contratti"]["permessi"] != '-') {
			$query = "SELECT co_contratti.id AS idcontratto, an_anagrafiche.idanagrafica, numero, nome FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica |where| ORDER BY id";

			if (isset($id_elemento)) array_push($where, "id=" . prepare($id_elemento));
			array_push($where, "an_anagrafiche.idanagrafica=" . prepare($superselect['idanagrafica']));
			array_push($where, "idstato NOT IN (SELECT `id` FROM co_staticontratti WHERE descrizione='Bozza' OR descrizione='Rifiutato' OR descrizione='Pagato')");
			if (isset($search)) {
				array_push($search_query, "nome LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['idcontratto'],'text' => $r['numero'] . " " . $r['nome']));
			}
		}
		break;

	case "tipiintervento" :
		if ($modules_info["Interventi"]["permessi"] != '-') {
			$query = "SELECT idtipointervento AS id, descrizione FROM in_tipiintervento |where| ORDER BY idtipointervento";

			if (isset($id_elemento)) array_push($where, "idtipointervento=" . prepare($id_elemento));
			if (isset($search)) {
				array_push($search_query, "descrizione LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);
			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione']));
			}
		}
		break;

	case "misure" :
		if ($modules_info["Magazzino"]["permessi"] != '-') {
			$query = "SELECT valore AS id, valore AS descrizione FROM mg_unitamisura |where| ORDER BY valore";

			if (isset($id_elemento)) array_push($where, "valore=" . prepare($id_elemento) . "");
			if (isset($search)) {
				array_push($search_query, "valore LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);

			foreach ($rs as $r) {
				array_push($result, array('id' => $r['id'],'text' => $r['descrizione']));
			}
		}
		break;

	case "prodotti_lotti" :
		if ($modules_info["Magazzino"]["permessi"] != '-') {
			$query = "SELECT DISTINCT lotto AS valore FROM mg_prodotti |where|";

			array_push( $where, "idarticolo=".prepare($superselect['idarticolo']) );

			if (isset($id_elemento)) array_push($where, "lotto=" . prepare($id_elemento) . "");
			if (isset($search)) {
				array_push($search_query, "lotto LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);

			foreach ($rs as $r) {
				array_push($result, array('id' => $r['valore'],'text' => $r['valore']));
			}
		}
		break;

	case "prodotti_serial" :
		if ($modules_info["Magazzino"]["permessi"] != '-') {
			$query = "SELECT DISTINCT serial AS valore FROM mg_prodotti |where|";

			array_push( $where, "idarticolo=".prepare($superselect['idarticolo']) );
			array_push( $where, "lotto=".prepare($superselect['lotto']) );

			if (isset($id_elemento)) array_push($where, "serial=" . prepare($id_elemento) . "");
			if (isset($search)) {
				array_push($search_query, "serial LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);

			foreach ($rs as $r) {
				array_push($result, array('id' => $r['valore'],'text' => $r['valore']));
			}
		}
		break;

	case "prodotti_altro" :
		if ($modules_info["Magazzino"]["permessi"] != '-') {
			$query = "SELECT DISTINCT altro AS valore FROM mg_prodotti |where|";

			array_push( $where, "idarticolo=".prepare($superselect['idarticolo']) );
			array_push( $where, "lotto=".prepare($superselect['lotto']) );
			array_push( $where, "serial=".prepare($superselect['serial']) );

			if (isset($id_elemento)) array_push($where, "altro=" . prepare($id_elemento) . "");
			if (isset($search)) {
				array_push($search_query, "altro LIKE " . prepare("%" . $search . "%"));
			}

			$wh = "";
			if (count($search_query) != 0) array_push($where, "(" . implode(" OR ", $search_query) . ")");
			if (count($where) != 0) {
				$wh = "WHERE " . implode(" AND ", $where);
			}
			$query = str_replace("|where|", $wh, $query);

			$rs = $dbo->fetchArray($query);

			foreach ($rs as $r) {
				array_push($result, array('id' => $r['valore'],'text' => $r['valore']));
			}
		}
		break;
}

echo json_encode($result);
?>
