From 421a893491f3efacbe952c470a2b8563bfae9f24 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Tue, 22 Nov 2022 17:38:20 +0100 Subject: [PATCH] Ottimizzazione query vista Fatture di acquisto --- update/2_4_38.sql | 69 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/update/2_4_38.sql b/update/2_4_38.sql index 0c0d9add6..0e095a7d4 100644 --- a/update/2_4_38.sql +++ b/update/2_4_38.sql @@ -415,4 +415,71 @@ WHERE GROUP BY `descrizione`, `id` HAVING - 2 = 2" WHERE `name` = 'Pagamenti'; \ No newline at end of file + 2 = 2" WHERE `name` = 'Pagamenti'; + + +-- Ottimizzazione query vista Fatture di acquisto +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'banche.descrizione' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Banca'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'conti.descrizione' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Conto'; +UPDATE `zz_modules` SET `options` = "SELECT + |select| +FROM + `co_documenti` +LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` +LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` +LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` +LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id` +LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id` +LEFT JOIN (SELECT co_banche.id, CONCAT(`nome`, ' - ', `iban`) AS descrizione FROM `co_banche`) AS banche ON `banche`.`id` = `co_documenti`.`id_banca_azienda` +LEFT JOIN (SELECT iddocumento, CONCAT(co_pianodeiconti3.descrizione) AS descrizione FROM co_righe_documenti INNER JOIN co_pianodeiconti3 ON co_pianodeiconti3.id = co_righe_documenti.idconto) AS conti ON conti.iddocumento = co_documenti.id +LEFT JOIN( + SELECT `iddocumento`, + SUM(`subtotale` - `sconto`) AS `totale_imponibile`, + SUM(`iva`) AS `iva` + FROM + `co_righe_documenti` + GROUP BY + `iddocumento` +) AS righe +ON + `co_documenti`.`id` = `righe`.`iddocumento` +LEFT JOIN( + SELECT COUNT(`d`.`id`) AS `conteggio`, + IF( + `d`.`numero_esterno` = '', + `d`.`numero`, + `d`.`numero_esterno` + ) AS `numero_documento`, + `d`.`idanagrafica` AS `anagrafica`, + `id_segment` + FROM + `co_documenti` AS `d` + LEFT JOIN `co_tipidocumento` AS `d_tipo` + ON + `d`.`idtipodocumento` = `d_tipo`.`id` + WHERE + 1 = 1 AND `d_tipo`.`dir` = 'uscita' AND( + '|period_start|' <= `d`.`data` AND '|period_end|' >= `d`.`data` OR '|period_start|' <= `d`.`data_competenza` AND '|period_end|' >= `d`.`data_competenza` + ) + GROUP BY + `id_segment`, + `numero_documento`, + `d`.`idanagrafica` +) AS `d` +ON + ( + `d`.`numero_documento` = IF( + `co_documenti`.`numero_esterno` = '', + `co_documenti`.`numero`, + `co_documenti`.`numero_esterno` + ) AND `d`.`anagrafica` = `co_documenti`.`idanagrafica` AND `d`.`id_segment` = `co_documenti`.`id_segment` + ) +WHERE + 1=1 +AND + `dir` = 'uscita' |segment(`co_documenti`.`id_segment`)||date_period(custom, '|period_start|' <= `co_documenti`.`data` AND '|period_end|' >= `co_documenti`.`data`, '|period_start|' <= `co_documenti`.`data_competenza` AND '|period_end|' >= `co_documenti`.`data_competenza` )| +HAVING + 2=2 +ORDER BY + `co_documenti`.`data` DESC, + CAST(IF(`co_documenti`.`numero` = '', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC" WHERE `name` = 'Fatture di acquisto';