From 9b04b5a05b5c45be863bfe31567ea939dfe00688 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Mon, 28 Nov 2022 14:50:21 +0100 Subject: [PATCH] Migliorie modulo listini clienti --- include/common/articolo.php | 1 + modules/articoli/ajax/complete.php | 4 +- modules/listini_cliente/actions.php | 12 +- modules/listini_cliente/add.php | 12 +- modules/listini_cliente/edit.php | 136 ++++++++++++++++-- .../modals/manage_articolo.php | 5 +- update/2_4_38.sql | 23 +-- 7 files changed, 164 insertions(+), 29 deletions(-) diff --git a/include/common/articolo.php b/include/common/articolo.php index 03897bd9b..7efe3e6e3 100755 --- a/include/common/articolo.php +++ b/include/common/articolo.php @@ -554,6 +554,7 @@ function aggiornaPrezzoArticolo(aggiorna = "") { } $("#prezzo_unitario").val(prezzo_previsto).trigger("change"); + $("#sconto").val(0).trigger("change"); // Aggiornamento automatico di guadagno e margine if (direzione === "entrata") { diff --git a/modules/articoli/ajax/complete.php b/modules/articoli/ajax/complete.php index 491652863..2396d6b17 100755 --- a/modules/articoli/ajax/complete.php +++ b/modules/articoli/ajax/complete.php @@ -149,7 +149,7 @@ switch ($resource) { FROM mg_listini LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino LEFT JOIN an_anagrafiche ON mg_listini.id=an_anagrafiche.id_listino - WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($direzione).' |where|'; + WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($direzione).' |where|'; $query_anagrafica = replace($query, [ '|where|' => ' AND idanagrafica = '.prepare($id_anagrafica), ]); @@ -160,7 +160,7 @@ switch ($resource) { '.($prezzi_ivati ? 'prezzo_unitario_ivato' : 'prezzo_unitario').' AS prezzo_unitario_listino_visibile FROM mg_listini LEFT JOIN mg_listini_articoli ON mg_listini.id=mg_listini_articoli.id_listino - WHERE mg_listini.is_sempre_visibile=1 AND id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($direzione); + WHERE mg_listini.data_attivazione<=NOW() AND mg_listini_articoli.data_scadenza>=NOW() AND mg_listini.attivo=1 AND mg_listini.is_sempre_visibile=1 AND id_articolo = '.prepare($id_articolo).' AND dir = '.prepare($direzione); $listini_sempre_visibili = $database->fetchArray($query); // Prezzi scheda articolo diff --git a/modules/listini_cliente/actions.php b/modules/listini_cliente/actions.php index c9c016e7c..629c8f5ab 100644 --- a/modules/listini_cliente/actions.php +++ b/modules/listini_cliente/actions.php @@ -29,6 +29,7 @@ switch (filter('op')) { $listino->data_attivazione = post('data_attivazione') ?: null; $listino->data_scadenza_predefinita = post('data_scadenza_predefinita') ?: null; $listino->is_sempre_visibile = post('is_sempre_visibile'); + $listino->attivo = post('attivo'); $listino->note = post('note'); $listino->save(); @@ -41,6 +42,7 @@ switch (filter('op')) { $listino->data_attivazione = post('data_attivazione') ?: null; $listino->data_scadenza_predefinita = post('data_scadenza_predefinita') ?: null; $listino->is_sempre_visibile = post('is_sempre_visibile'); + $listino->attivo = post('attivo'); $listino->note = post('note'); $listino->save(); @@ -72,10 +74,14 @@ switch (filter('op')) { break; case 'delete_articolo': - $articolo_listino = Articolo::find(post('id')); - $articolo_listino->delete(); + $id_righe = (array)post('id'); + + foreach ($id_righe as $id_riga) { + $articolo_listino = Articolo::find($id_riga); + $articolo_listino->delete(); + } - flash()->info(tr('Articolo del listino eliminato correttamente!')); + flash()->info(tr('Articoli del listino eliminati correttamente!')); break; diff --git a/modules/listini_cliente/add.php b/modules/listini_cliente/add.php index 17226bec8..da3d3fad9 100644 --- a/modules/listini_cliente/add.php +++ b/modules/listini_cliente/add.php @@ -25,7 +25,7 @@ echo '
-
+
{[ "type":"text", "label":"'.tr('Nome').'", "name":"nome", "required":"1" ]}
@@ -36,9 +36,15 @@ echo '
{[ "type":"date", "label":"'.tr('Data scadenza default').'", "name":"data_scadenza_predefinita" ]}
+
+ +
+
+ {[ "type":"checkbox", "label":"'.tr('Sempre visibile').'", "name":"is_sempre_visibile", "help": "'.tr('Se impostato il valore sarà sempre visibile sull\'articolo se il listino è attivo e la data di scadenza è ancora valida').'" ]} +
-
- {[ "type":"checkbox", "label":"'.tr('Sempre visibile').'", "name":"is_sempre_visibile", "help": "'.tr('Se attivo il valore sarà visibile sull\'articolo').'" ]} +
+ {[ "type":"checkbox", "label":"'.tr('Attivo').'", "name":"attivo", "value": "1" ]}
diff --git a/modules/listini_cliente/edit.php b/modules/listini_cliente/edit.php index 7d891afd1..aac437355 100644 --- a/modules/listini_cliente/edit.php +++ b/modules/listini_cliente/edit.php @@ -31,7 +31,7 @@ echo '
-
+
{[ "type":"text", "label":"'.tr('Nome').'", "name":"nome", "value":"$nome$", "required":"1" ]}
@@ -42,9 +42,15 @@ echo '
{[ "type":"date", "label":"'.tr('Data scadenza default').'", "name":"data_scadenza_predefinita", "value":"$data_scadenza_predefinita$" ]}
+
+ +
+
+ {[ "type":"checkbox", "label":"'.tr('Sempre visibile').'", "name":"is_sempre_visibile", "value":"$is_sempre_visibile$", "help": "'.tr('Se impostato il valore sarà sempre visibile sull\'articolo se il listino è attivo e la data di scadenza è ancora valida').'" ]} +
-
- {[ "type":"checkbox", "label":"'.tr('Sempre visibile').'", "name":"is_sempre_visibile", "value":"$is_sempre_visibile$", "help": "'.tr('Se attivo il valore sarà visibile sull\'articolo').'" ]} +
+ {[ "type":"checkbox", "label":"'.tr('Attivo').'", "name":"attivo", "value": "$attivo$" ]}
@@ -69,21 +75,48 @@ echo '
- +
- - - - - - - - + + + + + + + + + '; foreach ($articoli as $articolo) { echo ' + @@ -135,6 +168,12 @@ echo ' echo '
'.tr('Codice').''.tr('Descrizione').''.tr('Data scadenza').''.tr('Minimo').''.tr('Prezzo di listino').''.tr('Prezzo ivato').''.tr('Sconto').'# +
+
+ '.tr('Codice').' + + + '.tr('Descrizione').' + + + '.tr('Data scadenza').' + + + '.tr('Minimo').' + + + '.tr('Prezzo di listino').' + + + '.tr('Prezzo ivato').' + + + '.tr('Sconto').' + +
#
+ + '.Modules::link('Articoli', $articolo['id_articolo'], $articolo['codice'], null, '').'
+ +
+ +
@@ -195,4 +234,77 @@ echo ' }); }).catch(swal.noop); } + + $(document).ready(function(){ + $("input[id^=\'search_\']").keyup(function() { + $("#tablelistini tr").each(function(){ + $(this).show(); + }); + $("input[id^=\'search_\']").each(function(){ + var position = $(this).closest("th").index(); + var filter = $(this).val().toUpperCase(); + + var tr = $("#tablelistini tr"); + if(filter!=""){ + for (i = 0; i < tr.length; i++) { + td = tr[i].getElementsByTagName("td")[position]; + if (td) { + if (td.innerText.toUpperCase().indexOf(filter) <= -1) { + tr[i].style.display = "none"; + } + } + } + } + }); + if ($("#check_all").is(":checked")) { + $("#check_all").trigger("click"); + $(".check").each(function(){ + if ($(this).is(":checked")) { + $(this).trigger("click"); + } + }); + } + }); + }); + + // Estraggo le righe spuntate + function getSelectData() { + let data=new Array(); + $(\'#tablelistini\').find(\'.check:checked\').each(function (){ + data.push($(this).closest(\'tr\').data(\'id\')); + }); + + return data; + } + + $(".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"); + } + }); + + $("#check_all").click(function(){ + if( $(this).is(":checked") ){ + $(".check").each(function(){ + if( !$(this).is(":checked") ){ + $(this).trigger("click"); + } + }); + }else{ + $(".check").each(function(){ + if( $(this).is(":checked") ){ + $(this).trigger("click"); + } + }); + } + }); '; \ No newline at end of file diff --git a/modules/listini_cliente/modals/manage_articolo.php b/modules/listini_cliente/modals/manage_articolo.php index 54998e895..a768a3dce 100644 --- a/modules/listini_cliente/modals/manage_articolo.php +++ b/modules/listini_cliente/modals/manage_articolo.php @@ -71,4 +71,7 @@ echo ' '; echo ' -'; \ No newline at end of file +'; \ No newline at end of file diff --git a/update/2_4_38.sql b/update/2_4_38.sql index e8a9e81ca..b4e229906 100644 --- a/update/2_4_38.sql +++ b/update/2_4_38.sql @@ -4,7 +4,7 @@ ALTER TABLE `an_anagrafiche` CHANGE `idlistino_acquisti` `id_piano_sconto_acquis ALTER TABLE `an_anagrafiche` CHANGE `idlistino_vendite` `id_piano_sconto_vendite` INT(11) NULL DEFAULT NULL; ALTER TABLE `an_anagrafiche` ADD `id_listino` INT NOT NULL AFTER `id_piano_sconto_acquisti`; -CREATE TABLE `mg_listini` ( `id` INT NOT NULL AUTO_INCREMENT , `nome` VARCHAR(255) NOT NULL , `data_attivazione` DATE NULL , `data_scadenza_predefinita` DATE NULL , `is_sempre_visibile` BOOLEAN NOT NULL , `note` TEXT NOT NULL , `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `updated_at` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`id`)); +CREATE TABLE `mg_listini` ( `id` INT NOT NULL AUTO_INCREMENT , `nome` VARCHAR(255) NOT NULL , `data_attivazione` DATE NULL , `data_scadenza_predefinita` DATE NULL , `is_sempre_visibile` BOOLEAN NOT NULL , `attivo` BOOLEAN NOT NULL , `note` TEXT NOT NULL , `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `updated_at` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`id`)); CREATE TABLE `mg_listini_articoli` ( `id` INT NOT NULL AUTO_INCREMENT , `id_listino` INT NOT NULL, `id_articolo` INT NOT NULL , `data_scadenza` DATE NOT NULL , `prezzo_unitario` DECIMAL(15,6) NOT NULL , `prezzo_unitario_ivato` DECIMAL(15,6) NOT NULL , `sconto_percentuale` DECIMAL(15,6) NOT NULL , `dir` VARCHAR(20) NOT NULL , `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `updated_at` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`id`)); @@ -17,7 +17,9 @@ INSERT INTO `zz_views` ( `id_module`, `name`, `query`, `order`, `search`, `slow` ((SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'Articoli', '(SELECT COUNT(id) FROM mg_listini_articoli WHERE id_listino=mg_listini.id)', 4, 1, 0, 0, 0, '', '', 1, 0, 1), ((SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'Anagrafiche', '(SELECT COUNT(idanagrafica) FROM an_anagrafiche WHERE id_listino=mg_listini.id)', 5, 1, 0, 0, 0, '', '', 1, 0, 1), ((SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'Ultima modifica', '(SELECT username FROM zz_users WHERE id=(SELECT id_utente FROM zz_operations WHERE id_module=(SELECT id FROM zz_modules WHERE name=\'Listini cliente\') AND id_record=mg_listini.id ORDER BY id DESC LIMIT 0,1))', 6, 1, 0, 0, 0, '', '', 1, 0, 1), -((SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'Sempre visibile', 'IF(is_sempre_visibile=0,\'NO\',\'SÌ\')', 7, 1, 0, 0, 0, '', '', 1, 0, 1); +((SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'Sempre visibile', 'IF(is_sempre_visibile=0,\'NO\',\'SÌ\')', 7, 1, 0, 0, 0, '', '', 1, 0, 1), +((SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'Attivo', 'IF(attivo=0,\'NO\',\'SÌ\')', 7, 1, 0, 0, 0, '', '', 1, 0, 1); + UPDATE `zz_plugins` SET `title` = 'Netto clienti', `name` = 'Netto Clienti' WHERE `zz_plugins`.`name` = 'Listino Clienti'; @@ -627,22 +629,22 @@ CREATE TABLE `zz_group_segment` ( `id_gruppo` INT NOT NULL , `id_segment` INT NO ALTER TABLE `zz_segments` ADD `is_sezionale` TINYINT(1) NOT NULL AFTER `autofatture`; UPDATE `zz_segments` SET `predefined` = '0' WHERE `zz_segments`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Preventivi'); -INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `created_at`, `updated_at`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Preventivi'), 'Standard preventivi', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato codice preventivi'), '', '', '1', '0', '0', '0', '1', NULL, NULL, '0'); +INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Preventivi'), 'Standard preventivi', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato codice preventivi'), '', '', '1', '0', '0', '0', '1', '0'); UPDATE `zz_segments` SET `predefined` = '0' WHERE `zz_segments`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Contratti'); -INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `created_at`, `updated_at`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Contratti'), 'Standard contratti', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato codice contratti'), '', '', '1', '0', '0', '0', '1', NULL, NULL, '0'); +INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Contratti'), 'Standard contratti', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato codice contratti'), '', '', '1', '0', '0', '0', '1', '0'); UPDATE `zz_segments` SET `predefined` = '0' WHERE `zz_segments`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Ddt di acquisto'); -INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `created_at`, `updated_at`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ddt di acquisto'), 'Standard ddt in entrata', '1=1', 'WHR', '#', '', '', '1', '0', '0', '0', '1', NULL, NULL, '0'); +INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ddt di acquisto'), 'Standard ddt in entrata', '1=1', 'WHR', '#', '', '', '1', '0', '0', '0', '1', '0'); UPDATE `zz_segments` SET `predefined` = '0' WHERE `zz_segments`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Ddt di vendita'); -INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `created_at`, `updated_at`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ddt di vendita'), 'Standard ddt in uscita', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato numero secondario ddt'), '', '', '1', '0', '0', '0', '1', NULL, NULL, '0'); +INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ddt di vendita'), 'Standard ddt in uscita', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato numero secondario ddt'), '', '', '1', '0', '0', '0', '1', '0'); UPDATE `zz_segments` SET `predefined` = '0' WHERE `zz_segments`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Ordini cliente'); -INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `created_at`, `updated_at`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ordini cliente'), 'Standard ordini cliente', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato numero secondario ordine'), '', '', '1', '0', '0', '0', '1', NULL, NULL, '0'); +INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ordini cliente'), 'Standard ordini cliente', '1=1', 'WHR', (SELECT `valore` FROM `zz_settings` WHERE `nome`='Formato numero secondario ordine'), '', '', '1', '0', '0', '0', '1', '0'); UPDATE `zz_segments` SET `predefined` = '0' WHERE `zz_segments`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Ordini fornitore'); -INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `created_at`, `updated_at`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ordini fornitore'), 'Standard ordini fornitore', '1=1', 'WHR', '#', '', '', '1', '0', '0', '0', '1', NULL, NULL, '0'); +INSERT INTO `zz_segments` (`id_module`, `name`, `clause`, `position`, `pattern`, `note`, `dicitura_fissa`, `predefined`, `predefined_accredito`, `predefined_addebito`, `autofatture`, `is_sezionale`, `is_fiscale`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Ordini fornitore'), 'Standard ordini fornitore', '1=1', 'WHR', '#', '', '', '1', '0', '0', '0', '1', '0'); UPDATE `zz_segments` SET `predefined` = '0' WHERE `zz_segments`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Interventi'); UPDATE `zz_segments` SET `predefined` = '1', `is_sezionale` = '1', `name` = 'Standard attività' WHERE `zz_segments`.`name` = 'Tutti' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Interventi'); @@ -777,3 +779,8 @@ HAVING 2=2 ORDER BY `nome`" WHERE `name` = 'Piani di sconto/maggiorazione'; + +-- Aggiunti widget listini clienti +INSERT INTO `zz_widgets` (`id`, `name`, `type`, `id_module`, `location`, `class`, `query`, `bgcolor`, `icon`, `print_link`, `more_link`, `more_link_type`, `php_include`, `text`, `enabled`, `order`, `help`) VALUES (NULL, 'Listini attivi', 'stats', (SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'controller_top', 'col-md-6', 'SELECT COUNT(mg_listini.id) AS dato FROM mg_listini WHERE 1=1 AND attivo=1 HAVING 2=2', '#4ccc4c', 'fa fa-check', '', '', 'javascript', '', 'Listini attivi', '1', '1', NULL); + +INSERT INTO `zz_widgets` (`id`, `name`, `type`, `id_module`, `location`, `class`, `query`, `bgcolor`, `icon`, `print_link`, `more_link`, `more_link_type`, `php_include`, `text`, `enabled`, `order`, `help`) VALUES (NULL, 'Listini scaduti', 'stats', (SELECT `id` FROM `zz_modules` WHERE name='Listini cliente'), 'controller_top', 'col-md-6', 'SELECT COUNT(mg_listini.id) AS dato FROM mg_listini WHERE 1=1 AND attivo=0 HAVING 2=2', '#c62f2a', 'fa fa-times', '', '', 'javascript', '', 'Listini scaduti', '1', '2', NULL); \ No newline at end of file