From 331e525ee9b4a28679888d3fa3375104249ee5ef Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 12 Feb 2024 19:17:33 +0100 Subject: [PATCH] Aggiunta colonna N. utenti abilitati e N. API abilitate Migliorato messaggio informativo per interventi non fatturati. --- include/init/update.php | 2 +- modules/interventi/bulk.php | 43 +++++++++++++++++++++++++++++++++++-- update/2_4_55.sql | 9 ++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/include/init/update.php b/include/init/update.php index 4ea019810..a9bf0f8a1 100755 --- a/include/init/update.php +++ b/include/init/update.php @@ -98,7 +98,7 @@ if (filter('action') == 'do_update') { // Istruzioni per la prima installazione if ($_GET['firstuse'] == 'true') { echo ' -

'.tr("E' fortemente consigliato rimuovere i permessi di scrittura dal file _FILE_", [ +

'.tr("Si consiglia di rimuovere i permessi di scrittura dal file _FILE_", [ '_FILE_' => 'config.inc.php', ]).'.

'; } diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index 9405ca818..c20c64048 100755 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -95,18 +95,57 @@ switch (post('op')) { $raggruppamento = post('raggruppamento'); $where = ''; - // Lettura interventi non collegati a preventivi, ordini e contratti + $query = 'SELECT *, IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id), in_interventi.data_richiesta) AS data, in_statiintervento.descrizione AS stato, in_interventi.codice AS codice_intervento FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id IN ('.implode(',', $id_records).')'; + + + // Se non è attiva la relativa impostazione considero solo interventi non collegati a contratti, ordini o preventivi (default) if (!setting('Permetti fatturazione delle attività collegate a contratti')) { $where = ' AND in_interventi.id_contratto IS NULL'; + + $num_interventi_collegati_a_contratti = $dbo->fetchArray($query.' '.'AND in_interventi.id_contratto IS NOT NULL'); + + if (count($num_interventi_collegati_a_contratti) >0){ + flash()->warning(tr('_NUM_ interventi collegati a contratti non sono stati fatturati. Puoi procedere alla fatturazione abilitando la relativa impostazione: _SETTING_', [ + '_NUM_' => count($num_interventi_collegati_a_contratti), + '_SETTING_' => Modules::link('Impostazioni', null, tr('Permetti fatturazione delle attività collegate a contratti'), true, null, true, null, "&search=Permetti fatturazione delle attività collegate a contratti"), + ])); + } } + if (!setting('Permetti fatturazione delle attività collegate a ordini')) { $where .= ' AND in_interventi.id_ordine IS NULL'; + + $num_interventi_collegati_a_ordini = $dbo->fetchArray($query.' '.'AND in_interventi.id_ordine IS NOT NULL'); + + if (count($num_interventi_collegati_a_ordini) >0){ + flash()->warning(tr('_NUM_ interventi collegati a ordini non sono stati fatturati. Puoi procedere alla fatturazione abilitando la relativa impostazione: _SETTING_', [ + '_NUM_' => count($num_interventi_collegati_a_ordini), + '_SETTING_' => Modules::link('Impostazioni', null, tr('Permetti fatturazione delle attività collegate a ordini'), true, null, true, null, "&search=Permetti fatturazione delle attività collegate a ordini"), + ])); + } + + } if (!setting('Permetti fatturazione delle attività collegate a preventivi')) { $where .= ' AND in_interventi.id_preventivo IS NULL'; + + $num_interventi_collegati_a_preventivi = $dbo->fetchArray($query.' '.'AND in_interventi.id_preventivo IS NOT NULL'); + + if (count($num_interventi_collegati_a_preventivi) >0){ + flash()->warning(tr('_NUM_ interventi collegati a preventivi non sono stati fatturati. Puoi procedere alla fatturazione abilitando la relativa impostazione: _SETTING_', [ + '_NUM_' => count($num_interventi_collegati_a_preventivi), + '_SETTING_' => Modules::link('Impostazioni', null, tr('Permetti fatturazione delle attività collegate a preventivi'), true, null, true, null, "&search=Permetti fatturazione delle attività collegate a preventivi"), + ])); + } } - $interventi = $dbo->fetchArray('SELECT *, IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id), in_interventi.data_richiesta) AS data, in_statiintervento.descrizione AS stato, in_interventi.codice AS codice_intervento FROM in_interventi INNER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento WHERE in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND in_interventi.id IN ('.implode(',', $id_records).') '.$where); + $interventi = $dbo->fetchArray($query.' '.$where); + + + + + + // Lettura righe selezionate foreach ($interventi as $intervento) { diff --git a/update/2_4_55.sql b/update/2_4_55.sql index c8fec66b6..b4859a2f3 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -483,3 +483,12 @@ WHERE HAVING 2=2" WHERE `name` = 'Contratti'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_staticontratti_lang`.`name`' WHERE `zz_modules`.`name` = 'Contratti' AND `zz_views`.`name` = 'icon_title_Stato'; + +-- Aggiunta colonna N. utenti abilitati e N. API abilitate +UPDATE `zz_modules` SET `options` = 'SELECT\n |select|\nFROM \n `zz_groups` \n LEFT JOIN (SELECT `zz_users`.`idgruppo`, COUNT(`id`) AS num FROM `zz_users` GROUP BY `idgruppo`) AS utenti ON `zz_groups`.`id`=`utenti`.`idgruppo`\n LEFT JOIN (SELECT `zz_users`.`idgruppo`, COUNT(`id`) AS num FROM `zz_users` WHERE `zz_users`. `enabled` = 1 GROUP BY `idgruppo`) AS utenti_abilitati ON `zz_groups`.`id`=`utenti`.`idgruppo`\n LEFT JOIN (SELECT `zz_users`.`idgruppo`, COUNT(`zz_tokens`.`id`) AS num FROM `zz_users` INNER JOIN `zz_tokens` ON `zz_users`.`id` = `zz_tokens`.`id_utente` WHERE `zz_tokens`. `enabled` = 1 GROUP BY `idgruppo`) AS api_abilitate ON `zz_groups`.`id`=`utenti`.`idgruppo`\n LEFT JOIN (SELECT `zz_modules`.`title`, `zz_modules`.`id` FROM `zz_modules`) AS `module` ON `module`.`id`=`zz_groups`.`id_module_start`\nWHERE \n 1=1\nHAVING \n 2=2 \nORDER BY \n `id`, \n `nome` ASC' WHERE `zz_modules`.`name` = 'Utenti e permessi'; + +-- Aggiunta colonna N. utenti abilitati +INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Utenti e permessi'), 'N. utenti abilitati', '`utenti_abilitati`.`num`', '3', '1', '0', '0', '0', '', '', '1', '0', '0'); + +-- Aggiunta colonna N. API abilitate +INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Utenti e permessi'), 'N. API abilitate', '`api_abilitate`.`num`', '3', '1', '0', '0', '0', '', '', '1', '0', '0'); \ No newline at end of file