From cd92e37d01c7d388ac5702df696778d6907040da Mon Sep 17 00:00:00 2001 From: valentina Date: Tue, 26 Nov 2024 17:48:54 +0100 Subject: [PATCH] fix: lentezza caricamento righe ddt --- modules/ddt/edit.php | 15 ------------ modules/ddt/init.php | 38 ++++++++++++++++++++++++++++++ modules/ddt/row-list.php | 51 ++++++++++++++++++++++++++++++---------- 3 files changed, 77 insertions(+), 27 deletions(-) diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php index ea0b4efcf..126bd5872 100755 --- a/modules/ddt/edit.php +++ b/modules/ddt/edit.php @@ -662,21 +662,6 @@ $("#link_form").bind("keypress", function(e) { // Collegamenti diretti // Fatture collegate a questo ddt -$elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento_lang`.`title` AS tipo_documento, IF(`co_tipidocumento`.`dir` = \'entrata\', \'Fatture di vendita\', \'Fatture di acquisto\') AS modulo -FROM `co_documenti` -INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id` -INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` -LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') -WHERE `co_righe_documenti`.`idddt` = '.prepare($id_record).' - -UNION -SELECT `in_interventi`.`id`, `in_interventi`.`data_richiesta`, `in_interventi`.`codice`, NULL, \'Attività\' AS tipo_documento, \'Interventi\' as modulo -FROM `in_interventi` -JOIN `in_righe_interventi` ON `in_righe_interventi`.`idintervento` = `in_interventi`.`id` -WHERE (`in_righe_interventi`.`original_document_id` = '.prepare($id_record).' AND `in_righe_interventi`.`original_document_type` = \'Modules\\\\DDT\\\\DDT\') - -ORDER BY `data`'); - if (!empty($elementi)) { echo '
diff --git a/modules/ddt/init.php b/modules/ddt/init.php index 60696c0ad..534171e54 100755 --- a/modules/ddt/init.php +++ b/modules/ddt/init.php @@ -62,4 +62,42 @@ if (!empty($id_record)) { if (!Auth::admin() && !in_array($record[$field_name], $user->sedi)) { $record['flag_completato'] = 1; } + + $elementi = $dbo->fetchArray('SELECT + `co_documenti`.`id`, + `co_documenti`.`data`, + `co_documenti`.`numero`, + `co_documenti`.`numero_esterno`, + `co_tipidocumento_lang`.`title` AS tipo_documento, + IF(`co_tipidocumento`.`dir` = \'entrata\', \'Fatture di vendita\', \'Fatture di acquisto\') AS modulo, + GROUP_CONCAT(CONCAT(`original_id`, " - ", `qta`) SEPARATOR ", ") AS righe + FROM + `co_documenti` + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` + LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') + WHERE + `co_righe_documenti`.`idddt` = '.prepare($id_record).' + GROUP BY + id + + UNION + + SELECT + `in_interventi`.`id`, + `in_interventi`.`data_richiesta`, + `in_interventi`.`codice`, + NULL, + \'Attività\' AS tipo_documento, + \'Interventi\' as modulo, + GROUP_CONCAT(CONCAT(`original_id`, " - ", `qta`) SEPARATOR ", ") AS righe + FROM + `in_interventi` + JOIN `in_righe_interventi` ON `in_righe_interventi`.`idintervento` = `in_interventi`.`id` + WHERE + (`in_righe_interventi`.`original_document_id` = '.prepare($id_record).' AND `in_righe_interventi`.`original_document_type` = \'Modules\\\\DDT\\\\DDT\') + GROUP BY + id + + ORDER BY `data`'); } diff --git a/modules/ddt/row-list.php b/modules/ddt/row-list.php index 7c51d95a1..4cf3f1900 100755 --- a/modules/ddt/row-list.php +++ b/modules/ddt/row-list.php @@ -26,6 +26,11 @@ $order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc']; $righe = $order_row_desc ? $ddt->getRighe()->sortByDesc('created_at') : $ddt->getRighe(); $colspan = $dir == 'entrata' ? '7' : '6'; +$evasione_bar = [ + 'Fatture di vendita' => 'success', + 'Interventi' => 'warning', +]; + echo '
@@ -162,18 +167,24 @@ foreach ($righe as $riga) { {[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->qta.'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": " numberFormat($riga->qta_evasa, 'qta'), '_TOT_' => numberFormat($riga->qta, 'qta')]).'\'>'.$riga->um.' ", "disabled": "'.($riga->isSconto() ? 1 : 0).'", "disabled": "'.($block_edit || $riga->isSconto()).'", "decimals": "qta" ]}
'; // Visualizzazione evasione righe per documento - $evasione_bar = []; - $evasione_bar['dt_righe_ddt'] = 'info'; - $evasione_bar['co_righe_documenti'] = 'primary'; - $evasione_bar['in_righe_interventi'] = 'warning'; - $evasione_bar['or_righe_ordini'] = 'success'; - foreach ($evasione_bar as $table => $color) { - $righe_ev = $dbo->table($table)->where('original_id', $riga->id)->where('original_type', $riga::class)->get(); - if ($righe_ev->count() > 0) { - $perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta ?: 1); - if ($perc_ev > 0) { - echo ' -
'; + $color = ''; + $valore_evaso = 0; + foreach ($elementi as $elemento) { + $righe_evase = explode(', ', $elemento['righe']); + $righe_evase_array = array_reduce($righe_evase, function($carry, $riga_evasa) { + list($id, $qta) = explode(' - ', $riga_evasa); + $carry[$id] = $qta; + return $carry; + }, []); + foreach ($righe_evase_array as $id => $qta) { + if ($id == $riga->id) { + $color = $evasione_bar[$elemento['modulo']]; + $valore_evaso = $qta; + $perc_ev = $valore_evaso * 100 / ($riga->qta ?: 1); + if ($perc_ev > 0) { + echo ' +
'; + } } } } @@ -425,6 +436,22 @@ if (!$block_edit && sizeof($righe) > 0) { echo '
+
+
+
+
'.tr('Quantità evasa in').':
+
+
+ +  '.tr('Fattura').' +
+
+ +  '.tr('Attività').' +
+
+
+