$q="SELECT ragione_sociale FROM an_anagrafiche WHERE deleted=0 AND ragione_sociale LIKE '%$ragione_sociale%' ".$WHERE_AGENTE.' '.Modules::getAdditionalsQuery('Anagrafiche').' GROUP BY ragione_sociale ORDER BY ragione_sociale';
$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";
$q="SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='".$idanagrafica."' ".Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY id';
$q="SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='".$idanagrafica."' ".Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY id';
$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){
echohtml_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){
echohtml_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){
echohtml_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){
echohtml_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 idarticolo="'.$idarticolo.'" '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY lotto ASC';
$rs=$dbo->fetchArray($q);
$n=sizeof($rs);
echo"<option value=''>- Seleziona un lotto -</option>\n";
for($i=0;$i<$n;++$i){
$dir='entrata';
$qs='SELECT COUNT(serial) AS num_seriali FROM mg_prodotti WHERE idarticolo='.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';
$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 idarticolo='.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 idarticolo='.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';
// 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 idarticolo="'.$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"<option value=''>- Seleziona un altro codice -</option>\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'<small>';
if(!empty($idarticolo)){
// Ultime 5 vendite al cliente
$fatture=$dbo->fetchArray('SELECT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo="'.$idarticolo."\" AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') AND idanagrafica=\"".$idanagrafica.'") LIMIT 0,5');
echo"<tr><td class='first_cell text-left'><a href='".$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fattura n<sup>o</sup> ".$n_fattura."</a></td>\n";
// 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'<small>';
// Ultime 5 vendite totali
$fatture=$dbo->fetchArray("SELECT DISTINCT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo='".$idarticolo."' AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') ) ORDER BY data_fattura DESC, n_fattura DESC LIMIT 0,5");
echo"<tr><td class='first_cell text-left'><a href='".$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fattura n<sup>o</sup> ".$n_fattura."</a></td>\n";
// 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'<small>';
// Ultime 5 vendite totali
$fatture=$dbo->fetchArray("SELECT DISTINCT iddocumento, (subtotale-sconto)/qta AS costo_unitario, (SELECT numero FROM co_documenti WHERE id=iddocumento) AS n_fattura, (SELECT numero_esterno FROM co_documenti WHERE id=iddocumento) AS n2_fattura, (SELECT data FROM co_documenti WHERE id=iddocumento) AS data_fattura FROM co_righe_documenti WHERE idarticolo='".$idarticolo."' AND iddocumento IN(SELECT id FROM co_documenti WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='uscita') ) ORDER BY data_fattura DESC, n_fattura DESC LIMIT 0,5");
echo"<tr><td class='first_cell text-left'><a href='".$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$fatture[$i]['iddocumento']."' target=\"_blank\" title=\"Apri il documento su una nuova finestra\">Fattura n<sup>o</sup> ".$n_fattura."</a></td>\n";
$q="SELECT ragione_sociale FROM an_anagrafiche WHERE ragione_sociale LIKE '%$ragione_sociale%' ".Modules::getAdditionalsQuery('Anagrafiche').' ORDER BY ragione_sociale';
$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');
$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');
$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) )";
echo"<option value='".$rs[$i]['iddocumento']."' dir=\"".$rs[$i]['dir'].'">'.html_entity_decode($rs[$i]['tipo_doc']).' del '.Translator::dateToLocale($rs[$i]['data'])."</option>\n";
$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'";
echo"<option value=''>- Seleziona un ddt -</option>\n";
for($i=0;$i<$n;++$i){
echo"<option value='".$rs[$i]['idddt']."'>".html_entity_decode($rs[$i]['tipo_doc']).' '.$rs[$i]['numero'].' del '.Translator::dateToLocale($rs[$i]['data'])."</option>\n";
$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';
$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);
$campi=['codice','(SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id)','data_richiesta','info_sede','richiesta','descrizione','informazioniaggiuntive'];
$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);
$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);
$result[$r+$i]['title']='Preventivo '.$rs[$r]['numero'].(($rs[$r]['data_accettazione']=='0000-00-00')?' del '.Translator::dateToLocale($rs[$r]['data_accettazione']):'');
$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'");
$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'");
$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'];
$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'");
$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'");