Skip to content

Commit d6bb6db

Browse files
committed
refactor: ottimizzazione modulo Statistiche vendita
1 parent 4d5625b commit d6bb6db

1 file changed

Lines changed: 65 additions & 3 deletions

File tree

update/2_9_2.sql

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,74 @@
22
ALTER TABLE `zz_otp_tokens` CHANGE `permessi` `permessi` ENUM('r','rw','ra','rwa') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL;
33

44
-- Nuovo sottomodulo "Statistiche vendita" sotto Articoli
5-
INSERT INTO `zz_modules` (`name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`)
6-
SELECT 'Statistiche vendita', 'statistiche_vendita', '{"main_query": [{"type": "table", "fields": "Articolo, Q.tà, Percentuale tot., Totale", "query": "SELECT (SELECT `id` FROM `zz_modules` WHERE `name` = "Articoli") AS _link_module_, mg_articoli.id AS _link_record_, ROUND(SUM(IF(reversed=1, -co_righe_documenti.qta, co_righe_documenti.qta)),2) AS `Q.tà`, ROUND((SUM(IF(reversed=1, -co_righe_documenti.qta, co_righe_documenti.qta)) * 100 / (SELECT SUM(IF(reversed=1, -co_righe_documenti.qta, co_righe_documenti.qta)) 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" )),2) AS "Percentuale tot.", ROUND(SUM(IF(reversed=1, -(co_righe_documenti.subtotale - co_righe_documenti.sconto), (co_righe_documenti.subtotale - co_righe_documenti.sconto))),2) AS Totale, mg_articoli.id, CONCAT(mg_articoli.codice,' - ',mg_articoli_lang.title) AS Articolo FROM co_documenti INNER JOIN co_statidocumento ON co_statidocumento.id = co_documenti.idstatodocumento INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id LEFT JOIN co_statidocumento_lang ON (co_statidocumento.id = co_statidocumento_lang.id_record AND co_statidocumento_lang.id_lang = 1) 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 LEFT JOIN mg_articoli_lang ON (mg_articoli.id = mg_articoli_lang.id_record AND mg_articoli_lang.id_lang = 1) WHERE 1=1 AND co_tipidocumento.dir="entrata" AND (co_statidocumento_lang.title = "Pagato" OR co_statidocumento_lang.title = "Parzialmente pagato" OR co_statidocumento_lang.title = "Emessa" ) GROUP BY co_righe_documenti.idarticolo, mg_articoli_lang.title HAVING 2=2 ORDER BY SUM(IF(reversed=1, -co_righe_documenti.qta, co_righe_documenti.qta)) DESC"}]}', '', 'fa fa-chart-bar', '2.4.34', '2.*', '1', `id`, '1', '1', '0', '0'
7-
FROM `zz_modules` WHERE `name` = 'Articoli';
5+
SET @parent_id = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Articoli');
6+
INSERT INTO `zz_modules` (`name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`) VALUES
7+
('Statistiche vendita', 'statistiche_articoli',
8+
'SELECT
9+
|select|
10+
FROM
11+
`co_documenti`
12+
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
13+
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
14+
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`. |lang|)
15+
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
16+
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
17+
LEFT JOIN `mg_articoli_lang` ON (`mg_articoli`.`id` = `mg_articoli_lang`.`id_record` AND `mg_articoli_lang`. |lang|)
18+
LEFT JOIN (
19+
SELECT
20+
SUM(IF(`co_tipidocumento`.`reversed`=1, -`co_righe_documenti`.`qta`, `co_righe_documenti`.`qta`)) AS totale_qta_generale
21+
FROM
22+
`co_documenti`
23+
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
24+
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
25+
INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `co_righe_documenti`.`idarticolo`
26+
INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento`
27+
LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = |lang|)
28+
WHERE
29+
`co_tipidocumento`.`dir` = \'entrata\'
30+
AND (`co_statidocumento_lang`.`title` = \'Pagato\' OR `co_statidocumento_lang`.`title` = \'Parzialmente pagato\' OR `co_statidocumento_lang`.`title` = \'Emessa\')
31+
) AS `totali_generali` ON 1=1
32+
WHERE
33+
1=1
34+
AND `co_tipidocumento`.`dir` = \'entrata\'
35+
AND (`co_statidocumento_lang`.`title` = \'Pagato\' OR `co_statidocumento_lang`.`title` = \'Parzialmente pagato\' OR `co_statidocumento_lang`.`title` = \'Emessa\')
36+
GROUP BY
37+
`co_righe_documenti`.`idarticolo`, `mg_articoli_lang`.`title`
38+
HAVING
39+
2=2
40+
ORDER BY
41+
SUM(IF(`co_tipidocumento`.`reversed`=1, -`co_righe_documenti`.`qta`, `co_righe_documenti`.`qta`)) DESC',
42+
'', 'fa fa-circle-o', '2.9.0', '2.*', '1', @parent_id, '1', '1', '0', '0');
843

944
INSERT INTO `zz_modules_lang` (`id_lang`, `id_record`, `title`, `meta_title`) VALUES
1045
('1', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Statistiche vendita'), 'Statistiche vendita', 'Statistiche vendita'),
1146
('2', (SELECT `id` FROM `zz_modules` WHERE `name` = 'Statistiche vendita'), 'Sales statistics', 'Sales statistics');
1247

48+
-- Viste per il modulo Statistiche vendita
49+
SET @id_module_stat = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Statistiche vendita');
50+
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
51+
(@id_module_stat, 'id', '`mg_articoli`.`id`', 1, 1, 0, 0, '', '', 0, 0, 1),
52+
(@id_module_stat, '_link_module_', '(SELECT `id` FROM `zz_modules` WHERE `name` = \'Articoli\')', 2, 0, 0, 0, '', '', 0, 0, 1),
53+
(@id_module_stat, '_link_record_', '`mg_articoli`.`id`', 3, 0, 0, 0, '', '', 0, 0, 1),
54+
(@id_module_stat, 'Articolo', 'CONCAT(`mg_articoli`.`codice`, \' - \', `mg_articoli_lang`.`title`)', 4, 1, 0, 0, '', '', 1, 0, 1),
55+
(@id_module_stat, 'Q.ta', 'SUM(IF(`co_tipidocumento`.`reversed`=1, -`co_righe_documenti`.`qta`, `co_righe_documenti`.`qta`))', 5, 1, 0, 1, '', '', 1, 1, 1),
56+
(@id_module_stat, 'Percentuale Iva', 'ROUND((SUM(IF(`co_tipidocumento`.`reversed`=1, -`co_righe_documenti`.`qta`, `co_righe_documenti`.`qta`)) * 100 / `totali_generali`.`totale_qta_generale`), 2)', 6, 1, 0, 1, '', '', 1, 0, 1),
57+
(@id_module_stat, 'Totale', 'SUM(IF(`co_tipidocumento`.`reversed`=1, -(`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`), (`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto`)))', 7, 1, 0, 1, '', '', 1, 1, 1);
58+
59+
INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
60+
(1, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'id'), 'ID'),
61+
(2, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'id'), 'ID'),
62+
(1, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = '_link_module_'), '_link_module_'),
63+
(2, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = '_link_module_'), '_link_module_'),
64+
(1, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = '_link_record_'), '_link_record_'),
65+
(2, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = '_link_record_'), '_link_record_'),
66+
(1, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Articolo'), 'Articolo'),
67+
(2, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Articolo'), 'Article'),
68+
(1, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Q.ta'), 'Q.tà'),
69+
(2, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Q.ta'), 'Qty'),
70+
(1, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Percentuale Iva'), 'Percentuale Iva'),
71+
(2, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Percentuale Iva'), 'VAT Percentage'),
72+
(1, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Totale'), 'Totale'),
73+
(2, (SELECT `id` FROM `zz_views` WHERE `id_module` = @id_module_stat AND `name` = 'Totale'), 'Total');
74+
1375
DELETE FROM zz_plugins WHERE name = 'Statistiche vendita';

0 commit comments

Comments
 (0)