From 7d33f01b3492a3fc1132ea201b13cd1cdbe7a901 Mon Sep 17 00:00:00 2001 From: loviuz Date: Sun, 14 Apr 2019 01:52:30 +0200 Subject: [PATCH] Miglioramento plugin statistiche anagrafiche --- modules/anagrafiche/plugins/statistiche.php | 292 +++++++++----------- 1 file changed, 132 insertions(+), 160 deletions(-) diff --git a/modules/anagrafiche/plugins/statistiche.php b/modules/anagrafiche/plugins/statistiche.php index d6c6dcad9..73c4660e7 100644 --- a/modules/anagrafiche/plugins/statistiche.php +++ b/modules/anagrafiche/plugins/statistiche.php @@ -2,6 +2,86 @@ include_once __DIR__.'/../../../core.php'; + +// Preventivi +$rsi = $dbo->fetchArray('SELECT co_preventivi.id, data_accettazione AS data, ragione_sociale FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica WHERE co_preventivi.idanagrafica='.prepare($id_record).' AND default_revision = 1'); +$totale_preventivi = 0; + +for ($i = 0; $i < count($rsi); ++$i) { + $totale_preventivi = sum($totale_preventivi, Modules\Preventivi\Preventivo::find($rsi[$i]['id'])->imponibile_scontato); +} + +echo ' +
+
+
+ +
+ '.tr('Preventivi').' + '.( count($rsi) > 0 ? ''.tr('Visualizza').' ' : '' ).' +
+ + '.count($rsi).'
+ '.moneyFormat($totale_preventivi).' +
+
+
+
'; + +// Contratti +$rsi = $dbo->fetchArray('SELECT co_contratti.id, data_accettazione AS data, ragione_sociale FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_contratti.idanagrafica='.prepare($id_record)); + +$totale_contratti = 0; + +for ($i = 0; $i < count($rsi); ++$i) { + $totale_contratti = sum($totale_contratti, Modules\Contratti\Contratto::find($rsi[$i]['id'])->imponibile_scontato); +} + +echo ' +
+
+ +
+ '.tr('Contratti').' + '.( count($rsi) > 0 ? ''.tr('Visualizza').' ' : '' ).' +
+ + '.count($rsi).'
+ '.moneyFormat($totale_contratti).' +
+
+
+
'; + + +// Ordini cliente +$rsi = $dbo->fetchArray('SELECT or_ordini.id, data, ragione_sociale FROM or_ordini INNER JOIN an_anagrafiche ON or_ordini.idanagrafica=an_anagrafiche.idanagrafica WHERE or_ordini.idanagrafica='.prepare($id_record)); + +$totale_ordini_cliente = 0; + +for ($i = 0; $i < count($rsi); ++$i) { + $totale_ordini_cliente = sum($totale_ordini_cliente, Modules\Ordini\Ordine::find($rsi[$i]['id'])->imponibile_scontato); +} + +echo ' +
+
+ +
+ '.tr('Ordini cliente').' + '.( count($rsi) > 0 ? ''.tr('Visualizza').' ' : '' ).' +
+ + '.count($rsi).'
+ '.moneyFormat($totale_ordini_cliente).' +
+
+
+
+
'; + + + // Interventi $rsi = []; if (in_array('Cliente', explode(',', $record['tipianagrafica']))) { @@ -12,183 +92,75 @@ if (in_array('Cliente', explode(',', $record['tipianagrafica']))) { $rsi = $dbo->fetchArray('SELECT ragione_sociale, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data, (SELECT SUM(prezzo_ore_consuntivo+prezzo_km_consuntivo+prezzo_dirittochiamata) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id AND in_interventi_tecnici.idtecnico = '.prepare($id_record).' ) AS totale FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN in_interventi_tecnici ON in_interventi.id = in_interventi_tecnici.idintervento WHERE in_interventi_tecnici.idtecnico='.prepare($id_record)); } $totale_interventi = 0; -$data_start = strtotime('now'); for ($i = 0; $i < count($rsi); ++$i) { $totale_interventi += $rsi[$i]['totale']; - - // Calcolo data più bassa per la ricerca - if (strtotime($rsi[$i]['data']) < $data_start) { - $data_start = strtotime($rsi[$i]['data']); - } -} -echo ' -
-
-
-
-

'.tr('Interventi').'

-
-
'; -if (count($rsi) > 0) { - echo ' -

'.tr('Sono stati svolti _NUMBER_ interventi per un totale di _MONEY_', [ - '_NUMBER_' => count($rsi), - '_MONEY_' => moneyFormat($totale_interventi), - ]).'

-

'.tr('Visualizza').'

'; -} else { - echo ' -

'.tr('Nessun intervento').'.

'; } echo ' -
-
-
'; +
+
+
+ +
+ '.tr('Attività').' + '.( count($rsi) > 0 ? ''.tr('Visualizza').' ' : '' ).' +
+ + '.count($rsi).'
+ '.moneyFormat($totale_interventi).' +
+
+
+
'; -// Preventivi -$rsi = $dbo->fetchArray('SELECT co_preventivi.id AS idpreventivo, data_accettazione AS data, ragione_sociale FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica WHERE co_preventivi.idanagrafica='.prepare($id_record).' AND default_revision = 1'); -$totale_preventivi = 0; -$data_start = strtotime('now'); +// Ddt in uscita +$rsi = $dbo->fetchArray("SELECT id, data, ragione_sociale FROM dt_ddt INNER JOIN an_anagrafiche ON dt_ddt.idanagrafica=an_anagrafiche.idanagrafica WHERE idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir='entrata') AND dt_ddt.idanagrafica=".prepare($id_record)); + +$totale_ddt_uscita = 0; for ($i = 0; $i < count($rsi); ++$i) { - $totale_preventivi += get_imponibile_preventivo($rsi[$i]['idpreventivo']); - // Calcolo data più bassa per la ricerca - if (strtotime($rsi[$i]['data']) < $data_start) { - $data_start = strtotime($rsi[$i]['data']); - } + $totale_ddt_uscita = sum($totale_ddt_uscita, Modules\DDT\DDT::find($rsi[$i]['id'])->imponibile_scontato); } echo ' -
-
-
-

'.tr('Preventivi').'

-
-
'; -if (count($rsi) > 0) { - echo ' -

'.tr('Sono stati fatti _NUMBER_ preventivi per un totale di _MONEY_', [ - '_NUMBER_' => count($rsi), - '_MONEY_' => moneyFormat($totale_preventivi), - ]).'

-

'.tr('Visualizza').'

'; -} else { - echo ' -

'.tr('Nessun preventivo').'.

'; -} - -echo ' -
-
-
-
'; - -// Contratti -$rsi = $dbo->fetchArray('SELECT data_accettazione AS data, ragione_sociale, (SELECT SUM(co_righe_contratti.subtotale - co_righe_contratti.sconto) FROM co_righe_contratti WHERE co_righe_contratti.idcontratto = co_contratti.id) AS budget FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_contratti.idanagrafica='.prepare($id_record)); - -$totale_contratti = 0; -$data_start = strtotime(date('Ymd')); - -for ($i = 0; $i < count($rsi); ++$i) { - $totale_contratti += $rsi[$i]['budget']; - - // Calcolo data più bassa per la ricerca - if (strtotime($rsi[$i]['data']) < $data_start) { - $data_start = strtotime($rsi[$i]['data']); - } -} -echo ' -
-
-
-
-

'.tr('Contratti').'

-
-
'; -if (count($rsi) > 0) { - echo ' -

'.tr('Sono stati stipulati _NUMBER_ contratti per un totale di _MONEY_', [ - '_NUMBER_' => count($rsi), - '_MONEY_' => moneyFormat($totale_contratti), - ]).'

-

'.tr('Visualizza').'

'; -} else { - echo ' -

'.tr('Nessun contratto').'.

'; -} -echo ' -
-
-
'; - -// Fatture -echo ' -
-
-
-

'.tr('Fatture').'

-
-
'; +
+
+ +
+ '.tr('Ddt in uscita').' + '.( count($rsi) > 0 ? ''.tr('Visualizza').' ' : '' ).' +
+ + '.count($rsi).'
+ '.moneyFormat($totale_ddt_uscita).' +
+
+
+
'; // Fatture di vendita -$rsi = $dbo->fetchArray("SELECT id, data, ragione_sociale, (SELECT SUM(subtotale+iva) FROM co_righe_documenti WHERE iddocumento=co_documenti.id) AS totale FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') AND co_documenti.idanagrafica=".prepare($id_record)); +$rsi = $dbo->fetchArray("SELECT id, data, ragione_sociale FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') AND co_documenti.idanagrafica=".prepare($id_record)); $totale_fatture_vendita = 0; -$date_start = date('Y-01-01'); - -foreach ($rsi as $fattura) { - $totale_fatture_vendita = sum($totale_fatture_vendita, Modules\Fatture\Fattura::find($fattura['id'])->netto); - - // Calcolo data più bassa per la ricerca - if (strtotime($fattura['data']) < strtotime($date_start)) { - $date_start = $fattura['data']; - } -} - -if (count($rsi) > 0) { - echo ' -

'.tr('Sono state emesse _NUMBER_ fatture di vendita per un totale di _MONEY_', [ - '_NUMBER_' => count($rsi), - '_MONEY_' => moneyFormat($totale_fatture_vendita), - ]).'

-

'.tr('Visualizza').'

'; -} else { - echo ' -

'.tr('Nessuna fattura di vendita').'.

'; -} - -echo ' -
'; - -// Fatture di acquisto -$rsi = $dbo->fetchArray("SELECT data, ragione_sociale, (SELECT SUM(subtotale+iva) FROM co_righe_documenti WHERE iddocumento=co_documenti.id) AS totale FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='uscita') AND co_documenti.idanagrafica=".prepare($id_record)); - -$totale_fatture_acquisto = 0; -$date_start = date('Y-01-01'); for ($i = 0; $i < count($rsi); ++$i) { - $totale_fatture_acquisto += $rsi[$i]['totale']; + $totale_fatture_vendita = sum($totale_fatture_vendita, Modules\Fatture\Fattura::find($rsi[$i]['id'])->imponibile_scontato); +} - // Calcolo data più bassa per la ricerca - if (strtotime($rsi[$i]['data']) < strtotime($date_start)) { - $date_start = $rsi[$i]['data']; - } -} -if (count($rsi) > 0) { - echo ' -

'.tr('Sono state registrate _NUMBER_ fatture di acquisto per un totale di _MONEY_', [ - '_NUMBER_' => count($rsi), - '_TOT_' => moneyFormat($totale_fatture_acquisto), - ]).'

-

'.tr('Visualizza').'

'; -} else { - echo ' -

'.tr('Nessuna fattura di acquisto').'.

'; -} echo ' -
-
-
-
'; +
+
+ +
+ '.tr('Fatture').' + '.( count($rsi) > 0 ? ''.tr('Visualizza').' ' : '' ).' +
+ + '.count($rsi).'
+ '.moneyFormat($totale_fatture_vendita).' +
+
+
+
+
';