diff --git a/CHANGELOG.md b/CHANGELOG.md
index 20738c529..e3de2be53 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -31,7 +31,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- Possibilità di ripristinare gli elementi eliminati dove l'eliminazione avviene a livello virtuale (**Anagrafiche**)
- Plugin **Rinnovi** in **Contratti**
- Caricamento del **Piano dei conti** attraverso AJAX
- - Pannello *Prezzo medio acquisto* in **Articoli**
+ - Plugin *Statistiche* in **Articoli**, con visualizzazione del *Prezzo medio acquisto* in periodo personalizzabili
- Supporto ai select come **Campi personalizzati**
- Possibilità di generazione massiva delle fatture elettroniche
@@ -43,6 +43,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- Il modulo **Tecnici e tariffe** permette di definire le tariffe personalizzate per i diversi tecnici in relazione ai tipi di attività
- Il modulo **Contratti** permette di definire le tariffe personalizzate per le *nuove sessioni* delle attività collegate
- La sezione di modifica delle sessioni permette la modifica manuale delle tariffe interessate; il cambiamento del tipo di sessione provoca l'utilizzo delle tariffe definite da **Tecnici e tariffe**
+ - Ottimizzazione delle stampe **Scadenzario** e **Registro IVA**, e della tabella principale del modulp **Fatture di vendita**
### Fixed
diff --git a/config/namespaces.php b/config/namespaces.php
index ced5f7147..974ca80a2 100644
--- a/config/namespaces.php
+++ b/config/namespaces.php
@@ -21,4 +21,5 @@ return [
'plugins/exportFE' => 'Plugins\ExportFE',
'plugins/importFE' => 'Plugins\ImportFE',
'plugins/receiptFE' => 'Plugins\ReceiptFE',
+ 'plugins/statistiche_articoli' => 'Plugins\StatisticheArticoli',
];
diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php
index 2fd280556..cfcea1918 100644
--- a/modules/articoli/edit.php
+++ b/modules/articoli/edit.php
@@ -292,58 +292,6 @@ echo '
';
?>
-
-
-
'.tr('Prezzo medio acquisto').'
-
-
-';
-$rs_prezzo_medio = $dbo->fetchOne('SELECT ((SUM(subtotale)-SUM(sconto))/SUM(qta)) AS prezzo FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record));
-$rs_prezzo_min = $dbo->fetchOne('SELECT ((subtotale-sconto)/qta) AS prezzo, co_documenti.data FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record).' ORDER BY ((subtotale-sconto)/qta) ASC');
-$rs_prezzo_max = $dbo->fetchOne('SELECT ((subtotale-sconto)/qta) AS prezzo, co_documenti.data FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record).' ORDER BY ((subtotale-sconto)/qta) DESC');
-
-if (count($rs_prezzo_min) > 0) {
- echo '
-
-
-
-
- '.tr('Prezzo minimo').' |
- '.tr('Prezzio medio').' |
- '.tr('Prezzo massimo').' |
- '.tr('Oscillazione').' |
- '.tr('Oscillazione in %').' |
- '.tr('Andamento prezzo').' |
-
';
-
- echo '
-
- '.moneyFormat($rs_prezzo_min['prezzo']).' |
- '.moneyFormat($rs_prezzo_medio['prezzo']).' |
- '.moneyFormat($rs_prezzo_max['prezzo']).' |
- '.moneyFormat($rs_prezzo_max['prezzo'] - $rs_prezzo_min['prezzo']).' |
- '.Translator::numberToLocale(((($rs_prezzo_max['prezzo'] - $rs_prezzo_min['prezzo']) * 100) / $rs_prezzo_medio['prezzo']), '2').' % |
- '.((strtotime($rs_prezzo_min['data']) == strtotime($rs_prezzo_max['data'])) ? 'N.D.' : ((strtotime($rs_prezzo_min['data']) < strtotime($rs_prezzo_max['data'])) ? 'in aumento' : 'in diminuzione')).' |
-
';
-
- echo '
-
-
-
';
-} else {
- echo '
-
- '.tr('Questo articolo non è mai stato acquistato').'
-
';
-}
-
- echo '
-
- ';
-
-?>
{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )}
diff --git a/plugins/rinnovi_contratti/edit.php b/plugins/rinnovi_contratti/edit.php
index 8f9132265..8254b64e4 100644
--- a/plugins/rinnovi_contratti/edit.php
+++ b/plugins/rinnovi_contratti/edit.php
@@ -1,6 +1,6 @@
+ '.dateFormat($start).' - '.dateFormat($end).' |
+ '.moneyFormat($prezzo_min['prezzo']).' |
+ '.moneyFormat($prezzo_medio).' |
+ '.moneyFormat($prezzo_max['prezzo']).' |
+ '.moneyFormat($oscillazione).' |
+ '.Translator::numberToLocale($oscillazione_percentuale, '2').' % |
+ '.$andamento.' |
+';
diff --git a/plugins/statistiche_articoli/edit.php b/plugins/statistiche_articoli/edit.php
new file mode 100644
index 000000000..36dfd78ce
--- /dev/null
+++ b/plugins/statistiche_articoli/edit.php
@@ -0,0 +1,128 @@
+
+
+
+
+
+
'.tr('Prezzo medio acquisto').'
+
+
+
+
+
+
+ '.tr('Perido').' |
+ '.tr('Prezzo minimo').' |
+ '.tr('Prezzio medio').' |
+ '.tr('Prezzo massimo').' |
+ '.tr('Oscillazione').' |
+ '.tr('Oscillazione in %').' |
+ '.tr('Andamento prezzo').' |
+
+
+
+
+
+
+
+
+
+';
diff --git a/plugins/statistiche_articoli/src/Stats.php b/plugins/statistiche_articoli/src/Stats.php
new file mode 100644
index 000000000..4856e4533
--- /dev/null
+++ b/plugins/statistiche_articoli/src/Stats.php
@@ -0,0 +1,25 @@
+fetchOne('SELECT (SUM(subtotale) - SUM(sconto)) / SUM(qta) AS prezzo '.$from)['prezzo'];
+
+ $prezzo = 'SELECT (subtotale - sconto) / qta AS prezzo, co_documenti.data '.$from.' ORDER BY prezzo';
+ $prezzo_min = $database->fetchOne($prezzo.' ASC');
+ $prezzo_max = $database->fetchOne($prezzo.' DESC');
+
+ return [
+ 'media' => $prezzo_medio,
+ 'max' => $prezzo_max,
+ 'min' => $prezzo_min,
+ ];
+ }
+}
diff --git a/src/Prints.php b/src/Prints.php
index 30c3fa856..331ae1eab 100644
--- a/src/Prints.php
+++ b/src/Prints.php
@@ -510,6 +510,5 @@ class Prints
// Creazione effettiva del PDF
$mpdf->Output($filename, $mode);
-
}
}
diff --git a/templates/registro_iva/bottom.php b/templates/registro_iva/bottom.php
index 90033fabb..566bdd2e5 100644
--- a/templates/registro_iva/bottom.php
+++ b/templates/registro_iva/bottom.php
@@ -56,4 +56,3 @@ echo '
';
-
diff --git a/templates/registro_iva/init.php b/templates/registro_iva/init.php
index 0372aa833..424a9c905 100644
--- a/templates/registro_iva/init.php
+++ b/templates/registro_iva/init.php
@@ -7,7 +7,7 @@ $dir = $_GET['dir'];
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
-$tipo = $dir == 'entrata' ? 'vendite': 'acquisti';
+$tipo = $dir == 'entrata' ? 'vendite' : 'acquisti';
$report_name = 'registro_iva_'.$tipo.'.pdf';
$v_iva = [];
diff --git a/templates/registro_iva/top.php b/templates/registro_iva/top.php
index 8b45c0bc8..888e00999 100644
--- a/templates/registro_iva/top.php
+++ b/templates/registro_iva/top.php
@@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
$year_start = date('Y', strtotime($date_start));
$year_end = date('Y', strtotime($date_end));
-$esercizio = $year_start == $year_end ? ' - '.tr('Esercizio _YEAR_',[
+$esercizio = $year_start == $year_end ? ' - '.tr('Esercizio _YEAR_', [
'_YEAR_' => $year_end,
]) : '';
@@ -21,7 +21,7 @@ if ('entrata' == $dir) {
], ['upper' => true]);
}
-$tipo = $dir == "entrata" ? tr("Cliente") : tr("Fornitore");
+$tipo = $dir == 'entrata' ? tr('Cliente') : tr('Fornitore');
echo ''.$titolo.'
diff --git a/update/2_4_10.sql b/update/2_4_10.sql
index 0184df414..3867981bc 100644
--- a/update/2_4_10.sql
+++ b/update/2_4_10.sql
@@ -219,3 +219,6 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`
WHERE 1=1 AND ABS(`co_scadenziario`.`pagato`) < ABS(`co_scadenziario`.`da_pagare`) AND `co_statidocumento`.`descrizione` IN(''Emessa'',''Parzialmente pagato'')
HAVING 2=2
ORDER BY `scadenza` ASC' WHERE `name` = 'Scadenzario';
+
+-- Plugin Statistiche per Articoli
+INSERT INTO `zz_plugins` (`id`, `name`, `title`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options2`, `options`, `directory`, `help`) VALUES (NULL, 'Statistiche', 'Statistiche', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Articoli'), (SELECT `id` FROM `zz_modules` WHERE `name` = 'Articoli'), 'tab', '', 1, 0, 0, '', '', NULL, 'custom', 'statistiche_articoli', '');