'; $start = $_SESSION['period_start']; $end = $_SESSION['period_end']; echo '

'.tr('Periodo dal _START_ al _END_', [ '_START_' => Translator::dateToLocale($start), '_END_' => Translator::dateToLocale($end), ]).'


'; // Differenza delle date in mesi $d1 = new DateTime($start); $d2 = new DateTime($end); $count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1; $fatturato = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); $entrate = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN co_movimenti ON co_movimenti.iddocumento=co_documenti.id AND primanota=1 WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); $uscite = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN co_movimenti ON co_movimenti.iddocumento=co_documenti.id AND primanota=1 WHERE co_tipidocumento.dir='uscita' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); $month = intval($d1->format('m')) - 1; for ($i = 0; $i < $count; ++$i) { $month = $month % 12; if (intval($fatturato[$i]['month']) != $month + 1) { array_splice($fatturato, $i, 0, [[ 'totale' => 0, ]]); } if (intval($entrate[$i]['month']) != $month + 1) { array_splice($entrate, $i, 0, [[ 'totale' => 0, ]]); } if (intval($uscite[$i]['month']) != $month + 1) { array_splice($uscite, $i, 0, [[ 'totale' => 0, ]]); } ++$month; } // Fatturato echo '

'.tr('Fatturato').'

'; // Script per il grafico del fatturato echo ' '; // Clienti top $clienti = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15'); echo '

'.tr('Clienti TOP').'

'; if (!empty($clienti)) { echo '
    '; foreach ($clienti as $cliente) { echo '
  • '.Modules::link('Anagrafiche', $cliente['idanagrafica'], tr('_PERSON_, con _TOT_ fatture', [ '_PERSON_' => $cliente['ragione_sociale'], '_TOT_' => intval($cliente['qta']), ])).' '.Translator::numberToLocale($cliente['totale']).' €
  • '; } echo '
'; } else { echo '

'.tr('Nessun articolo è stato venduto').'...

'; } echo '
'; // Articoli più venduti $articoli = $dbo->fetchArray("SELECT SUM(co_righe_documenti.qta) AS qta, mg_articoli.id, mg_articoli.codice, mg_articoli.descrizione, mg_articoli.um FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN mg_articoli ON mg_articoli.id=co_righe_documenti.idarticolo WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY co_righe_documenti.idarticolo ORDER BY SUM(co_righe_documenti.qta) DESC LIMIT 15'); echo '

'.tr('Articoli più venduti').'

'; if (!empty($articoli)) { echo '
    '; foreach ($articoli as $articolo) { echo '
  • '.Modules::link('Articoli', $articolo['id'], $articolo['codice'].' - '.$articolo['descrizione']).' '.Translator::numberToLocale($articolo['qta']).' '.$articolo['um'].'
  • '; } echo '
'; } else { echo '

'.tr('Nessun articolo è stato venduto').'...

'; } echo '
'; // Interventi per stato $stati = $dbo->fetchArray('SELECT * FROM `in_statiintervento`'); $dataset = ''; foreach ($stati as $stato) { $interventi = $dbo->fetchArray('SELECT COUNT(*) AS totale, YEAR(in_interventi.data_richiesta) AS year, MONTH(in_interventi.data_richiesta) AS month FROM in_interventi WHERE in_interventi.idstatointervento = '.prepare($stato['idstatointervento']).' AND in_interventi.data_richiesta BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(in_interventi.data_richiesta), MONTH(in_interventi.data_richiesta) ORDER BY YEAR(in_interventi.data_richiesta) ASC, MONTH(in_interventi.data_richiesta) ASC'); $month = intval($d1->format('m')) - 1; for ($i = 0; $i < $count; ++$i) { $month = $month % 12; if (intval($interventi[$i]['month']) != $month + 1) { array_splice($interventi, $i, 0, [[ 'totale' => 0, ]]); } ++$month; } $dataset .= '{ label: "'.$stato['descrizione'].'", backgroundColor: "'.$stato['colore'].'", data: [ '.implode(',', array_column($interventi, 'totale')).' ] },'; } echo '

'.tr('Interventi per stato').'

'; // Script per il grafico del fatturato echo ' ';