From 36998c07a2101bb116b34ddbd4f389316ef32356 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Wed, 28 Feb 2024 16:28:53 +0100 Subject: [PATCH] Aggiunta tabella in_tipiintervento_lang --- modules/anagrafiche/ajax/select.php | 4 +- modules/anagrafiche/src/Anagrafica.php | 2 +- modules/contratti/actions.php | 18 ++-- modules/contratti/ajax.php | 2 +- modules/contratti/edit.php | 4 +- modules/dashboard/ajax.php | 102 +++++++++--------- modules/dashboard/edit.php | 2 +- modules/fasce_orarie/actions.php | 2 +- modules/fasce_orarie/edit.php | 2 +- modules/interventi/add.php | 4 +- modules/interventi/ajax/select.php | 8 +- modules/interventi/ajax_tecnici.php | 47 ++++---- modules/interventi/modals/manage_sessione.php | 4 +- modules/interventi/src/Import/CSV.php | 8 +- .../widgets/interventi_da_pianificare.php | 2 +- .../widgets/interventi_da_programmare.php | 2 +- modules/ordini/bulk.php | 2 +- modules/ordini/src/Ordine.php | 4 +- modules/preventivi/ajax.php | 2 +- modules/preventivi/ajax/select.php | 5 +- modules/statistiche/edit.php | 50 ++++----- modules/tecnici_tariffe/actions.php | 4 +- modules/tecnici_tariffe/init.php | 4 +- modules/tipi_intervento/actions.php | 8 +- modules/tipi_intervento/init.php | 2 +- .../src/API/v1/TipiInterventi.php | 1 - modules/tipi_intervento/src/Tipo.php | 33 +++++- .../pianificazione.php | 2 +- src/API/App/v1/TipiIntervento.php | 24 +++-- update/2_4_55.sql | 68 ++++++++++-- update/tables.php | 1 + 31 files changed, 257 insertions(+), 166 deletions(-) diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php index f169a69f8..c14bd84b0 100755 --- a/modules/anagrafiche/ajax/select.php +++ b/modules/anagrafiche/ajax/select.php @@ -32,7 +32,7 @@ switch ($resource) { `is_bloccata`, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'), IF(`is_bloccata` = 1, CONCAT(' (', `an_relazioni_lang`.`name`, ')'), ''),' - ', `an_anagrafiche`.`codice` ) AS descrizione, `idtipointervento_default` AS idtipointervento, - `in_tipiintervento`.`descrizione` AS idtipointervento_descrizione, + `in_tipiintervento_lang`.`name` AS idtipointervento_descrizione, `an_anagrafiche`.`idzona`, `contratto`.`id` AS id_contratto, `contratto`.`descrizione` AS descrizione_contratto, @@ -45,7 +45,7 @@ switch ($resource) { INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche`ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".setting('Lingua').')) - ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` LEFT JOIN `in_tipiintervento` ON `an_anagrafiche`.`idtipointervento_default`=`in_tipiintervento`.`idtipointervento` + ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` LEFT JOIN `in_tipiintervento` ON `an_anagrafiche`.`idtipointervento_default`=`in_tipiintervento`.`id` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id`=`in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang`='.prepare(setting('Lingua')).') LEFT JOIN `an_relazioni` ON `an_anagrafiche`.`idrelazione`=`an_relazioni`.`id` LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id`=`an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang`= '.setting('Lingua').") LEFT JOIN diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php index ea6b73dbc..bb025e3f5 100755 --- a/modules/anagrafiche/src/Anagrafica.php +++ b/modules/anagrafiche/src/Anagrafica.php @@ -134,7 +134,7 @@ class Anagrafica extends Model $presenti = $database->fetchArray('SELECT idtipointervento AS id FROM in_tariffe WHERE idtecnico = '.prepare($anagrafica->id)); // Aggiunta associazioni costi unitari al contratto - $tipi = TipoSessione::whereNotIn('idtipointervento', array_column($presenti, 'id'))->get(); + $tipi = TipoSessione::whereNotIn('id', array_column($presenti, 'id'))->get(); foreach ($tipi as $tipo) { $database->insert('in_tariffe', [ diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 4de7bff5f..7c436b79e 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -471,14 +471,14 @@ switch (post('op')) { // Se la riga in_tipiintervento esiste, la aggiorno... if (!empty($rs)) { - $result = $dbo->query('UPDATE co_contratti_tipiintervento SET ' - .' costo_ore=(SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), ' - .' costo_km=(SELECT costo_km FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), ' - .' costo_dirittochiamata=(SELECT costo_diritto_chiamata FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), ' - .' costo_ore_tecnico=(SELECT costo_orario_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), ' - .' costo_km_tecnico=(SELECT costo_km_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), ' - .' costo_dirittochiamata_tecnico=(SELECT costo_diritto_chiamata_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).') ' - .' WHERE idcontratto='.prepare(post('idcontratto')).' AND idtipointervento='.prepare(post('idtipointervento'))); + $result = $dbo->query('UPDATE `co_contratti_tipiintervento` SET ' + .' `costo_ore`=(SELECT `costo_orario` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), ' + .' `costo_km`=(SELECT `costo_km` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), ' + .' `costo_dirittochiamata`=(SELECT `costo_diritto_chiamata` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), ' + .' `costo_ore_tecnico`=(SELECT `costo_orario_tecnico` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), ' + .' `costo_km_tecnico`=(SELECT `costo_km_tecnico` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), ' + .' `costo_dirittochiamata_tecnico`=(SELECT `costo_diritto_chiamata_tecnico` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).') ' + .' WHERE `idcontratto`='.prepare(post('idcontratto')).' AND `id`='.prepare(post('idtipointervento'))); if ($result) { flash()->info(tr('Informazioni tariffe salvate correttamente!')); @@ -489,7 +489,7 @@ switch (post('op')) { // ...altrimenti la creo else { - if ($dbo->query('INSERT INTO co_contratti_tipiintervento( idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico ) VALUES( '.prepare(post('idcontratto')).', '.prepare(post('idtipointervento')).', (SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_km FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_diritto_chiamata FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_orario_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_km_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).'), (SELECT costo_diritto_chiamata_tecnico FROM in_tipiintervento WHERE idtipointervento='.prepare(post('idtipointervento')).') )')) { + if ($dbo->query('INSERT INTO `co_contratti_tipiintervento`(idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico ) VALUES( '.prepare(post('idcontratto')).', '.prepare(post('idtipointervento')).', (SELECT `costo_orario` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), (SELECT `costo_km` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), (SELECT `costo_diritto_chiamata` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), (SELECT `costo_orario_tecnico` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), (SELECT `costo_km_tecnico` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).'), (SELECT `costo_diritto_chiamata_tecnico` FROM `in_tipiintervento` WHERE `id`='.prepare(post('idtipointervento')).') )')) { flash()->info(tr('Informazioni tariffe salvate correttamente!')); } else { flash()->error(tr("Errore durante l'importazione tariffe!")); diff --git a/modules/contratti/ajax.php b/modules/contratti/ajax.php index 488a7d658..ac9a442ab 100755 --- a/modules/contratti/ajax.php +++ b/modules/contratti/ajax.php @@ -22,6 +22,6 @@ include_once __DIR__.'/../../core.php'; if (get('op') == 'get_costo_orario') { $idtipointervento = get('idtipointervento'); - $rs = $dbo->fetchArray('SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento)); + $rs = $dbo->fetchArray('SELECT `costo_orario` FROM `in_tipiintervento` WHERE `id`='.prepare($idtipointervento)); echo $rs[0]['costo_orario']; } diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 3391ba454..80a6f326a 100755 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -221,7 +221,7 @@ echo ' $idtipiintervento = ['-1']; // Loop fra i tipi di attività e i relativi costi del tipo intervento -$rs = $dbo->fetchArray('SELECT co_contratti_tipiintervento.*, in_tipiintervento.descrizione FROM co_contratti_tipiintervento INNER JOIN in_tipiintervento ON in_tipiintervento.idtipointervento = co_contratti_tipiintervento.idtipointervento WHERE idcontratto='.prepare($id_record).' AND (co_contratti_tipiintervento.costo_ore != in_tipiintervento.costo_orario OR co_contratti_tipiintervento.costo_km != in_tipiintervento.costo_km OR co_contratti_tipiintervento.costo_dirittochiamata != in_tipiintervento.costo_diritto_chiamata) ORDER BY in_tipiintervento.descrizione'); +$rs = $dbo->fetchArray('SELECT `co_contratti_tipiintervento`.*, `in_tipiintervento_lang`.`name` FROM `co_contratti_tipiintervento` INNER JOIN `in_tipiintervento` ON `in_tipiintervento`.`id` = `co_contratti_tipiintervento`.`idtipointervento` LEFT JOIN `in_tipiintervento_lang` ON `in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = "'.prepare(setting('Lingua')).'" WHERE `idcontratto`='.prepare($id_record).' AND (`co_contratti_tipiintervento`.`costo_ore` != `in_tipiintervento`.`costo_orario` OR `co_contratti_tipiintervento`.`costo_km` != `in_tipiintervento`.`costo_km` OR `co_contratti_tipiintervento`.`costo_dirittochiamata` != `in_tipiintervento`.`costo_diritto_chiamata`) ORDER BY `in_tipiintervento_lang`.`name`'); if (!empty($rs)) { echo ' @@ -272,7 +272,7 @@ echo '
'; // Loop fra i tipi di attività e i relativi costi del tipo intervento (quelli a 0) -$rs = $dbo->fetchArray('SELECT * FROM co_contratti_tipiintervento INNER JOIN in_tipiintervento ON in_tipiintervento.idtipointervento = co_contratti_tipiintervento.idtipointervento WHERE co_contratti_tipiintervento.idtipointervento NOT IN('.implode(',', $idtipiintervento).') AND idcontratto='.prepare($id_record).' ORDER BY descrizione'); +$rs = $dbo->fetchArray('SELECT * FROM `co_contratti_tipiintervento` INNER JOIN `in_tipiintervento` ON `in_tipiintervento`.`id` = `co_contratti_tipiintervento`.`idtipointervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id`=`in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_contratti_tipiintervento`.`idtipointervento` NOT IN('.implode(',', $idtipiintervento).') AND `idcontratto`='.prepare($id_record).' ORDER BY `name`'); if (!empty($rs)) { echo ' diff --git a/modules/dashboard/ajax.php b/modules/dashboard/ajax.php index 2c5f58bb8..974235c09 100644 --- a/modules/dashboard/ajax.php +++ b/modules/dashboard/ajax.php @@ -295,13 +295,14 @@ switch (filter('op')) { `in_statiintervento_lang`.`name` AS stato, `in_interventi`.`idtipointervento` AS parent_idtipo, (SELECT GROUP_CONCAT(CONCAT(`matricola`, " - ", `nome`) SEPARATOR ", ") FROM `my_impianti` INNER JOIN `my_impianti_interventi` ON `my_impianti`.`id`=`my_impianti_interventi`.`idimpianto` WHERE `my_impianti_interventi`.`idintervento`='.prepare($id).' GROUP BY `my_impianti_interventi`.`idintervento`) AS impianti, - `in_tipiintervento`.`descrizione` AS tipo, + `in_tipiintervento_lang`.`name` AS tipo, (SELECT idzona FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS idzona FROM `in_interventi` INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id` LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento_lang`.`id_record` = `in_statiintervento`.`id` AND `in_statiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') - INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento`=`in_tipiintervento`.`idtipointervento` + INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento`=`in_tipiintervento`.`id` + LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') LEFT JOIN `in_interventi_tecnici` ON `in_interventi`.`id` =`in_interventi_tecnici`.`idintervento` LEFT JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica` WHERE @@ -415,65 +416,70 @@ switch (filter('op')) { // Promemoria da contratti con stato pianificabile $query_promemoria_contratti = "SELECT - `co_promemoria`.`id`, - `idcontratto`, - `richiesta`, - `co_contratti`.`nome` AS nome_contratto, - `co_contratti`.`numero` AS numero_contratto, - `co_contratti`.`data_bozza` AS data_contratto, - DATE_FORMAT( `data_richiesta`, '%m%Y') AS mese, - `data_richiesta`, - `an_anagrafiche`.`ragione_sociale`, - 'promemoria' AS ref, - `in_tipiintervento`.`descrizione` AS tipo_intervento - FROM `co_promemoria` - INNER JOIN `co_contratti` ON `co_promemoria`.`idcontratto` = `co_contratti`.`id` - INNER JOIN `co_staticontratti` ON `co_contratti`.`idstato` = `co_staticontratti`.`id` - INNER JOIN `an_anagrafiche` ON `co_contratti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` - LEFT JOIN `in_tipiintervento` ON `co_promemoria`.`idtipointervento` = `in_tipiintervento`.`idtipointervento` - WHERE `idintervento` IS NULL AND `co_staticontratti`.`is_pianificabile` = 1 - ORDER BY `data_richiesta` ASC"; + `co_promemoria`.`id`, + `idcontratto`, + `richiesta`, + `co_contratti`.`nome` AS nome_contratto, + `co_contratti`.`numero` AS numero_contratto, + `co_contratti`.`data_bozza` AS data_contratto, + DATE_FORMAT( `data_richiesta`, '%m%Y') AS mese, + `data_richiesta`, + `an_anagrafiche`.`ragione_sociale`, + 'promemoria' AS ref, + `in_tipiintervento_lang`.`name` AS tipo_intervento + FROM + `co_promemoria` + INNER JOIN `co_contratti` ON `co_promemoria`.`idcontratto` = `co_contratti`.`id` + INNER JOIN `co_staticontratti` ON `co_contratti`.`idstato` = `co_staticontratti`.`id` + INNER JOIN `an_anagrafiche` ON `co_contratti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `in_tipiintervento` ON `co_promemoria`.`idtipointervento` = `in_tipiintervento`.`id` + LEFT JOIN `in_tipiintervento_lang` ON `in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare($lingua)." + WHERE + `idintervento` IS NULL AND `co_staticontratti`.`is_pianificabile` = 1 + ORDER BY + `data_richiesta` ASC"; $promemoria_contratti = $dbo->fetchArray($query_promemoria_contratti); // Promemoria da interventi con stato NON completato $query_interventi = "SELECT `in_interventi`.`id`, - `in_interventi`.`richiesta`, - `in_interventi`.`id_contratto` AS idcontratto, - `in_interventi_tecnici_assegnati`.`id_tecnico` AS id_tecnico, - `tecnico`.`ragione_sociale` AS ragione_sociale_tecnico, - DATE_FORMAT(IF(`in_interventi`.`data_scadenza` IS NULL, `in_interventi`.`data_richiesta`, `in_interventi`.`data_scadenza`), '%m%Y') AS mese, - IF(`in_interventi`.`data_scadenza` IS NULL, `in_interventi`.`data_richiesta`, `in_interventi`.`data_scadenza`) AS data_richiesta, - `in_interventi`.`data_scadenza`, - `an_anagrafiche`.`ragione_sociale`, - `tecnico`.`colore`, - 'intervento' AS ref, - `in_tipiintervento`.`descrizione` AS tipo_intervento - FROM - `in_interventi` - INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento` = `in_tipiintervento`.`idtipointervento` - INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`"; + `in_interventi`.`richiesta`, + `in_interventi`.`id_contratto` AS idcontratto, + `in_interventi_tecnici_assegnati`.`id_tecnico` AS id_tecnico, + `tecnico`.`ragione_sociale` AS ragione_sociale_tecnico, + DATE_FORMAT(IF(`in_interventi`.`data_scadenza` IS NULL, `in_interventi`.`data_richiesta`, `in_interventi`.`data_scadenza`), '%m%Y') AS mese, + IF(`in_interventi`.`data_scadenza` IS NULL, `in_interventi`.`data_richiesta`, `in_interventi`.`data_scadenza`) AS data_richiesta, + `in_interventi`.`data_scadenza`, + `an_anagrafiche`.`ragione_sociale`, + `tecnico`.`colore`, + 'intervento' AS ref, + `in_tipiintervento_lang`.`name` AS tipo_intervento + FROM + `in_interventi` + INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento` = `in_tipiintervento`.`id` + LEFT JOIN `in_tipiintervento_lang` ON `in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare($lingua)." + INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`"; // Visualizzo solo promemoria del tecnico loggato if (!empty($id_tecnico) && !empty($solo_promemoria_assegnati)) { $query_interventi .= ' - INNER JOIN `in_interventi_tecnici_assegnati` ON `in_interventi`.`id` = `in_interventi_tecnici_assegnati`.`id_intervento` AND `id_tecnico` = '.prepare($id_tecnico); + INNER JOIN `in_interventi_tecnici_assegnati` ON `in_interventi`.`id` = `in_interventi_tecnici_assegnati`.`id_intervento` AND `id_tecnico` = '.prepare($id_tecnico); } else { $query_interventi .= ' - LEFT JOIN `in_interventi_tecnici_assegnati` ON `in_interventi`.`id` = `in_interventi_tecnici_assegnati`.`id_intervento`'; + LEFT JOIN `in_interventi_tecnici_assegnati` ON `in_interventi`.`id` = `in_interventi_tecnici_assegnati`.`id_intervento`'; } $query_interventi .= ' - LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` - INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento` = `in_statiintervento`.`id` - LEFT JOIN `an_anagrafiche` AS tecnico ON `in_interventi_tecnici_assegnati`.`id_tecnico` = `tecnico`.`idanagrafica` - WHERE - `in_statiintervento`.`is_completato` = 0 - GROUP BY - `in_interventi`.`id`, `in_interventi_tecnici_assegnati`.`id_tecnico` - HAVING - COUNT(`in_interventi_tecnici`.`id`) = 0 - ORDER BY - `data_richiesta` ASC'; + LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` + INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento` = `in_statiintervento`.`id` + LEFT JOIN `an_anagrafiche` AS tecnico ON `in_interventi_tecnici_assegnati`.`id_tecnico` = `tecnico`.`idanagrafica` + WHERE + `in_statiintervento`.`is_completato` = 0 + GROUP BY + `in_interventi`.`id`, `in_interventi_tecnici_assegnati`.`id_tecnico` + HAVING + COUNT(`in_interventi_tecnici`.`id`) = 0 + ORDER BY + `data_richiesta` ASC'; $promemoria_interventi = $dbo->fetchArray($query_interventi); $promemoria = array_merge($promemoria_contratti, $promemoria_interventi); diff --git a/modules/dashboard/edit.php b/modules/dashboard/edit.php index 631ef1891..828898b5b 100755 --- a/modules/dashboard/edit.php +++ b/modules/dashboard/edit.php @@ -26,7 +26,7 @@ include_once __DIR__.'/../../core.php'; $stati_intervento = $dbo->fetchArray('SELECT `in_statiintervento`.`id`, `name` as descrizione, `colore` FROM `in_statiintervento` LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento_lang`.`id_record` = `in_statiintervento`.`id` AND `in_statiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `deleted_at` IS NULL ORDER BY `name` ASC'); // Tipi intervento -$tipi_intervento = $dbo->fetchArray('SELECT `idtipointervento` AS id, `descrizione` FROM `in_tipiintervento` WHERE `deleted_at` IS NULL ORDER BY `descrizione` ASC'); +$tipi_intervento = $dbo->fetchArray('SELECT `in_tipiintervento`.`id`, `in_tipiintervento_lang`.`name` AS descrizione FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `deleted_at` IS NULL ORDER BY `name` ASC'); // Tecnici disponibili $tecnici_disponibili = $dbo->fetchArray('SELECT diff --git a/modules/fasce_orarie/actions.php b/modules/fasce_orarie/actions.php index 15eefa780..0c612d3ee 100644 --- a/modules/fasce_orarie/actions.php +++ b/modules/fasce_orarie/actions.php @@ -75,7 +75,7 @@ switch (post('op')) { foreach ($tipi_intervento as $tipo_intervento) { $dbo->insert('in_fasceorarie_tipiintervento', [ 'idfasciaoraria' => $id_record, - 'idtipointervento' => $tipo_intervento['idtipointervento'], + 'idtipointervento' => $tipo_intervento['id'], 'costo_orario' => $tipo_intervento['costo_orario'], 'costo_km' => $tipo_intervento['costo_km'], 'costo_diritto_chiamata' => $tipo_intervento['costo_diritto_chiamata'], diff --git a/modules/fasce_orarie/edit.php b/modules/fasce_orarie/edit.php index c37bd829b..ddaa6ca92 100644 --- a/modules/fasce_orarie/edit.php +++ b/modules/fasce_orarie/edit.php @@ -140,7 +140,7 @@ function aggiungiData() { fetchArray('SELECT `in_tipiintervento`.`codice`, `in_tipiintervento`.`descrizione`, `in_tipiintervento`.`idtipointervento` FROM `in_tipiintervento` LEFT JOIN `in_fasceorarie_tipiintervento` ON `in_tipiintervento`.`idtipointervento`=`in_fasceorarie_tipiintervento`.`idtipointervento` WHERE `in_fasceorarie_tipiintervento`.`idfasciaoraria`='.prepare($id_record)); +$elementi = $dbo->fetchArray('SELECT `in_tipiintervento`.`codice`, `in_tipiintervento`.`descrizione`, `in_tipiintervento`.`id` FROM `in_tipiintervento` LEFT JOIN `in_fasceorarie_tipiintervento` ON `in_tipiintervento`.`id`=`in_fasceorarie_tipiintervento`.`idtipointervento` WHERE `in_fasceorarie_tipiintervento`.`idfasciaoraria`='.prepare($id_record)); if (!empty($elementi)) { echo ' diff --git a/modules/interventi/add.php b/modules/interventi/add.php index 3de0a3a58..4a36e7730 100755 --- a/modules/interventi/add.php +++ b/modules/interventi/add.php @@ -70,7 +70,7 @@ if (!empty($id_contratto) && !empty($id_promemoria_contratto)) { $id_zona = $contratto['idzona']; // Informazioni del Promemoria - $promemoria = $dbo->fetchOne('SELECT *, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_promemoria.idtipointervento) AS tempo_standard FROM co_promemoria WHERE idcontratto='.prepare($id_contratto).' AND id = '.prepare($id_promemoria_contratto)); + $promemoria = $dbo->fetchOne('SELECT *, (SELECT `tempo_standard` FROM `in_tipiintervento` WHERE `id` = `co_promemoria`.`idtipointervento`) AS tempo_standard FROM `co_promemoria` WHERE `idcontratto`='.prepare($id_contratto).' AND `co_promemoria`.`id` = '.prepare($id_promemoria_contratto)); $id_tipo = $promemoria['idtipointervento']; $data = filter('data') ?? $promemoria['data_richiesta']; $richiesta = $promemoria['richiesta']; @@ -94,7 +94,7 @@ if (!empty($id_contratto) && !empty($id_promemoria_contratto)) { // Gestione dell'aggiunta di una sessione a un Intervento senza sessioni (Promemoria intervento) da Dashboard elseif (!empty($id_intervento)) { - $intervento = $dbo->fetchOne('SELECT *, (SELECT idcontratto FROM co_promemoria WHERE idintervento = in_interventi.id LIMIT 0,1) AS idcontratto, in_interventi.id_preventivo as idpreventivo, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = in_interventi.idtipointervento) AS tempo_standard FROM in_interventi WHERE id = '.prepare($id_intervento)); + $intervento = $dbo->fetchOne('SELECT *, (SELECT `idcontratto` FROM `co_promemoria` WHERE `idintervento` = `in_interventi`.`id` LIMIT 0,1) AS idcontratto, `in_interventi`.`id_preventivo` as idpreventivo, (SELECT `tempo_standard` FROM `in_tipiintervento` WHERE `id` = `in_interventi`.`idtipointervento`) AS tempo_standard FROM `in_interventi` WHERE `id` = '.prepare($id_intervento)); $id_tipo = $intervento['idtipointervento']; $data = filter('data') ?? $intervento['data_richiesta']; diff --git a/modules/interventi/ajax/select.php b/modules/interventi/ajax/select.php index 1943aff2d..277ed4b92 100755 --- a/modules/interventi/ajax/select.php +++ b/modules/interventi/ajax/select.php @@ -21,18 +21,18 @@ include_once __DIR__.'/../../../core.php'; switch ($resource) { case 'tipiintervento': - $query = 'SELECT idtipointervento AS id, CASE WHEN ISNULL(tempo_standard) OR tempo_standard <= 0 THEN CONCAT(descrizione, IF(in_tipiintervento.deleted_at IS NULL, "", " ('.tr('eliminato').')")) WHEN tempo_standard > 0 THEN CONCAT(descrizione, \' (\', REPLACE(FORMAT(tempo_standard, 2), \'.\', \',\'), \' ore)\', IF(in_tipiintervento.deleted_at IS NULL, "", " ('.tr('eliminato').')")) END AS descrizione, tempo_standard FROM in_tipiintervento |where| ORDER BY descrizione'; + $query = 'SELECT `in_tipiintervento`.`id`, CASE WHEN ISNULL(`tempo_standard`) OR `tempo_standard` <= 0 THEN CONCAT(`name`, IF(`in_tipiintervento`.`deleted_at` IS NULL, "", " ('.tr('eliminato').')")) WHEN `tempo_standard` > 0 THEN CONCAT(`name`, \' (\', REPLACE(FORMAT(`tempo_standard`, 2), \'.\', \',\'), \' ore)\', IF(`in_tipiintervento`.`deleted_at` IS NULL, "", " ('.tr('eliminato').')")) END AS descrizione, `tempo_standard` FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `in_tipiintervento`.`deleted_at` IS NULL |where| ORDER BY `name`'; foreach ($elements as $element) { - $filter[] = 'idtipointervento='.prepare($element); + $filter[] = '`id_tipiintervento`.`id`='.prepare($element); } if (empty($filter)) { - $where[] = 'in_tipiintervento.deleted_at IS NULL'; + $where[] = '`in_tipiintervento`.`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`name` LIKE '.prepare('%'.$search.'%'); } break; diff --git a/modules/interventi/ajax_tecnici.php b/modules/interventi/ajax_tecnici.php index 37faf8506..ed3ee9aca 100755 --- a/modules/interventi/ajax_tecnici.php +++ b/modules/interventi/ajax_tecnici.php @@ -32,30 +32,29 @@ $is_completato = $rss[0]['flag_completato']; // Sessioni dell'intervento $query = 'SELECT - in_interventi_tecnici.*, - (in_interventi_tecnici.prezzo_ore_unitario * in_interventi_tecnici.ore - in_interventi_tecnici.sconto) AS prezzo_ore_consuntivo, - (in_interventi_tecnici.prezzo_km_unitario * in_interventi_tecnici.km - in_interventi_tecnici.scontokm) AS prezzo_km_consuntivo, - (in_interventi_tecnici.prezzo_ore_unitario_tecnico * in_interventi_tecnici.ore) AS prezzo_ore_consuntivo, - (in_interventi_tecnici.prezzo_km_unitario_tecnico * in_interventi_tecnici.km) AS prezzo_km_consuntivo, - an_anagrafiche.ragione_sociale, - an_anagrafiche.deleted_at AS anagrafica_deleted_at, - in_tipiintervento.deleted_at AS tipo_deleted_at, - in_tipiintervento.descrizione AS descrizione_tipo, - in_interventi_tecnici.tipo_scontokm AS tipo_sconto_km, - user.id AS id_user -FROM - in_interventi_tecnici INNER JOIN an_anagrafiche - ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica - LEFT JOIN (SELECT zz_users.idanagrafica, zz_users.id FROM zz_users GROUP BY zz_users.idanagrafica) AS user - ON user.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN in_tipiintervento - ON in_interventi_tecnici.idtipointervento = in_tipiintervento.idtipointervento -WHERE - in_interventi_tecnici.idintervento='.prepare($id_record).' -ORDER BY - ragione_sociale ASC, - in_interventi_tecnici.orario_inizio ASC, - in_interventi_tecnici.id ASC'; + `in_interventi_tecnici`.*, + (`in_interventi_tecnici`.`prezzo_ore_unitario` * `in_interventi_tecnici`.`ore` - `in_interventi_tecnici`.`sconto`) AS prezzo_ore_consuntivo, + (`in_interventi_tecnici`.`prezzo_km_unitario` * `in_interventi_tecnici`.`km` - `in_interventi_tecnici`.`scontokm`) AS prezzo_km_consuntivo, + (`in_interventi_tecnici`.`prezzo_ore_unitario_tecnico` * `in_interventi_tecnici`.`ore`) AS prezzo_ore_consuntivo, + (`in_interventi_tecnici`.`prezzo_km_unitario_tecnico` * `in_interventi_tecnici`.`km`) AS prezzo_km_consuntivo, + `an_anagrafiche`.`ragione_sociale`, + `an_anagrafiche`.`deleted_at` AS anagrafica_deleted_at, + `in_tipiintervento`.`deleted_at` AS tipo_deleted_at, + `in_tipiintervento_lang`.`name` AS descrizione_tipo, + `in_interventi_tecnici`.`tipo_scontokm` AS tipo_sconto_km, + `user`.`id` AS id_user + FROM + `in_interventi_tecnici` + INNER JOIN `an_anagrafiche` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN (SELECT `zz_users`.`idanagrafica`, `zz_users`.`id` FROM `zz_users` GROUP BY `zz_users`.`idanagrafica`) AS user ON `user`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `in_tipiintervento` ON `in_interventi_tecnici`.`idtipointervento` = `in_tipiintervento`.`id` + LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE + `in_interventi_tecnici`.`idintervento`='.prepare($id_record).' + ORDER BY + `ragione_sociale` ASC, + `in_interventi_tecnici`.`orario_inizio` ASC, + `in_interventi_tecnici`.`id` ASC'; $sessioni = $dbo->fetchArray($query); $prev_tecnico = ''; diff --git a/modules/interventi/modals/manage_sessione.php b/modules/interventi/modals/manage_sessione.php index 0fef6960b..0aef23409 100644 --- a/modules/interventi/modals/manage_sessione.php +++ b/modules/interventi/modals/manage_sessione.php @@ -36,9 +36,9 @@ $button = ' '.tr('Modifica'); $intervento = Intervento::find($id_record); if (!empty($intervento->id_contratto)) { - $query = 'SELECT in_tipiintervento.idtipointervento AS id, descrizione, co_contratti_tipiintervento.costo_ore AS prezzo_ore_unitario, co_contratti_tipiintervento.costo_km AS prezzo_km_unitario, co_contratti_tipiintervento.costo_dirittochiamata AS prezzo_dirittochiamata FROM in_tipiintervento JOIN co_contratti_tipiintervento ON in_tipiintervento.idtipointervento = co_contratti_tipiintervento.idtipointervento WHERE co_contratti_tipiintervento.idcontratto = '.prepare($intervento->id_contratto).' AND in_tipiintervento.deleted_at IS NULL ORDER BY descrizione'; + $query = 'SELECT `in_tipiintervento`.`id`, `name`, `co_contratti_tipiintervento`.`costo_ore` AS prezzo_ore_unitario, `co_contratti_tipiintervento`.`costo_km` AS prezzo_km_unitario, `co_contratti_tipiintervento`.`costo_dirittochiamata` AS prezzo_dirittochiamata FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `co_contratti_tipiintervento` ON `in_tipiintervento`.`id` = `co_contratti_tipiintervento`.`idtipointervento` WHERE `co_contratti_tipiintervento`.`idcontratto` = '.prepare($intervento->id_contratto).' AND `in_tipiintervento`.`deleted_at` IS NULL ORDER BY `name`'; } else { - $query = 'SELECT in_tipiintervento.idtipointervento AS id, descrizione, in_tariffe.costo_ore AS prezzo_ore_unitario, in_tariffe.costo_km AS prezzo_km_unitario, in_tariffe.costo_dirittochiamata AS prezzo_dirittochiamata FROM in_tipiintervento JOIN in_tariffe ON in_tipiintervento.idtipointervento = in_tariffe.idtipointervento WHERE in_tariffe.idtecnico = '.prepare($sessione['idtecnico']).' AND in_tipiintervento.deleted_at IS NULL ORDER BY descrizione'; + $query = 'SELECT `in_tipiintervento`.`id`, `name`, `in_tariffe`.`costo_ore` AS prezzo_ore_unitario, `in_tariffe`.`costo_km` AS prezzo_km_unitario, `in_tariffe`.`costo_dirittochiamata` AS prezzo_dirittochiamata FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `in_tariffe` ON `in_tipiintervento`.`id` = `in_tariffe`.`idtipointervento` WHERE `in_tariffe`.`idtecnico` = '.prepare($sessione['idtecnico']).' AND `in_tipiintervento`.`deleted_at` IS NULL ORDER BY `name`'; } echo '
diff --git a/modules/interventi/src/Import/CSV.php b/modules/interventi/src/Import/CSV.php index b13c70b03..72e3a5036 100644 --- a/modules/interventi/src/Import/CSV.php +++ b/modules/interventi/src/Import/CSV.php @@ -124,13 +124,9 @@ class CSV extends CSVImporter unset($record['tipo']); if (empty($record['stato'])) { - $stato = Stato::where('descrizione', 'Completato')->first(); + $stato = (new Stato())->getByName('Completato')->id_record; } else { - $stato = Stato::where('descrizione', $record['stato'])->first(); - } - - if (empty($stato)) { - $stato = Stato::build($record['stato']); + $stato = (new Stato())->getByName($record['stato'])->id_record; } unset($record['stato']); diff --git a/modules/interventi/widgets/interventi_da_pianificare.php b/modules/interventi/widgets/interventi_da_pianificare.php index 0a4150ad1..de4be0409 100755 --- a/modules/interventi/widgets/interventi_da_pianificare.php +++ b/modules/interventi/widgets/interventi_da_pianificare.php @@ -97,7 +97,7 @@ foreach ($raggruppamenti as $mese => $raggruppamento) { '.$rs_tecnici[0]['tecnici'].' - '.$dbo->fetchOne("SELECT CONCAT_WS(' - ', `codice`,`descrizione`) AS descrizione FROM `in_tipiintervento` WHERE `idtipointervento`=".prepare($r['idtipointervento']))['descrizione'].' + '.$dbo->fetchOne("SELECT CONCAT_WS(' - ', `codice`,`name`) AS descrizione FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `id`=".prepare($r['idtipointervento']))['descrizione'].' '.$dbo->fetchOne("SELECT CONCAT_WS(' - ', `codice`,`name`) AS descrizione FROM `in_statiintervento` LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento_lang`.`id_record` = `in_statiintervento`.`id` AND `in_statiintervento_lang`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `in_statiintervento`.`id`=".prepare($r['idstatointervento']))['descrizione'].' '.nl2br($r['richiesta']).' '; diff --git a/modules/interventi/widgets/interventi_da_programmare.php b/modules/interventi/widgets/interventi_da_programmare.php index 50df6e902..54c5ed53a 100755 --- a/modules/interventi/widgets/interventi_da_programmare.php +++ b/modules/interventi/widgets/interventi_da_programmare.php @@ -61,7 +61,7 @@ if (!empty($rs)) { '.$rs_tecnici[0]['tecnici'].' - '.$dbo->fetchOne("SELECT CONCAT_WS(' - ', codice,descrizione) AS descrizione FROM in_tipiintervento WHERE idtipointervento=".prepare($r['idtipointervento']))['descrizione'].' + '.$dbo->fetchOne("SELECT CONCAT_WS(' - ', `codice`, `name`) AS descrizione FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `id`=".prepare($r['idtipointervento']))['descrizione'].' '.nl2br($r['richiesta']).' '; diff --git a/modules/ordini/bulk.php b/modules/ordini/bulk.php index 58e0fb1f1..0103ef62e 100644 --- a/modules/ordini/bulk.php +++ b/modules/ordini/bulk.php @@ -50,7 +50,7 @@ switch (post('op')) { $tipo_documento = TipoFattura::where('id', post('idtipodocumento'))->first(); - $stato_documenti_accodabili = Stato::where('descrizione', 'Bozza')->first(); + $stato_documenti_accodabili = (new Stato())->getByName('Bozza')->id_record; $accodare = post('accodare'); $data = date('Y-m-d'); diff --git a/modules/ordini/src/Ordine.php b/modules/ordini/src/Ordine.php index 9c3502b35..2bad6f92a 100755 --- a/modules/ordini/src/Ordine.php +++ b/modules/ordini/src/Ordine.php @@ -56,7 +56,7 @@ class Ordine extends Document { $model = new static(); - $stato_documento = Stato::where('descrizione', 'Bozza')->first(); + $stato_documento = (new Stato())->getByName('Bozza')->id_record; $direzione = $tipo_documento->dir; $id_segment = $id_segment ?: getSegmentPredefined($model->getModule()->id); @@ -180,7 +180,7 @@ class Ordine extends Document $descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato'; } - $stato = Stato::where('descrizione', $descrizione)->first(); + $stato = (new Stato())->getByName($descrizione)->id_record; $this->stato()->associate($stato); $this->save(); } diff --git a/modules/preventivi/ajax.php b/modules/preventivi/ajax.php index 488a7d658..ac9a442ab 100755 --- a/modules/preventivi/ajax.php +++ b/modules/preventivi/ajax.php @@ -22,6 +22,6 @@ include_once __DIR__.'/../../core.php'; if (get('op') == 'get_costo_orario') { $idtipointervento = get('idtipointervento'); - $rs = $dbo->fetchArray('SELECT costo_orario FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento)); + $rs = $dbo->fetchArray('SELECT `costo_orario` FROM `in_tipiintervento` WHERE `id`='.prepare($idtipointervento)); echo $rs[0]['costo_orario']; } diff --git a/modules/preventivi/ajax/select.php b/modules/preventivi/ajax/select.php index 0dbdab911..56eeeef27 100755 --- a/modules/preventivi/ajax/select.php +++ b/modules/preventivi/ajax/select.php @@ -32,7 +32,7 @@ switch ($resource) { `an_anagrafiche`.`idanagrafica`, CONCAT("Preventivo ", numero, " del ", DATE_FORMAT(`data_bozza`, "%d/%m/%Y"), " - ", `co_preventivi`.`nome`, " [", `co_statipreventivi_lang`.`name` , "]") AS descrizione, `co_preventivi`.`idtipointervento`, - `in_tipiintervento`.`descrizione` AS idtipointervento_descrizione, + `in_tipiintervento_lang`.`name` AS idtipointervento_descrizione, `in_tipiintervento`.`tempo_standard` AS tempo_standard, (SELECT SUM(subtotale) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS totale, (SELECT SUM(sconto) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS sconto @@ -41,7 +41,8 @@ switch ($resource) { INNER JOIN `an_anagrafiche` ON `co_preventivi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica` INNER JOIN `co_statipreventivi` ON `co_preventivi`.`idstato`=`co_statipreventivi`.`id` LEFT JOIN `co_statipreventivi_lang` ON (`co_preventivi`.`idstato`=`co_statipreventivi_lang`.`id_record` AND `co_statipreventivi_lang`.`id_lang`='.prepare(setting('Lingua')).') - LEFT JOIN `in_tipiintervento` ON (`co_preventivi`.`idtipointervento`=`in_tipiintervento`.`idtipointervento`) + INNER JOIN `in_tipiintervento` ON (`co_preventivi`.`idtipointervento`=`in_tipiintervento`.`id`) + LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id`=`in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang`='.prepare(setting('Lingua')).') |where| ORDER BY `id`'; diff --git a/modules/statistiche/edit.php b/modules/statistiche/edit.php index 1be291b82..616585f4a 100755 --- a/modules/statistiche/edit.php +++ b/modules/statistiche/edit.php @@ -360,33 +360,33 @@ $tipi = $dbo->fetchArray('SELECT * FROM `in_tipiintervento`'); $dataset = ''; foreach ($tipi as $tipo) { $interventi = $dbo->fetchArray('SELECT - COUNT(in_interventi.id) AS result, - YEAR(sessioni.orario_fine) AS `year`, - MONTH(sessioni.orario_fine) AS `month` -FROM - in_interventi -LEFT JOIN( - SELECT - in_interventi_tecnici.idintervento, - MAX(orario_fine) AS orario_fine + COUNT(`in_interventi`.`id`) AS result, + YEAR(`sessioni`.`orario_fine`) AS `year`, + MONTH(`sessioni`.`orario_fine`) AS `month` FROM - in_interventi_tecnici + `in_interventi` + LEFT JOIN( + SELECT + `in_interventi_tecnici`.`idintervento`, + MAX(`orario_fine`) AS orario_fine + FROM + `in_interventi_tecnici` + GROUP BY + `idintervento` + ) sessioni + ON + `in_interventi`.`id` = `sessioni`.`idintervento` + WHERE + `in_interventi`.`idtipointervento` = '.prepare($tipo['idtipointervento']).' AND IFNULL( + `sessioni`.`orario_fine`, + `in_interventi`.`data_richiesta` + ) BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY - idintervento -) sessioni -ON - in_interventi.id = sessioni.idintervento -WHERE - in_interventi.idtipointervento = '.prepare($tipo['idtipointervento']).' AND IFNULL( - sessioni.orario_fine, - in_interventi.data_richiesta - ) BETWEEN '.prepare($start).' AND '.prepare($end).' -GROUP BY - YEAR(sessioni.orario_fine), - MONTH(sessioni.orario_fine) -ORDER BY - YEAR(sessioni.orario_fine) ASC, - MONTH(sessioni.orario_fine) ASC'); + YEAR(`sessioni`.`orario_fine`), + MONTH(`sessioni`.`orario_fine`) + ORDER BY + YEAR(`sessioni`.`orario_fine`) ASC, + MONTH(`sessioni`.`orario_fine`) ASC'); $interventi = Stats::monthly($interventi, $start, $end); diff --git a/modules/tecnici_tariffe/actions.php b/modules/tecnici_tariffe/actions.php index a3d1975da..9cfc74986 100755 --- a/modules/tecnici_tariffe/actions.php +++ b/modules/tecnici_tariffe/actions.php @@ -19,6 +19,8 @@ include_once __DIR__.'/../../core.php'; +use Modules\TipiIntervento\Tipo; + switch (post('op')) { case 'update': foreach ($tipi_interventi as $tipo_intervento) { @@ -47,7 +49,7 @@ switch (post('op')) { case 'import': $id_tipo_intervento = post('idtipointervento'); - $importi = $dbo->fetchOne('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($id_tipo_intervento)); + $importi = Tipo::find($id_tipo_intervento); $values = [ 'costo_ore' => $importi['costo_orario'], diff --git a/modules/tecnici_tariffe/init.php b/modules/tecnici_tariffe/init.php index b79dbd87f..5b0d5dbd7 100755 --- a/modules/tecnici_tariffe/init.php +++ b/modules/tecnici_tariffe/init.php @@ -20,7 +20,7 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT idanagrafica, ragione_sociale, colore FROM an_anagrafiche WHERE idanagrafica = '.prepare($id_record)); + $record = $dbo->fetchOne('SELECT `idanagrafica`, `ragione_sociale`, `colore` FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($id_record)); - $tipi_interventi = $dbo->fetchArray('SELECT *, in_tipiintervento.idtipointervento AS id, in_tariffe.idtipointervento AS esiste FROM in_tipiintervento LEFT JOIN in_tariffe ON in_tipiintervento.idtipointervento = in_tariffe.idtipointervento AND in_tariffe.idtecnico = '.prepare($id_record).' WHERE in_tipiintervento.deleted_at IS NULL ORDER BY descrizione'); + $tipi_interventi = $dbo->fetchArray('SELECT *, `in_tipiintervento`.`id`, `in_tariffe`.`idtipointervento` AS esiste FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') LEFT JOIN `in_tariffe` ON `in_tipiintervento`.`id` = `in_tariffe`.`idtipointervento` AND `in_tariffe`.`idtecnico` = '.prepare($id_record).' WHERE `in_tipiintervento`.`deleted_at` IS NULL ORDER BY `name`'); } diff --git a/modules/tipi_intervento/actions.php b/modules/tipi_intervento/actions.php index e5b436d63..90a753c65 100755 --- a/modules/tipi_intervento/actions.php +++ b/modules/tipi_intervento/actions.php @@ -99,17 +99,17 @@ switch (post('op')) { case 'delete': // Elimino le tariffe collegate ai vari tecnici - $query = 'DELETE FROM in_tariffe WHERE idtipointervento='.prepare($id_record); + $query = 'DELETE FROM `in_tariffe` WHERE `idtipointervento`='.prepare($id_record); $dbo->query($query); // Elimino le tariffe collegate ai contratti - $query = 'DELETE FROM co_contratti_tipiintervento WHERE idtipointervento='.prepare($id_record); + $query = 'DELETE FROM `co_contratti_tipiintervento` WHERE `idtipointervento`='.prepare($id_record); $dbo->query($query); - $query = 'DELETE FROM in_fasceorarie_tipiintervento WHERE idtipointervento='.prepare($id_record); + $query = 'DELETE FROM `in_fasceorarie_tipiintervento` WHERE `idtipointervento`='.prepare($id_record); $dbo->query($query); - $query = 'UPDATE `in_tipiintervento` SET deleted_at=NOW() WHERE idtipointervento='.prepare($id_record); + $query = 'UPDATE `in_tipiintervento` SET `deleted_at`=NOW() WHERE `id`='.prepare($id_record); $dbo->query($query); flash()->info(tr('Tipo di intervento eliminato!')); diff --git a/modules/tipi_intervento/init.php b/modules/tipi_intervento/init.php index 4785658f6..a86b9b132 100755 --- a/modules/tipi_intervento/init.php +++ b/modules/tipi_intervento/init.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; use Modules\TipiIntervento\Tipo; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `in_tipiintervento`.`id`='.prepare($id_record)); $tipo = Tipo::find($id_record); } diff --git a/modules/tipi_intervento/src/API/v1/TipiInterventi.php b/modules/tipi_intervento/src/API/v1/TipiInterventi.php index be6a3e0bd..1cf3be9c8 100755 --- a/modules/tipi_intervento/src/API/v1/TipiInterventi.php +++ b/modules/tipi_intervento/src/API/v1/TipiInterventi.php @@ -32,7 +32,6 @@ class TipiInterventi extends Resource implements RetrieveInterface if (empty($select)) { $select = [ '*', - 'id' => 'idtipointervento', ]; } diff --git a/modules/tipi_intervento/src/Tipo.php b/modules/tipi_intervento/src/Tipo.php index 1090c640c..9b816d3da 100755 --- a/modules/tipi_intervento/src/Tipo.php +++ b/modules/tipi_intervento/src/Tipo.php @@ -28,7 +28,6 @@ class Tipo extends Model use SimpleModelTrait; protected $table = 'in_tipiintervento'; - protected $primaryKey = 'idtipointervento'; /** * Crea un nuovo tipo di intervento. @@ -67,7 +66,7 @@ class Tipo extends Model */ public function getIdAttribute() { - return $this->idtipointervento; + return $this->id; } /** @@ -91,4 +90,34 @@ class Tipo extends Model { return $this->hasMany(Intervento::class, 'idtipointervento'); } + + /** + * Ritorna l'attributo name del tipo di intervento. + * + * @return string + */ + public function getNameAttribute() + { + return database()->table($this->table.'_lang') + ->select('name') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')) + ->first()->name; + } + + /** + * Ritorna l'id del tipo di intervento a partire dal nome. + * + * @param string $name il nome da ricercare + * + * @return \Illuminate\Support\Collection + */ + public function getByName($name) + { + return database()->table($this->table.'_lang') + ->select('id_record') + ->where('name', '=', $name) + ->where('id_lang', '=', setting('Lingua')) + ->first(); + } } diff --git a/plugins/pianificazione_interventi/pianificazione.php b/plugins/pianificazione_interventi/pianificazione.php index 0470912c2..a9b96633d 100755 --- a/plugins/pianificazione_interventi/pianificazione.php +++ b/plugins/pianificazione_interventi/pianificazione.php @@ -46,7 +46,7 @@ if (count($id_impianti) == 1) { } // Informazioni del promemoria -$record = $dbo->fetchOne('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_promemoria.idtipointervento) AS tempo_standard FROM co_promemoria WHERE id = :id', [ +$record = $dbo->fetchOne('SELECT *, `in_tipiintervento_lang`.`name` AS tipointervento, `in_tipiintervento`.`tempo_standard` FROM `co_promemoria` INNER JOIN `in_tipiintervento` ON `in_tipiintervento`.`id` = `co_promemoria`.`idtipointervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_promemoria`.`id` = :id', [ ':id' => $id_record, ]); $data_richiesta = $record['data_richiesta'] ?: date('Y-m-d'); diff --git a/src/API/App/v1/TipiIntervento.php b/src/API/App/v1/TipiIntervento.php index 2b1881074..a722078a7 100644 --- a/src/API/App/v1/TipiIntervento.php +++ b/src/API/App/v1/TipiIntervento.php @@ -25,16 +25,16 @@ class TipiIntervento extends AppResource { public function getCleanupData($last_sync_at) { - return $this->getMissingIDs('in_tipiintervento', 'idtipointervento', $last_sync_at); + return $this->getMissingIDs('in_tipiintervento', 'id', $last_sync_at); } public function getModifiedRecords($last_sync_at) { - $query = 'SELECT in_tipiintervento.idtipointervento AS id, in_tipiintervento.updated_at FROM in_tipiintervento'; + $query = 'SELECT `in_tipiintervento`.`id`, `in_tipiintervento`.`updated_at` FROM `in_tipiintervento`'; // Filtro per data if ($last_sync_at) { - $query .= ' WHERE in_tipiintervento.updated_at > '.prepare($last_sync_at); + $query .= ' WHERE `in_tipiintervento`.`updated_at` > '.prepare($last_sync_at); } $records = database()->fetchArray($query); @@ -45,13 +45,17 @@ class TipiIntervento extends AppResource public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT in_tipiintervento.idtipointervento AS id, - in_tipiintervento.descrizione, - costo_orario AS prezzo_orario, - costo_km AS prezzo_chilometrico, - costo_diritto_chiamata AS prezzo_diritto_chiamata - FROM in_tipiintervento - WHERE in_tipiintervento.idtipointervento = '.prepare($id); + $query = 'SELECT + `in_tipiintervento`.`id`, + `in_tipiintervento_lang`.`name`, + `costo_orario` AS prezzo_orario, + `costo_km` AS prezzo_chilometrico, + `costo_diritto_chiamata` AS prezzo_diritto_chiamata + FROM + `in_tipiintervento` + LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE + `in_tipiintervento`.`id` = '.prepare($id); $record = database()->fetchOne($query); diff --git a/update/2_4_55.sql b/update/2_4_55.sql index 1fc9b5e1a..ebf08a8c5 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -1314,6 +1314,51 @@ ALTER TABLE `in_statiintervento` ALTER TABLE `in_statiintervento_lang` ADD CONSTRAINT `in_statiintervento_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `in_statiintervento`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`in_statiintervento_lang`.`name`' WHERE `zz_modules`.`name` = 'Interventi' AND `zz_views`.`name` = 'Stato'; + +-- Allineamento vista Stati di intervento +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `in_statiintervento` + LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento_lang`.`id_record` = `in_statiintervento`.`id` AND `in_statiintervento_lang`.|lang|) +WHERE + 1=1 AND `deleted_at` IS NULL +HAVING + 2=2" WHERE `name` = 'Stati di intervento'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`in_statiintervento_lang`.`name`' WHERE `zz_modules`.`name` = 'Stati di intervento' AND `zz_views`.`name` = 'descrizione'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`in_statiintervento`.`id`' WHERE `zz_modules`.`name` = 'Stati di intervento' AND `zz_views`.`name` = 'id'; + + +UPDATE `zz_plugins` SET `options` = '{\"main_query\": [{\"type\": \"table\", \"fields\": \"Numero, Data inizio, Data fine, Tipo\", \"query\": \"SELECT in_interventi.id, in_interventi.codice AS Numero, DATE_FORMAT(MAX(orario_inizio),\'%d/%m/%Y\') AS \'Data inizio\', DATE_FORMAT(MAX(orario_fine),\'%d/%m/%Y\') AS \'Data fine\', (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS \'Tipo\', (SELECT `id` FROM `zz_modules` WHERE `name` = \'Interventi\') AS _link_module_, in_interventi.id AS _link_record_ FROM in_interventi LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id` WHERE 1=1 AND in_interventi.deleted_at IS NULL AND idanagrafica = |id_parent| GROUP BY `in_interventi`.`id` HAVING 2=2 ORDER BY in_interventi.id DESC\"}]}' WHERE `zz_plugins`.`name` = 'Storico attività'; + +UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM in_interventi WHERE id NOT IN (SELECT idintervento FROM in_interventi_tecnici) AND idstatointervento IN (SELECT id FROM in_statiintervento WHERE is_completato = 0) ' WHERE `zz_widgets`.`name` = 'Attività da pianificare'; +UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.id FROM in_statiintervento WHERE in_statiintervento.codice=\'TODO\') ORDER BY in_interventi.data_richiesta ASC' WHERE `zz_widgets`.`name` = 'Attività nello stato da programmare'; +UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.id FROM in_statiintervento WHERE in_statiintervento.codice=\'WIP\') ORDER BY in_interventi.data_richiesta ASC' WHERE `zz_widgets`.`name` = 'Attività confermate'; + +-- Aggiunta tabella in_tipiintervento_lang +CREATE TABLE IF NOT EXISTS `in_tipiintervento_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `in_tipiintervento_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `in_tipiintervento_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +ALTER TABLE `in_tipiintervento` CHANGE `idtipointervento` `id` INT NOT NULL AUTO_INCREMENT; + +INSERT INTO `in_tipiintervento_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `in_tipiintervento`; + +ALTER TABLE `in_tipiintervento` + DROP `descrizione`; + +ALTER TABLE `in_tipiintervento_lang` ADD CONSTRAINT `in_tipiintervento_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `in_tipiintervento`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + -- Allineamento vista Attività UPDATE `zz_modules` SET `options` = " SELECT @@ -1336,7 +1381,8 @@ FROM LEFT JOIN (SELECT `co_contratti`.`id`, CONCAT(`co_contratti`.`numero`, ' del ', DATE_FORMAT(`data_bozza`, '%d/%m/%Y')) AS `info` FROM `co_contratti`) AS `contratto` ON `contratto`.`id` = `in_interventi`.`id_contratto` LEFT JOIN (SELECT `co_preventivi`.`id`, CONCAT(`co_preventivi`.`numero`, ' del ', DATE_FORMAT(`data_bozza`, '%d/%m/%Y')) AS `info` FROM `co_preventivi`) AS `preventivo` ON `preventivo`.`id` = `in_interventi`.`id_preventivo` LEFT JOIN (SELECT `or_ordini`.`id`, CONCAT(`or_ordini`.`numero`, ' del ', DATE_FORMAT(`data`, '%d/%m/%Y')) AS `info` FROM `or_ordini`) AS `ordine` ON `ordine`.`id` = `in_interventi`.`id_ordine` - LEFT JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento` = `in_tipiintervento`.`idtipointervento` + INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento` = `in_tipiintervento`.`id` + LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.|lang|) LEFT JOIN( SELECT zz_files.* FROM zz_files INNER JOIN zz_modules ON zz_files.id_module = zz_modules.id WHERE zz_modules.name = 'Interventi' ) AS zz_files ON zz_files.id_record = in_interventi.id WHERE 1=1 |segment(`in_interventi`.`id_segment`)| |date_period(`orario_inizio`,`data_richiesta`)| @@ -1346,10 +1392,18 @@ HAVING 2=2 ORDER BY IFNULL(`orario_fine`, `data_richiesta`) DESC" WHERE `name` = 'Interventi'; -UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`in_statiintervento_lang`.`name`' WHERE `zz_modules`.`name` = 'Interventi' AND `zz_views`.`name` = 'Stato'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`in_tipiintervento_lang`.`name`' WHERE `zz_modules`.`name` = 'Interventi' AND `zz_views`.`name` = 'Tipo'; -UPDATE `zz_plugins` SET `options` = '{\"main_query\": [{\"type\": \"table\", \"fields\": \"Numero, Data inizio, Data fine, Tipo\", \"query\": \"SELECT in_interventi.id, in_interventi.codice AS Numero, DATE_FORMAT(MAX(orario_inizio),\'%d/%m/%Y\') AS \'Data inizio\', DATE_FORMAT(MAX(orario_fine),\'%d/%m/%Y\') AS \'Data fine\', (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS \'Tipo\', (SELECT `id` FROM `zz_modules` WHERE `name` = \'Interventi\') AS _link_module_, in_interventi.id AS _link_record_ FROM in_interventi LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id` WHERE 1=1 AND in_interventi.deleted_at IS NULL AND idanagrafica = |id_parent| GROUP BY `in_interventi`.`id` HAVING 2=2 ORDER BY in_interventi.id DESC\"}]}' WHERE `zz_plugins`.`name` = 'Storico attività'; - -UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM in_interventi WHERE id NOT IN (SELECT idintervento FROM in_interventi_tecnici) AND idstatointervento IN (SELECT id FROM in_statiintervento WHERE is_completato = 0) ' WHERE `zz_widgets`.`name` = 'Attività da pianificare'; -UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.id FROM in_statiintervento WHERE in_statiintervento.codice=\'TODO\') ORDER BY in_interventi.data_richiesta ASC' WHERE `zz_widgets`.`name` = 'Attività nello stato da programmare'; -UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM in_interventi WHERE in_interventi.idstatointervento = (SELECT in_statiintervento.id FROM in_statiintervento WHERE in_statiintervento.codice=\'WIP\') ORDER BY in_interventi.data_richiesta ASC' WHERE `zz_widgets`.`name` = 'Attività confermate'; \ No newline at end of file +-- Allineamento vista Tipi di intervento +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `in_tipiintervento` + LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.|lang|) +WHERE + 1=1 AND `deleted_at` IS NULL +HAVING + 2=2" WHERE `name` = 'Tipi di intervento'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`in_tipiintervento_lang`.`name`' WHERE `zz_modules`.`name` = 'Tipi di intervento' AND `zz_views`.`name` = 'Descrizione'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`in_tipiintervento`.`id`' WHERE `zz_modules`.`name` = 'Tipi di intervento' AND `zz_views`.`name` = 'id'; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index 4576972e9..a36fb1904 100755 --- a/update/tables.php +++ b/update/tables.php @@ -112,6 +112,7 @@ return [ 'in_statiintervento_lang', 'in_tariffe', 'in_tipiintervento', + 'in_tipiintervento_lang', 'in_vociservizio', 'in_fasceorarie', 'in_fasceorarie_lang',