Migliorie nel codice

This commit is contained in:
Thomas Zilio 2018-07-08 15:41:38 +02:00
parent 4be3171061
commit 0bb0897d23
19 changed files with 55 additions and 58 deletions

View File

@ -7,10 +7,10 @@ if (isset($id_record)) {
$posizione .= ', '.$id_record;
}
$dbo->query('UPDATE zz_semaphores SET updated = NOW() WHERE id_utente = '.prepare($_SESSION['id_utente']).' AND posizione = '.prepare($posizione));
$dbo->query('UPDATE zz_semaphores SET updated = NOW() WHERE id_utente = '.prepare(Auth::user()['id_utente']).' AND posizione = '.prepare($posizione));
$dbo->query('DELETE FROM zz_semaphores WHERE DATE_ADD(updated, INTERVAL '.(get_var('Timeout notifica di presenza (minuti)') * 2).' SECOND) <= NOW()');
$datas = $dbo->fetchArray('SELECT DISTINCT username FROM zz_semaphores INNER JOIN zz_users ON zz_semaphores.id_utente=zz_users.id WHERE zz_semaphores.id_utente != '.prepare($_SESSION['id_utente']).' AND posizione = '.prepare($posizione));
$datas = $dbo->fetchArray('SELECT DISTINCT username FROM zz_semaphores INNER JOIN zz_users ON zz_semaphores.id_utente=zz_users.id WHERE zz_semaphores.id_utente != '.prepare(Auth::user()['id_utente']).' AND posizione = '.prepare($posizione));
$result = [];
foreach ($datas as $data) {

View File

@ -27,8 +27,8 @@ echo '{( "name": "widgets", "id_module": "'.$id_module.'", "id_record": "'.$id_r
$advanced_sessions = get_var('Attiva notifica di presenza utenti sul record');
if ($advanced_sessions) {
$dbo->query('DELETE FROM zz_semaphores WHERE id_utente='.prepare($_SESSION['id_utente']).' AND posizione='.prepare($id_module.', '.$id_record));
$dbo->query('INSERT INTO zz_semaphores (id_utente, posizione, updated) VALUES ('.prepare($_SESSION['id_utente']).', '.prepare($id_module.', '.$id_record).', NOW())');
$dbo->query('DELETE FROM zz_semaphores WHERE id_utente='.prepare(Auth::user()['id_utente']).' AND posizione='.prepare($id_module.', '.$id_record));
$dbo->query('INSERT INTO zz_semaphores (id_utente, posizione, updated) VALUES ('.prepare(Auth::user()['id_utente']).', '.prepare($id_module.', '.$id_record).', NOW())');
echo '
<div class="box box-warning box-solid text-center info-active hide">

View File

@ -93,10 +93,6 @@ if (post('db_host') !== null) {
exit();
}
// Salvataggio dei valori da salvare successivamente
$_SESSION['osm_password'] = post('osm_password');
$_SESSION['osm_email'] = post('osm_email');
// Creazione della configurazione
if ($dbo->isConnected()) {
// Impostazioni di configurazione strettamente necessarie al funzionamento del progetto

View File

@ -31,7 +31,7 @@ echo '
if (Auth::admin()) {
$q = 'SELECT * FROM `zz_logs` ORDER BY `created_at` DESC LIMIT 0, 100';
} else {
$q = 'SELECT * FROM `zz_logs` WHERE `id_utente`='.prepare($_SESSION['id_utente']).' ORDER BY `created_at` DESC LIMIT 0, 100';
$q = 'SELECT * FROM `zz_logs` WHERE `id_utente`='.prepare(Auth::user()['id_utente']).' ORDER BY `created_at` DESC LIMIT 0, 100';
}
$rs = $dbo->fetchArray($q);
$n = sizeof($rs);

View File

@ -3,11 +3,7 @@
include_once __DIR__.'/../../../core.php';
// Prezzo modificabile solo se l'utente loggato è un tecnico (+ può vedere i prezzi) o se è amministratore
$rs = $dbo->fetchArray('SELECT nome FROM zz_groups WHERE id IN(SELECT idgruppo FROM zz_users WHERE id='.prepare($_SESSION['id_utente']).')');
for ($i = 0; $i < count($rs); ++$i) {
$gruppi[$i] = $rs[$i]['nome'];
}
$gruppi = Auth::user()['gruppo'];
//$can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (get_var('Mostra i prezzi al tecnico') == 1 && (in_array('Tecnici', $gruppi)));
$idriga = get('idriga');

View File

@ -21,12 +21,12 @@ if (!empty($rs)) {
<th>'.tr('Articolo').'</th>
<th width="8%">'.tr('Q.').'</th>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
}
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th>
@ -85,14 +85,14 @@ if (!empty($rs)) {
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].'
</td>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<td class="text-right">
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>';
}
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
// Prezzo unitario
echo '
<td class="text-right">

View File

@ -17,7 +17,7 @@ if (count($rs2) > 0) {
<th width="8%">'.tr('Q.').'</th>
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th>
@ -51,7 +51,7 @@ if (count($rs2) > 0) {
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
// Prezzo unitario
$netto = $r['prezzo_vendita'] - $r['sconto_unitario'];

View File

@ -7,11 +7,7 @@ if (file_exists(__DIR__.'/../../../core.php')) {
}
// Prezzo modificabile solo se l'utente loggato è un tecnico (+ può vedere i prezzi) o se è amministratore
$rs = $dbo->fetchArray('SELECT nome FROM zz_groups WHERE id IN(SELECT idgruppo FROM zz_users WHERE id='.prepare($_SESSION['id_utente']).')');
for ($i = 0; $i < count($rs); ++$i) {
$gruppi[$i] = $rs[$i]['nome'];
}
$gruppi = Auth::user()['gruppo'];
$can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (get_var('Mostra i prezzi al tecnico') == 1 && (in_array('Tecnici', $gruppi)));
$idriga = get('idriga');

View File

@ -14,12 +14,12 @@ if (!empty($rs)) {
<th>'.tr('Articolo').'</th>
<th width="8%">'.tr('Q.').'</th>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
}
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th>
@ -78,14 +78,14 @@ if (!empty($rs)) {
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].'
</td>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<td class="text-right">
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>';
}
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
// Prezzo unitario
echo '
<td class="text-right">

View File

@ -12,7 +12,7 @@ $idiva = get_var('Iva predefinita');
$rs_iva = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva));
($rs_iva[0]['percentuale'] > 0) ? $hide = '' : $hide = 'hide';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
$costi = get_costi_intervento($id_record);
$rss = $dbo->fetchArray('SELECT in_statiintervento.completato AS flag_completato FROM in_statiintervento INNER JOIN in_interventi ON in_statiintervento.idstatointervento=in_interventi.idstatointervento WHERE in_interventi.id='.prepare($id_record));

View File

@ -17,7 +17,7 @@ if (count($rs2) > 0) {
<th width="8%">'.tr('Q.').'</th>
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th>
@ -51,7 +51,7 @@ if (count($rs2) > 0) {
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>';
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
// Prezzo unitario
$netto = $r['prezzo_vendita'] - $r['sconto_unitario'];

View File

@ -62,6 +62,6 @@ $custom = [
// - cliente se è impostato l'idanagrafica di un Cliente
// - utente qualsiasi con permessi almeno in lettura sul modulo
// - admin
if (($_SESSION['gruppo'] == 'Clienti' && $id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) || Modules::getPermission($module_name) == '-') {
if ((Auth::user()['gruppo'] == 'Clienti' && $id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) || Modules::getPermission($module_name) == '-') {
die(tr('Non hai i permessi per questa stampa!'));
}

View File

@ -10,6 +10,9 @@ $mesi = ['', 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Lugl
$dir = save($_GET['dir']);
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
include_once $docroot.'/templates/pdfgen_variables.php';
$totale_imponibile = 0;
@ -23,15 +26,15 @@ if ($dir == 'entrata') {
}
// Ciclo tra le fatture selezionate
$query = "SELECT DATE_FORMAT( data, '%m-%Y' ) AS periodo, data FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id GROUP BY periodo, dir HAVING (data BETWEEN '".$_SESSION['period_start']."' AND '".$_SESSION['period_end']."') AND dir='".$dir."' ".$add_where.' ORDER BY data ASC';
$query = "SELECT DATE_FORMAT( data, '%m-%Y' ) AS periodo, data FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id GROUP BY periodo, dir HAVING (data BETWEEN '".$date_start."' AND '".$date_end."') AND dir='".$dir."' ".$add_where.' ORDER BY data ASC';
$rs = $dbo->fetchArray($query);
$totrows = sizeof($rs);
if ($dir == 'entrata') {
$body .= '<h3>FATTURATO MENSILE DAL '.Translator::dateToLocale($_SESSION['period_start']).' AL '.Translator::dateToLocale($_SESSION['period_end'])."</h3>\n";
$body .= '<h3>FATTURATO MENSILE DAL '.Translator::dateToLocale($date_start).' AL '.Translator::dateToLocale($date_end)."</h3>\n";
} else {
$body .= '<h3>ACQUISTI MENSILI DAL '.Translator::dateToLocale($_SESSION['period_start']).' AL '.Translator::dateToLocale($_SESSION['period_end'])."</h3>\n";
$body .= '<h3>ACQUISTI MENSILI DAL '.Translator::dateToLocale($date_start).' AL '.Translator::dateToLocale($date_end)."</h3>\n";
}
$body .= "<table cellspacing='0' style='table-layout:fixed;'>\n";

View File

@ -91,7 +91,7 @@ $custom = [
// - cliente se è impostato l'idanagrafica di un Cliente
// - utente qualsiasi con permessi almeno in lettura sul modulo
// - admin
if (($_SESSION['gruppo'] == 'Clienti' && $id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) || Modules::getPermission($module_name) == '-') {
if ((Auth::user()['gruppo'] == 'Clienti' && $id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) || Modules::getPermission($module_name) == '-') {
die(tr('Non hai i permessi per questa stampa!'));
}

View File

@ -5,6 +5,9 @@ include_once __DIR__.'/../../core.php';
$idconto = $_GET['idconto'];
$module_name = 'Piano dei conti';
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
// carica report html
$report = file_get_contents($docroot.'/templates/partitario_mastrino/partitario.html');
$body = file_get_contents($docroot.'/templates/partitario_mastrino/partitario_body.html');
@ -42,8 +45,8 @@ if ($_GET['lev'] == '3') {
$body = str_replace('|percorso|', $percorso, $body);
$body = str_replace('|info_fornitore|', $f_ragionesociale.'<br>'.$f_indirizzo.'<br>'.$f_citta, $body);
$body = str_replace('|period_start|', Translator::dateToLocale($_SESSION['period_start']), $body);
$body = str_replace('|period_end|', Translator::dateToLocale($_SESSION['period_end']), $body);
$body = str_replace('|period_start|', Translator::dateToLocale($date_start), $body);
$body = str_replace('|period_end|', Translator::dateToLocale($date_end), $body);
// Stampa da livello 3
if ($_GET['lev'] == '3') {
@ -55,7 +58,7 @@ if ($_GET['lev'] == '3') {
$saldo_finale = [];
// Calcolo saldo iniziale
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$date_start.'"');
$saldo_iniziale = $rs[0]['totale'];
$saldo_finale = $saldo_iniziale;
@ -69,7 +72,7 @@ if ($_GET['lev'] == '3') {
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO INIZIALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale(abs($dare))."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale(abs($avere))."</b></td></tr>\n";
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$idconto.'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$idconto.'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC');
for ($i = 0; $i < sizeof($rs); ++$i) {
if ($rs[$i]['totale'] >= 0) {
@ -117,7 +120,7 @@ elseif ($_GET['lev'] == '2') {
$saldo_finale = [];
// Calcolo saldo iniziale
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$date_start.'"');
$saldo_iniziale = $rs[0]['totale'];
$saldo_finale[] = $saldo_iniziale;
@ -127,7 +130,7 @@ elseif ($_GET['lev'] == '2') {
$v_dare[] = abs($saldo_iniziale);
}
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC');
for ($i = 0; $i < sizeof($rs); ++$i) {
if ($rs[$i]['totale'] >= 0) {
@ -183,7 +186,7 @@ elseif (get('lev') == '1') {
$v_dare = [];
$v_avere = [];
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC');
for ($i = 0; $i < sizeof($rs); ++$i) {
if ($rs[$i]['totale'] >= 0) {
@ -241,11 +244,11 @@ elseif (get('lev') == '1') {
$saldo_finale = [];
// Calcolo saldo iniziale
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$date_start.'"');
$dare = [];
$avere = [];
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC');
for ($i = 0; $i < sizeof($rs); ++$i) {
if ($rs[$i]['totale'] >= 0) {

View File

@ -49,13 +49,13 @@ $rs = $dbo->fetchArray($query);
if ('entrata' == $dir) {
$body .= "<span style='font-size:15pt; margin-left:6px;'><b>".tr('Registro iva vendita dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($_SESSION['period_start']),
'_END_' => Translator::dateToLocale($_SESSION['period_end']),
'_START_' => Translator::dateToLocale($date_start),
'_END_' => Translator::dateToLocale($date_end),
], ['upper' => true]).'</b></span><br><br>';
} elseif ('uscita' == $dir) {
$body .= "<span style='font-size:15pt; margin-left:6px;'><b>".tr('Registro iva acquisto dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($_SESSION['period_start']),
'_END_' => Translator::dateToLocale($_SESSION['period_end']),
'_START_' => Translator::dateToLocale($date_start),
'_END_' => Translator::dateToLocale($date_end),
], ['upper' => true]).'</b></span><br><br>';
}

View File

@ -124,7 +124,7 @@ if ($totrows > 0) {
}
}
$body .= '<big><big><b>RIEPILOGO INTERVENTI DAL '.Translator::dateToLocale($_SESSION['period_start']).' al '.Translator::dateToLocale($_SESSION['period_end'])."</b></big></big><br/><br/>\n";
$body .= '<big><big><b>RIEPILOGO INTERVENTI DAL '.Translator::dateToLocale($date_start).' al '.Translator::dateToLocale($date_end)."</b></big></big><br/><br/>\n";
// Sostituisco i valori tra | | con il valore del campo del db
$body .= preg_replace('/|(.+?)|/', $rsi[0]['${1}'], $body);

View File

@ -4,6 +4,9 @@ include_once __DIR__.'/../../core.php';
$module_name = 'Scadenzario';
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
// carica report html
$report = file_get_contents($docroot.'/templates/scadenzario/scadenzario.html');
$body = file_get_contents($docroot.'/templates/scadenzario/scadenzario_body.html');
@ -24,7 +27,7 @@ if ($_GET['type'] == 'clienti') {
$add_where = '';
}
$body .= '<h3>'.$titolo.' dal '.Translator::dateToLocale($_SESSION['period_start']).' al '.Translator::dateToLocale($_SESSION['period_end'])."</h3>\n";
$body .= '<h3>'.$titolo.' dal '.Translator::dateToLocale($date_start).' al '.Translator::dateToLocale($date_end)."</h3>\n";
$body .= "<table class=\"table_values\" cellspacing=\"0\" border=\"0\" cellpadding=\"0\" style=\"table-layout:fixed; border-color:#aaa;\">\n";
$body .= "<col width=\"300\"><col width=\"200\"><col width=\"150\"><col width=\"50\"><col width=\"70\"><col width=\"70\">\n";
@ -46,7 +49,7 @@ $rs = $dbo->fetchArray("SELECT co_scadenziario.id AS id, ragione_sociale AS `Ana
INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica
INNER JOIN co_pagamenti ON co_documenti.idpagamento=co_pagamenti.id
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id
WHERE ABS(pagato) < ABS(da_pagare) ".$add_where." AND scadenza >= '".$_SESSION['period_start']."' AND scadenza <= '".$_SESSION['period_end']."' ORDER BY scadenza ASC");
WHERE ABS(pagato) < ABS(da_pagare) ".$add_where." AND scadenza >= '".$date_start."' AND scadenza <= '".$date_end."' ORDER BY scadenza ASC");
for ($i = 0; $i < sizeof($rs); ++$i) {
$body .= ' <tr>';

View File

@ -4,11 +4,14 @@ include_once __DIR__.'/../../core.php';
$report_name = 'spesometro.pdf';
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
// Intestazione tabella per righe
echo "
<h3 class='text-bold'>".tr('Spesometro dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($_SESSION['period_start']),
'_END_' => Translator::dateToLocale($_SESSION['period_end']),
'_START_' => Translator::dateToLocale($date_start),
'_END_' => Translator::dateToLocale($date_end),
], ['upper' => true])."</h3>
<table class='table table-bordered'>
@ -30,9 +33,6 @@ $imponibile = [];
$iva = [];
$totale = [];
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
$anagrafiche = $dbo->fetchArray('SELECT idanagrafica, piva, ragione_sociale FROM `an_anagrafiche` WHERE `idanagrafica` IN (SELECT DISTINCT `idanagrafica` FROM `co_documenti` WHERE co_documenti.data>='.prepare($date_start).' AND co_documenti.data<='.prepare($date_end).' AND `co_documenti`.`id` IN (SELECT `iddocumento` FROM co_movimenti WHERE primanota = 1)) ORDER BY `ragione_sociale`');
foreach ($anagrafiche as $i => $anagrafica) {