From 07008e92b7ec9ebf19b0a5eaa4f482e81c87489b Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Wed, 11 Jan 2023 18:02:09 +0100 Subject: [PATCH] Modifiche visualizzazione tabella listini clienti --- modules/listini_cliente/ajax/table.php | 38 +++++ modules/listini_cliente/edit.php | 179 ++++++++++------------- modules/listini_cliente/init.php | 1 - modules/listini_cliente/src/Articolo.php | 2 +- 4 files changed, 115 insertions(+), 105 deletions(-) create mode 100644 modules/listini_cliente/ajax/table.php diff --git a/modules/listini_cliente/ajax/table.php b/modules/listini_cliente/ajax/table.php new file mode 100644 index 000000000..fabe571e4 --- /dev/null +++ b/modules/listini_cliente/ajax/table.php @@ -0,0 +1,38 @@ +select('mg_listini_articoli', '*', ['id_listino' => $id_listino]); +$articoli = $dbo->fetchArray('SELECT mg_listini_articoli.*, mg_articoli.codice, mg_articoli.descrizione, mg_articoli.'.($prezzi_ivati ? 'minimo_vendita_ivato' : 'minimo_vendita').' AS minimo_vendita FROM mg_listini_articoli LEFT JOIN mg_articoli ON mg_listini_articoli.id_articolo=mg_articoli.id WHERE id_listino='.prepare($id_listino).' LIMIT '.filter('start').', '.filter('length')); + +foreach ($articoli as $articolo) { + $riga = [ + '', + Modules::link('Articoli', $articolo['id_articolo'], $articolo['codice'], null, ''), + $articolo['descrizione'], + '

'.dateFormat($articolo['data_scadenza']).'', + '

'.($articolo['minimo_vendita']!=0 ? moneyFormat($articolo['minimo_vendita']) : '-').'', + '

'.moneyFormat($articolo['prezzo_unitario']).'', + '

'.moneyFormat($articolo['prezzo_unitario_ivato']).'', + '

'.($articolo['sconto_percentuale']!=0 ? numberFormat($articolo['sconto_percentuale']).' %' : '-').'', + '

+ + + + +
', + ]; + + $righe[] = $riga; + $class[] = 'text-right'; +} + +// Formattazione dei dati +echo json_encode([ + 'data' => $righe, + 'recordsTotal' => sizeof($tot_articoli), + 'recordsFiltered' => sizeof($tot_articoli), + 'draw' => intval(filter('draw')), +]); \ No newline at end of file diff --git a/modules/listini_cliente/edit.php b/modules/listini_cliente/edit.php index aac437355..5f75aabd4 100644 --- a/modules/listini_cliente/edit.php +++ b/modules/listini_cliente/edit.php @@ -17,6 +17,8 @@ * along with this program. If not, see . */ + use Models\Module; + include_once __DIR__.'/../../core.php'; echo ' @@ -74,106 +76,49 @@ echo ' -
- +
+ - - - - - - - - - '; - - foreach ($articoli as $articolo) { - echo ' - - - + + + +
+
- '.tr('Codice').' - + + '.tr('Codice').'
+ {[ "type": "text", "size": "10", "name": "search_sconto", "placeholder": "'.tr('Filtra').'..." ]}
- '.tr('Descrizione').' - + '.tr('Descrizione').'
+ {[ "type": "text", "size": "30", "name": "search_sconto", "placeholder": "'.tr('Filtra').'..." ]}
- '.tr('Data scadenza').' - + + '.tr('Data scadenza').'
+ {[ "type": "text", "size": "3", "name": "search_sconto", "placeholder": "'.tr('Filtra').'..." ]}
- '.tr('Minimo').' - + + '.tr('Minimo').'
+ {[ "type": "text", "size": "3", "name": "search_sconto", "placeholder": "'.tr('Filtra').'..." ]}
- '.tr('Prezzo di listino').' - + + '.tr('Prezzo di listino').'
+ {[ "type": "text", "size": "3", "name": "search_sconto", "placeholder": "'.tr('Filtra').'..." ]}
- '.tr('Prezzo ivato').' - + + '.tr('Prezzo ivato').'
+ {[ "type": "text", "size": "3", "name": "search_sconto", "placeholder": "'.tr('Filtra').'..." ]}
- '.tr('Sconto').' - + + '.tr('Sconto').'
+ {[ "type": "text", "size": "3", "name": "search_sconto", "placeholder": "'.tr('Filtra').'..." ]}

#
- - - '.Modules::link('Articoli', $articolo['id_articolo'], $articolo['codice'], null, '').' -
- - '.$articolo['descrizione'].' - - - - '.dateFormat($articolo['data_scadenza']).' - - - - '.moneyFormat($articolo['minimo_vendita']).' - - - - '.moneyFormat($articolo['prezzo_unitario']).' - - - - '.moneyFormat($articolo['prezzo_unitario_ivato']).' - - - - '.numberFormat($articolo['sconto_percentuale']).' % - - - - - - - - - - - - '; - } - - if (empty($articoli)) { - echo ' - - - '.tr('Nessun articolo presente').' - - '; - } - - echo ' - - -
- -
+
+
@@ -195,9 +140,8 @@ echo ' } } - async function modificaArticolo(button) { + async function modificaArticolo(button, id) { let riga = $(button).closest("tr"); - let id = riga.data("id"); // Chiusura tooltip if ($(button).hasClass("tooltipstered")) @@ -236,6 +180,33 @@ echo ' } $(document).ready(function(){ + const table = $("#tablelistini").DataTable({ + language: globals.translations.datatables, + retrieve: true, + ordering: false, + searching: false, + paging: true, + order: [], + lengthChange: false, + processing: true, + serverSide: true, + ajax: { + url: "'.Module::pool('Listini cliente')->fileurl('ajax/table.php').'?id_listino='.$id_record.'", + type: "GET", + dataSrc: "data", + }, + searchDelay: 500, + pageLength: 15, + }); + + table.on("processing.dt", function (e, settings, processing) { + if (processing) { + $("#mini-loader").show(); + } else { + $("#mini-loader").hide(); + } + }); + $("input[id^=\'search_\']").keyup(function() { $("#tablelistini tr").each(function(){ $(this).show(); @@ -271,26 +242,28 @@ echo ' function getSelectData() { let data=new Array(); $(\'#tablelistini\').find(\'.check:checked\').each(function (){ - data.push($(this).closest(\'tr\').data(\'id\')); + data.push($(this).attr(\'id\')); }); return data; } - $(".check").on("change", function() { - let checked = 0; - $(".check").each(function() { - if ($(this).is(":checked")) { - checked = 1; + setTimeout(function () { + $(".check").on("change", function() { + let checked = 0; + $(".check").each(function() { + if ($(this).is(":checked")) { + checked = 1; + } + }); + + if (checked) { + $("#elimina_righe").removeClass("disabled"); + } else { + $("#elimina_righe").addClass("disabled"); } }); - - if (checked) { - $("#elimina_righe").removeClass("disabled"); - } else { - $("#elimina_righe").addClass("disabled"); - } - }); + }, 1000); $("#check_all").click(function(){ if( $(this).is(":checked") ){ diff --git a/modules/listini_cliente/init.php b/modules/listini_cliente/init.php index b6044104d..eee864012 100644 --- a/modules/listini_cliente/init.php +++ b/modules/listini_cliente/init.php @@ -26,5 +26,4 @@ if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `mg_listini` WHERE id='.prepare($id_record)); $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA'); - $articoli = $dbo->fetchArray('SELECT mg_listini_articoli.*, mg_articoli.codice, mg_articoli.descrizione, mg_articoli.'.($prezzi_ivati ? 'minimo_vendita_ivato' : 'minimo_vendita').' AS minimo_vendita FROM mg_listini_articoli LEFT JOIN mg_articoli ON mg_listini_articoli.id_articolo=mg_articoli.id WHERE id_listino='.prepare($id_record)); } diff --git a/modules/listini_cliente/src/Articolo.php b/modules/listini_cliente/src/Articolo.php index a434b5757..0dc407f21 100644 --- a/modules/listini_cliente/src/Articolo.php +++ b/modules/listini_cliente/src/Articolo.php @@ -60,7 +60,7 @@ class Articolo extends Model */ public function setPrezzoUnitario($prezzo_unitario) { - $id_iva = $this->articolo->idiva_vendita; + $id_iva = $this->articolo->idiva_vendita ?: setting('Iva predefinita'); // Calcolo prezzo di vendita ivato e non ivato $prezzi_ivati = ($this->dir == 'entrata' ? setting('Utilizza prezzi di vendita comprensivi di IVA') : 0);