diff --git a/ajax_dataload.php b/ajax_dataload.php
index e85d193f3..7657881c3 100644
--- a/ajax_dataload.php
+++ b/ajax_dataload.php
@@ -7,6 +7,7 @@ use Util\Query;
// Informazioni fondamentali
$columns = filter('columns');
$order = filter('order')[0];
+$draw_numer = intval(filter('draw'));
$order['column'] = $order['column'] - 1;
array_shift($columns);
@@ -32,6 +33,7 @@ $results = [
'recordsTotal' => 0,
'recordsFiltered' => 0,
'summable' => [],
+ 'draw' => $draw_numer,
];
$query = Query::getQuery($structure);
@@ -53,7 +55,9 @@ if (!empty($query)) {
$results['recordsFiltered'] = $data['count'];
// SOMME
- $results['summable'] = Util\Query::getSums($structure, $search);
+ if ($draw_numer == 1) {
+ $results['summable'] = Util\Query::getSums($structure, $search);
+ }
// Allineamento delle righe
$align = [];
diff --git a/include/top.php b/include/top.php
index 9059e86f5..7100b5a16 100644
--- a/include/top.php
+++ b/include/top.php
@@ -105,8 +105,6 @@ if (Auth::check()) {
id_module: \''.$id_module.'\',
id_record: \''.$id_record.'\',
- order_manager_id: \''.($dbo->isInstalled() ? Modules::get('Stato dei serivizi')['id'] : '').'\',
-
cifre_decimali: '.setting('Cifre decimali per importi').',
decimals: "'.formatter()->getNumberSeparators()['decimals'].'",
@@ -124,7 +122,9 @@ if (Auth::check()) {
ckeditorToolbar: [
["Undo","Redo","-","Cut","Copy","Paste","PasteText","PasteFromWord","-","Scayt", "-","Link","Unlink","-","Bold","Italic","Underline","Superscript","SpecialChar","HorizontalRule","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","NumberedList","BulletedList","Outdent","Indent","Blockquote","-","Styles","Format","Image","Table", "TextColor", "BGColor" ],
],
-
+
+ order_manager_id: \''.($dbo->isInstalled() ? Modules::get('Stato dei serivizi')['id'] : '').'\',
+ dataload_page_buffer: '.setting('Lunghezza in pagine del buffer Datatables').',
tempo_attesa_ricerche: '.setting('Tempo di attesa ricerche in secondi').',
};
';
diff --git a/lib/functions.js b/lib/functions.js
index a25a9fa6e..d662cf782 100644
--- a/lib/functions.js
+++ b/lib/functions.js
@@ -172,20 +172,24 @@ $(document).ready(function () {
});
$(".btn-select-all").click(function () {
- var table = $(document).find("#" + $(this).parent().parent().parent().data("target")).DataTable();
- $("#main_loading").show();
+ var id = $(document).find("#" + $(this).parent().parent().parent().data("target"));
+ var table = id.DataTable();
+ $("#main_loading").show();
table.clear().draw();
+ $(id).data('page-length', table.page.len());
+
table.page.len(-1).draw();
});
$(".btn-select-none").click(function () {
- var table = $(document).find("#" + $(this).parent().parent().parent().data("target")).DataTable();
+ var id = $(document).find("#" + $(this).parent().parent().parent().data("target"));
+ var table = id.DataTable();
table.rows().deselect();
- table.page.len(200);
+ table.page.len($(id).data('page-length'));
});
$(".bulk-action").click(function () {
@@ -623,14 +627,14 @@ function start_datatables() {
selector: 'td:first-child'
},
buttons: [{
- extend: 'csv',
- fieldSeparator: ";",
- exportOptions: {
- modifier: {
- selected: true
+ extend: 'csv',
+ fieldSeparator: ";",
+ exportOptions: {
+ modifier: {
+ selected: true
+ }
}
- }
- },
+ },
{
extend: 'copy',
exportOptions: {
@@ -689,7 +693,8 @@ function start_datatables() {
},
],
scroller: {
- loadingIndicator: true
+ loadingIndicator: true,
+ displayBuffer: globals.dataload_page_buffer,
},
ajax: {
url: "ajax_dataload.php?id_module=" + id_module + "&id_plugin=" + id_plugin + "&id_parent=" + id_parent,
@@ -699,8 +704,9 @@ function start_datatables() {
return data.data;
}
},
- initComplete: function () {
+ initComplete: function (settings) {
var api = this.api();
+
api.columns('.search').every(function () {
var column = this;
$('
')
@@ -753,7 +759,10 @@ function start_datatables() {
$('.deleteicon').on("click", function (e) {
reset($(this).parent().attr("id").replace("th_", ""));
- api.page.len(200).draw();
+
+ if (api.page.len() == -1){
+ api.page.len($(id).data('page-length'));
+ }
});
// Ricerca di base ereditata dalla sessione
@@ -827,7 +836,7 @@ function start_datatables() {
$(this.footer()).addClass("text-right");
$(this.footer()).attr("id", "summable");
$(this.footer()).html(sum.summable[i]);
- } else $(this.footer()).html(" ");
+ }
i++;
});
}
diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php
index 31e1c89b7..f0f30d379 100644
--- a/modules/ddt/edit.php
+++ b/modules/ddt/edit.php
@@ -170,7 +170,7 @@ $_SESSION['superselect']['idsede_destinazione'] = $record['idsede_destinazione']
$("#idvettore").attr("required", false);
$("#idvettore").attr("disabled", true);
$("label[for=idvettore]").text("");
- $("#idvettore").selectReset("");
+ $("#idvettore").selectReset("");
$("#idvettore").next().next().find("button.bound:nth-child(1)").prop("disabled", true);
}else{
$("#idvettore").attr("required", true);
diff --git a/modules/fatture/add_intervento.php b/modules/fatture/add_intervento.php
index a0cfd7dcc..d17e5317f 100644
--- a/modules/fatture/add_intervento.php
+++ b/modules/fatture/add_intervento.php
@@ -50,8 +50,8 @@ foreach ($rs as $key => $value) {
$rs[$key]['prezzo'] = Translator::numberToLocale($prezzo);
$rs[$key]['descrizione_intervento'] = strip_tags($rs[$key]['descrizione_intervento']);
- if($prezzo <= 0){
-unset($rs[$key]);
+ if ($prezzo <= 0) {
+ unset($rs[$key]);
}
}
diff --git a/modules/stato_servizi/modutil.php b/modules/stato_servizi/modutil.php
index a7ed23dfc..4b08a254b 100644
--- a/modules/stato_servizi/modutil.php
+++ b/modules/stato_servizi/modutil.php
@@ -57,8 +57,8 @@ function submodules($list, $depth = 0)
// Possibilità di disinstallare solo se il modulo non è tra quelli predefiniti
if (empty($sub['default'])) {
- $result .= "
-
+ $result .= '
+
";
} else {
diff --git a/src/Util/Query.php b/src/Util/Query.php
index 33f5a0d9d..f7922b142 100644
--- a/src/Util/Query.php
+++ b/src/Util/Query.php
@@ -81,6 +81,11 @@ class Query
}
$date_query = !empty($filters) && !empty(self::$segments) ? ' AND ('.implode(' OR ', $filters).')' : '';
+ // Sostituzione periodi temporali
+ preg_match('|segment\((.+?)\)|', $query, $matches);
+ $segment_name = !empty($matches[1]) ? $matches[1] : 'id_segment';
+ $segment_filter = !empty($matches[0]) ? $matches[0] : 'segment';
+
// Elenco delle sostituzioni
$replace = [
// Identificatori
@@ -96,7 +101,7 @@ class Query
'|period_end|' => $_SESSION['period_end'],
// Segmenti
- '|segment|' => !empty($segment) ? ' AND id_segment = '.prepare($segment) : '',
+ '|'.$segment_filter.'|' => !empty($segment) ? ' AND '.$segment_name.' = '.prepare($segment) : '',
];
// Sostituzione dei formati
diff --git a/update/2_4_10.php b/update/2_4_10.php
index a43a32bd0..4be3c326c 100644
--- a/update/2_4_10.php
+++ b/update/2_4_10.php
@@ -1,8 +1,8 @@
save();
diff --git a/update/2_4_10.sql b/update/2_4_10.sql
index eb15f8d54..505950bdb 100644
--- a/update/2_4_10.sql
+++ b/update/2_4_10.sql
@@ -89,9 +89,6 @@ UPDATE `mg_movimenti` SET `idsede_azienda` = (SELECT `idsede_partenza` FROM `dt_
UPDATE `mg_movimenti` SET `idsede_controparte` = (SELECT `idsede_destinazione` FROM `co_documenti` WHERE `co_documenti`.`id` = `mg_movimenti`.`iddocumento`) WHERE `iddocumento`!=0;
UPDATE `mg_movimenti` SET `idsede_azienda` = (SELECT `idsede_destinazione` FROM `co_documenti` WHERE `co_documenti`.`id` = `mg_movimenti`.`iddocumento`) WHERE `iddocumento`!=0;
--- Aggiungo LEFT e INNER JOIN per ottimizzare la query del modulo Fatture di vendita
-UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` LEFT OUTER JOIN ( SELECT `zz_emails`.`name`, `zz_operations`.`id_record` FROM `zz_operations` INNER JOIN `zz_emails` ON `zz_operations`.`id_email` = `zz_emails`.`id` INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id` AND `zz_modules`.`name` = \'Fatture di vendita\' AND `zz_operations`.`op` = \'send-email\' LIMIT 1) AS `email` ON `email`.`id_record` = `co_documenti`.`id` WHERE 1=1 AND `dir` = \'entrata\' |segment| AND `data` >= \'|period_start|\' AND `data` <= \'|period_end|\' HAVING 2=2 ORDER BY `data` DESC, CAST(numero_esterno AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Fatture di vendita';
-
-- Sistemo vista per icon_Inviata modulo Fatture di vendita
UPDATE `zz_views` SET `query` = 'IF(`email`.`name` IS NOT NULL, \'fa fa-envelope text-success\', \'\')' WHERE `zz_views`.`name` = 'icon_Inviata' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita') ;
@@ -185,3 +182,29 @@ ALTER TABLE `in_interventi_tecnici` CHANGE `idtipointervento` `idtipointervento`
UPDATE `in_tariffe` INNER JOIN `in_tipiintervento` ON `in_tariffe`.`idtipointervento` = `in_tipiintervento`.`codice` SET `in_tariffe`.`idtipointervento` = `in_tipiintervento`.`idtipointervento`;
ALTER TABLE `in_tariffe` CHANGE `idtipointervento` `idtipointervento` INT(11) NOT NULL, ADD FOREIGN KEY (`idtipointervento`) REFERENCES `in_tipiintervento`(`idtipointervento`);
+
+-- Ottimizzazione query Fatture
+UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti`
+ INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
+ INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
+ INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
+ LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice`
+ LEFT JOIN (SELECT `numero_esterno`, `id_segment` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN(SELECT `id` FROM `co_tipidocumento` WHERE `dir` = ''entrata'') AND `co_documenti`.`data` >= ''2019-01-01'' AND `co_documenti`.`data` <= ''2019-12-31'' GROUP BY `id_segment`, `numero_esterno` HAVING COUNT(`numero_esterno`) > 1) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment`
+ LEFT OUTER JOIN (SELECT `zz_emails`.`name`, `zz_operations`.`id_record` FROM `zz_operations` INNER JOIN `zz_emails` ON `zz_operations`.`id_email` = `zz_emails`.`id` INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id` AND `zz_modules`.`name` = ''Fatture di vendita'' AND `zz_operations`.`op` = ''send-email'' LIMIT 1) AS `email` ON `email`.`id_record` = `co_documenti`.`id`
+WHERE 1=1 AND `dir` = ''entrata'' |segment(co_documenti.id_segment)| AND `co_documenti`.`data` >= ''|period_start|'' AND `co_documenti`.`data` <= ''|period_end|''
+HAVING 2=2
+ORDER BY `co_documenti`.`data` DESC, CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC' WHERE `name` = 'Fatture di vendita';
+
+UPDATE `zz_views` SET `query` = 'IF(`dup`.`numero_esterno` IS NULL, '''', ''red'')' WHERE `name` = '_bg_' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = 'an_anagrafiche.idanagrafica' WHERE `name` = 'idanagrafica' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = 'IF(co_documenti.numero_esterno='''', co_documenti.numero, co_documenti.numero_esterno)', `order_by` ='CAST(co_documenti.numero_esterno AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = 'co_documenti.data' WHERE `name` = 'Data' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = 'an_anagrafiche.ragione_sociale' WHERE `name` = 'Ragione sociale' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = '(SELECT SUM(subtotale - sconto + iva + rivalsainps - ritenutaacconto) FROM co_righe_documenti WHERE co_righe_documenti.iddocumento=co_documenti.id GROUP BY iddocumento) + co_documenti.iva_rivalsainps' WHERE `name` = 'Totale' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = 'co_statidocumento.icona' WHERE `name` = 'icon_Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = 'co_statidocumento.descrizione' WHERE `name` = 'icon_title_Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = '`fe_stati_documento`.`icon`' WHERE `name` = 'icon_FE' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+UPDATE `zz_views` SET `query` = '`fe_stati_documento`.`descrizione`' WHERE `name` = 'icon_title_FE' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
+
+-- Impostazione per la lunghezza delle pagine Datatables
+INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Lunghezza in pagine del buffer Datatables', '200', 'decimal', 0, 'Generali', 1);