From cf68c56b3a98d65529d352bd6e269878862d56c8 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Mon, 11 Mar 2024 10:40:42 +0100 Subject: [PATCH] Aggiunta tabella zz_segments_lang --- modules/fatture/actions.php | 2 +- modules/fatture/add.php | 2 +- modules/fatture/init.php | 6 +- modules/fatture/src/Fattura.php | 2 +- modules/interventi/bulk.php | 2 +- modules/listini/bulk.php | 2 +- modules/preventivi/bulk.php | 2 +- modules/segmenti/actions.php | 21 +++++-- modules/segmenti/ajax/select.php | 18 +++--- modules/segmenti/init.php | 2 +- modules/stampe/ajax/select.php | 16 +++--- modules/stampe_contabili/stampe_contabili.php | 2 +- modules/tipi_scadenze/actions.php | 19 +++++-- plugins/importFE/generate.php | 2 +- .../crea_fattura_multipla.php | 2 +- src/Modules.php | 2 +- src/Util/Generator.php | 2 +- templates/registro_iva/init.php | 2 +- update/2_5.sql | 55 +++++++++++++------ update/tables.php | 1 + 20 files changed, 104 insertions(+), 58 deletions(-) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 76f5e0178..8d6087503 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -1170,7 +1170,7 @@ switch ($op) { // Nota di debito if (get('op') == 'nota_addebito') { - $rs_segment = $dbo->fetchArray("SELECT * FROM zz_segments WHERE predefined_addebito='1'"); + $rs_segment = $dbo->fetchArray("SELECT * FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `predefined_addebito`='1'"); if (!empty($rs_segment)) { $id_segment = $rs_segment[0]['id']; } else { diff --git a/modules/fatture/add.php b/modules/fatture/add.php index d253481ce..a214a0f61 100755 --- a/modules/fatture/add.php +++ b/modules/fatture/add.php @@ -69,7 +69,7 @@ $idtipodocumento = Tipo::where('predefined', 1)->where('dir', $dir)->first()->id
- {[ "type": "select", "label": "", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`co_tipidocumento`.`codice_tipo_documento_fe`, ' - ', `co_tipidocumento_lang`.`name`) AS descrizione, `co_tipidocumento`.`id_segment`, `zz_segments`.`name` as name_segment FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = ) INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_tipidocumento`.`id_segment` WHERE `co_tipidocumento`.`enabled` = 1 AND `co_tipidocumento`.`dir` = '' ORDER BY `co_tipidocumento`.`codice_tipo_documento_fe`", "value": "" ]} + {[ "type": "select", "label": "", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`co_tipidocumento`.`codice_tipo_documento_fe`, ' - ', `co_tipidocumento_lang`.`name`) AS descrizione, `co_tipidocumento`.`id_segment`, `zz_segments_lang`.`name` as name_segment FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = ) INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_tipidocumento`.`id_segment` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = ) WHERE `co_tipidocumento`.`enabled` = 1 AND `co_tipidocumento`.`dir` = '' ORDER BY `co_tipidocumento`.`codice_tipo_documento_fe`", "value": "" ]}
diff --git a/modules/fatture/init.php b/modules/fatture/init.php index 3bc72ef2b..f720209b4 100755 --- a/modules/fatture/init.php +++ b/modules/fatture/init.php @@ -48,7 +48,7 @@ if (isset($id_record)) { `co_statidocumento_lang`.`name` AS `stato`, `co_tipidocumento_lang`.`name` AS `descrizione_tipo`, `co_tipidocumento`.`id` AS `idtipodocumento`, - (SELECT `is_fiscale` FROM `zz_segments` WHERE `zz_segments`.`id` = `co_documenti`.`id_segment`) AS is_fiscale, + `zz_segments`.`is_fiscale` AS is_fiscale, (SELECT `descrizione` FROM `co_ritenutaacconto` WHERE `id`=`idritenutaacconto`) AS ritenutaacconto_desc, (SELECT `descrizione` FROM `co_rivalse` WHERE `id`=`idrivalsainps`) AS rivalsainps_desc, `dt_causalet_lang`.`name` AS causale_desc @@ -62,7 +62,9 @@ if (isset($id_record)) { LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') LEFT JOIN `dt_causalet` ON `co_documenti`.`idcausalet`=`dt_causalet`.`id` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet_lang`.`id_record` = `dt_causalet`.`id` AND `dt_causalet_lang`.`id_lang` = '.prepare(setting('Lingua')).') - WHERE `co_tipidocumento`.`dir` = '.prepare($dir).' AND `co_documenti`.`id`='.prepare($id_record)); + INNER JOIN `zz_segments` ON `co_documenti`.`id_segment` = `zz_segments`.`id` + WHERE + `co_tipidocumento`.`dir` = '.prepare($dir).' AND `co_documenti`.`id`='.prepare($id_record)); // Note di credito collegate $note_accredito = $dbo->fetchArray("SELECT `co_documenti`.`id`, IF(`numero_esterno` != '', `numero_esterno`, `numero`) AS numero, data FROM `co_documenti` JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` WHERE `reversed` = 1 AND `ref_documento`=".prepare($id_record)); diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index dd96d6ec5..e47b9da28 100755 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -775,7 +775,7 @@ class Fattura extends Document */ public function isFiscale() { - $result = database()->fetchOne('SELECT is_fiscale FROM zz_segments WHERE id ='.prepare($this->id_segment))['is_fiscale']; + $result = database()->fetchOne('SELECT `is_fiscale` FROM `zz_segments` WHERE `id` ='.prepare($this->id_segment))['is_fiscale']; return $result; } diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index efc24d8ba..d58ef0efe 100755 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -157,7 +157,7 @@ switch (post('op')) { if (empty($id_documento)) { if (!empty($accodare)) { $where = $raggruppamento == 'sede' ? ' AND `idsede_destinazione` = '.prepare($intervento['idsede_destinazione']) : ''; - $documento = $dbo->fetchOne('SELECT `co_documenti`.`id` FROM `co_documenti` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` LEFT JOIN `co_statidocumenti_lang` ON (`co_statidocumenti`.`id` = `co_statidocumenti_lang`.`id_record` AND `co_statidocumenti_lang`.`id_lang` = "'.prepare(setting('Lingua')).'") INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_documenti`.`id_segment` WHERE `co_statidocumento_lang`.`name` = "Bozza" AND `co_documenti`.`idanagrafica` = '.prepare($id_anagrafica).' AND co_tipidocumento.id='.prepare($tipo_documento['id']).' AND `co_documenti`.`id_segment` = '.prepare($id_segment).$where); + $documento = $dbo->fetchOne('SELECT `co_documenti`.`id` FROM `co_documenti` INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` LEFT JOIN `co_statidocumenti_lang` ON (`co_statidocumenti`.`id` = `co_statidocumenti_lang`.`id_record` AND `co_statidocumenti_lang`.`id_lang` = "'.prepare(setting('Lingua')).'") INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_documenti`.`id_segment` WHERE `co_statidocumento_lang`.`name` = "Bozza" AND `co_documenti`.`idanagrafica` = '.prepare($id_anagrafica).' AND `co_tipidocumento`.`id`='.prepare($tipo_documento['id']).' AND `co_documenti`.`id_segment` = '.prepare($id_segment).$where); $id_documento = $documento['id']; $id_documento_cliente[$id_anagrafica] = $id_documento; diff --git a/modules/listini/bulk.php b/modules/listini/bulk.php index 8d6a7dea7..c9510ac74 100644 --- a/modules/listini/bulk.php +++ b/modules/listini/bulk.php @@ -105,7 +105,7 @@ switch (post('op')) { break; } -$segment = $dbo->selectOne('zz_segments', 'name', ['id' => $_SESSION['module_'.$id_module]['id_segment']])['name']; +$segment = $dbo->selectOne('zz_segments_lang', 'name', ['id_record' => $_SESSION['module_'.$id_module]['id_segment']])['name']; if ($segment != 'Tutti') { $operations['copy_listino'] = [ diff --git a/modules/preventivi/bulk.php b/modules/preventivi/bulk.php index 8d1e721f6..866cb7971 100755 --- a/modules/preventivi/bulk.php +++ b/modules/preventivi/bulk.php @@ -172,7 +172,7 @@ $operations['crea_fattura'] = [ 'text' => ' '.tr('Fattura _TYPE_', ['_TYPE_' => strtolower($module['name'])]), 'data' => [ 'title' => tr('Fatturare i _TYPE_ selezionati?', ['_TYPE_' => strtolower($module['name'])]), - 'msg' => '{[ "type": "checkbox", "label": "'.tr('Aggiungere alle fatture di vendita non ancora emesse?').'", "placeholder": "'.tr('Aggiungere alle fatture di vendita nello stato bozza?').'", "name": "accodare" ]}
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module=\''.$id_fatture.'\' ORDER BY name", "value": "'.$id_segment.'" ]}
+ 'msg' => '{[ "type": "checkbox", "label": "'.tr('Aggiungere alle fatture di vendita non ancora emesse?').'", "placeholder": "'.tr('Aggiungere alle fatture di vendita nello stato bozza?').'", "name": "accodare" ]}
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT `zz_segments`.`id`, `zz_segments_lang`.`name` AS descrizione FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `id_module`=\''.$id_fatture.'\' ORDER BY `zz_segments_lang`.`name`", "value": "'.$id_segment.'" ]}
{[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`codice_tipo_documento_fe`, \' - \', `name`) AS descrizione FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id` = `co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `enabled` = 1 AND `dir` =\'entrata\' ORDER BY `codice_tipo_documento_fe`", "value": "'.$idtipodocumento.'" ]}
{[ "type": "select", "label": "'.tr('Raggruppa per').'", "name": "raggruppamento", "required": 1, "values": "list=\"cliente\":\"Cliente\",\"sede\":\"Sede\"" ]}', 'button' => tr('Procedi'), diff --git a/modules/segmenti/actions.php b/modules/segmenti/actions.php index 57c4b15c2..d10bed783 100755 --- a/modules/segmenti/actions.php +++ b/modules/segmenti/actions.php @@ -30,22 +30,21 @@ switch (post('op')) { } if ($predefined) { - $dbo->query('UPDATE zz_segments SET predefined = 0 WHERE id_module = '.prepare($module)); + $dbo->query('UPDATE `zz_segments` SET `predefined` = 0 WHERE `id_module` = '.prepare($module)); } $predefined_accredito = post('predefined_accredito'); if ($predefined_accredito) { - $dbo->query('UPDATE zz_segments SET predefined_accredito = 0 WHERE id_module = '.prepare($module)); + $dbo->query('UPDATE `zz_segments` SET `predefined_accredito` = 0 WHERE `id_module` = '.prepare($module)); } $predefined_addebito = post('predefined_addebito'); if ($predefined_addebito) { - $dbo->query('UPDATE zz_segments SET predefined_addebito = 0 WHERE id_module = '.prepare($module)); + $dbo->query('UPDATE `zz_segments` SET `predefined_addebito` = 0 WHERE `id_module` = '.prepare($module)); } $dbo->update('zz_segments', [ 'id_module' => $module, - 'name' => post('name'), 'clause' => $_POST['clause'], 'pattern' => $pattern, 'note' => post('note'), @@ -59,6 +58,11 @@ switch (post('op')) { 'for_fe' => post('for_fe'), ], ['id' => $id_record]); + $dbo->update('zz_segments_lang', [ + 'name' => post('name'), + ], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]); + + // Aggiornamento dei permessi relativi $dbo->sync('zz_group_segment', ['id_segment' => $id_record], ['id_gruppo' => (array) post('gruppi')]); @@ -76,12 +80,11 @@ switch (post('op')) { } if ($predefined) { - $dbo->query('UPDATE zz_segments SET predefined = 0 WHERE id_module = '.prepare($module)); + $dbo->query('UPDATE `zz_segments` SET `predefined` = 0 WHERE `id_module` = '.prepare($module)); } $dbo->insert('zz_segments', [ 'id_module' => $module, - 'name' => post('name'), 'clause' => '1=1', 'pattern' => $pattern, 'note' => post('note'), @@ -91,6 +94,12 @@ switch (post('op')) { $id_record = $dbo->lastInsertedID(); + $dbo->insert('zz_segments_lang', [ + 'name' => post('name'), + 'id_record' => $id_record, + 'id_lang' => setting('Lingua'), + ]); + // Aggiunta permessi segmento $gruppi = $dbo->fetchArray('SELECT `id` FROM `zz_groups`'); $array = []; diff --git a/modules/segmenti/ajax/select.php b/modules/segmenti/ajax/select.php index 01afbc788..66230fa7b 100644 --- a/modules/segmenti/ajax/select.php +++ b/modules/segmenti/ajax/select.php @@ -29,33 +29,33 @@ switch ($resource) { $escludi_id = $superselect['escludi_id']; if (isset($id_module)) { - $query = 'SELECT `id`, `name` AS descrizione FROM zz_segments INNER JOIN `zz_group_segment` ON `zz_segments`.`id` = `zz_group_segment`.`id_segment` |where| ORDER BY `name` ASC'; + $query = 'SELECT `zz_segments`.`id`, `zz_segments_lang`.`name` AS descrizione FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `zz_group_segment` ON `zz_segments`.`id` = `zz_group_segment`.`id_segment` |where| ORDER BY `name` ASC'; - $where[] = 'zz_segments.id_module = '.prepare($id_module); - $where[] = 'zz_group_segment.id_gruppo = '.prepare($user->idgruppo); + $where[] = '`zz_segments`.`id_module` = '.prepare($id_module); + $where[] = '`zz_group_segment`.`id_gruppo` = '.prepare($user->idgruppo); if ($is_fiscale != null) { - $where[] = 'zz_segments.is_fiscale = '.prepare($is_fiscale); + $where[] = '`zz_segments`.`is_fiscale` = '.prepare($is_fiscale); } if ($is_sezionale != null) { - $where[] = 'zz_segments.is_sezionale = '.prepare($is_sezionale); + $where[] = '`zz_segments`.`is_sezionale` = '.prepare($is_sezionale); } if ($for_fe != null) { - $where[] = 'zz_segments.for_fe = '.prepare($for_fe); + $where[] = '`zz_segments`.`for_fe` = '.prepare($for_fe); } if ($escludi_id != null) { - $where[] = 'zz_segments.id != '.prepare($escludi_id); + $where[] = '`zz_segments`.`id` != '.prepare($escludi_id); } foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`zz_segments`.`id`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'zz_segments.name LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`zz_segments_lang`.`name` LIKE '.prepare('%'.$search.'%'); } } diff --git a/modules/segmenti/init.php b/modules/segmenti/init.php index d3046b7df..010d44a4c 100755 --- a/modules/segmenti/init.php +++ b/modules/segmenti/init.php @@ -22,7 +22,7 @@ include_once __DIR__.'/../../core.php'; use PHPSQLParser\PHPSQLParser; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT *, `zz_modules`.`options`, `zz_modules_lang`.`name` AS modulo, (SELECT COUNT(`t`.`id`) FROM `zz_segments` t WHERE `t`.`id_module` = `zz_segments`.`id_module`) AS n_sezionali FROM `zz_segments` INNER JOIN `zz_modules` ON `zz_modules`.`id` = `zz_segments`.`id_module` LEFT JOIN `zz_modules_lang` ON (`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `zz_segments`.`id`='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT *, `zz_modules`.`options`, `zz_modules_lang`.`name` AS modulo, (SELECT COUNT(`t`.`id`) FROM `zz_segments` t WHERE `t`.`id_module` = `zz_segments`.`id_module`) AS n_sezionali FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `zz_modules` ON `zz_modules`.`id` = `zz_segments`.`id_module` LEFT JOIN `zz_modules_lang` ON (`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `zz_segments`.`id`='.prepare($id_record)); $parser = new PHPSQLParser(); $parsed = $parser->parse($record['options']); diff --git a/modules/stampe/ajax/select.php b/modules/stampe/ajax/select.php index fcec9fb36..979158680 100644 --- a/modules/stampe/ajax/select.php +++ b/modules/stampe/ajax/select.php @@ -29,31 +29,31 @@ switch ($resource) { $query = 'SELECT `id`, `name` AS descrizione FROM zz_files |where|'; if (isset($id_module)) { - $where[] = 'zz_files.id_module = '.prepare($id_module); + $where[] = '`zz_files`.`id_module` = '.prepare($id_module); } if (isset($id_plugin)) { - $where[] = 'zz_files.id_plugin = '.prepare($id_plugin); + $where[] = '`zz_files`.`id_plugin` = '.prepare($id_plugin); } - $where[] = 'zz_files.id_record = '.prepare($id_record); + $where[] = '`zz_files`.`id_record` = '.prepare($id_record); if ($is_fiscale != null) { - $where[] = 'zz_segments.is_fiscale = '.prepare($is_fiscale); + $where[] = '`zz_segments`.`is_fiscale` = '.prepare($is_fiscale); } if ($is_sezionale != null) { - $where[] = 'zz_segments.is_sezionale = '.prepare($is_sezionale); + $where[] = '`zz_segments`.`is_sezionale` = '.prepare($is_sezionale); } if ($escludi_id != null) { - $where[] = 'zz_segments.id != '.prepare($escludi_id); + $where[] = '`zz_segments`.`id` != '.prepare($escludi_id); } foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`id`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'zz_segments.name LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`zz_segments`.`name` LIKE '.prepare('%'.$search.'%'); } } diff --git a/modules/stampe_contabili/stampe_contabili.php b/modules/stampe_contabili/stampe_contabili.php index c17b27899..8403fa500 100644 --- a/modules/stampe_contabili/stampe_contabili.php +++ b/modules/stampe_contabili/stampe_contabili.php @@ -95,7 +95,7 @@ echo ' if ($nome_stampa != 'Liquidazione IVA') { echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_sezionale", "required": "1", "values": "query=SELECT `zz_segments`.`id`, `name` AS descrizione FROM `zz_segments` WHERE `id_module` = (SELECT `id_record` FROM `zz_modules_lang` WHERE `name` = \''.(($dir == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto').'\') AND `is_fiscale` = 1 UNION SELECT -1 AS id, \'Tutti i sezionali\' AS descrizione" ]} + {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_sezionale", "required": "1", "values": "query=SELECT `zz_segments`.`id`, `zz_segments_lang`.`name` AS descrizione FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `id_module` = (SELECT `id_record` FROM `zz_modules_lang` WHERE `name` = \''.(($dir == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto').'\') AND `is_fiscale` = 1 UNION SELECT -1 AS id, \'Tutti i sezionali\' AS descrizione" ]}
'; } echo ' diff --git a/modules/tipi_scadenze/actions.php b/modules/tipi_scadenze/actions.php index a8200079f..f124a4cd9 100755 --- a/modules/tipi_scadenze/actions.php +++ b/modules/tipi_scadenze/actions.php @@ -37,14 +37,20 @@ switch (filter('op')) { 'description' => $descrizione, ], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]); + $segmento = $dbo->fetchOne('SELECT `zz_segments`.`id` FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments_lang`.`id_record` = `zz_segments`.`id` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `id_module` = '.prepare((new Module())->getByName('Scadenzario')->id_record).' AND `clause` = "co_scadenziario.tipo=\''.$nome_prev.'\'" AND `zz_segments_lang`.`name` = "Scadenzario '.$nome_prev.'"')['id']; + // aggiorno anche il segmento $dbo->update('zz_segments', [ 'clause' => 'co_scadenziario.tipo="'.$nome.'"', + ], [ + 'id' => $segmento, + ]); + + $dbo->update('zz_segments_lang', [ 'name' => 'Scadenzario '.$nome, ], [ - 'clause' => 'co_scadenziario.tipo="'.$nome_prev.'"', - 'name' => 'Scadenzario '.$nome_prev, - 'id_module' => (new Module())->getByName('Scadenzario')->id_record, + 'id_record' => $segmento, + 'id_lang' => setting('Lingua'), ]); flash()->info(tr('Salvataggio completato!')); @@ -81,10 +87,15 @@ switch (filter('op')) { // Aggiungo anche il segmento $dbo->insert('zz_segments', [ 'id_module' => (new Module())->getByName('Scadenzario')->id_record, - 'name' => 'Scadenzario '.$nome, 'clause' => 'co_scadenziario.tipo="'.$nome.'"', 'position' => 'WHR', ]); + $id_record = $dbo->lastInsertedID(); + $dbo->insert('zz_segments', [ + 'name' => 'Scadenzario '.$nome, + 'id_record' => $id_record, + 'id_lang' => setting('Lingua'), + ]); if (isAjaxRequest()) { echo json_encode(['id' => $id_record, 'text' => $descrizione]); diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index 2bc7a6f7a..d4d503579 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -273,7 +273,7 @@ if (!empty($anagrafica)) { {[ "type": "select", "label": "'.tr('Fattura collegata').'", "name": "ref_fattura", "required": 0, "values": "query='.$query.'" ]}
'; } elseif ($dati_generali['TipoDocumento'] == 'TD06') { - $query .= "AND co_documenti.id_segment = (SELECT id FROM zz_segments WHERE name = 'Fatture pro-forma' AND id_module = ".prepare($id_module).')'; + $query .= "AND `co_documenti`.`id_segment` = (SELECT `zz_segments`.`id` FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments_lang`.`id_record` = `zz_segments`.`id` AND `zz_segments_lang`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `name` = 'Fatture pro-forma' AND `id_module` = ".prepare($id_module).')'; echo '
diff --git a/plugins/pianificazione_fatturazione/crea_fattura_multipla.php b/plugins/pianificazione_fatturazione/crea_fattura_multipla.php index 6caee979a..fc8765da1 100644 --- a/plugins/pianificazione_fatturazione/crea_fattura_multipla.php +++ b/plugins/pianificazione_fatturazione/crea_fattura_multipla.php @@ -74,7 +74,7 @@ echo ' // Sezionale echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.$id_module_fattura.' ORDER BY name", "value":"'.$_SESSION['module_'.$id_module_fattura]['id_segment'].'" ]} + {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT `zz_segments`.`id`, `name` AS descrizione FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments_lang`.`id_record` = `zz_segments`.`id` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `id_module`='.$id_module_fattura.' ORDER BY `name`", "value":"'.$_SESSION['module_'.$id_module_fattura]['id_segment'].'" ]}
'; // Conto diff --git a/src/Modules.php b/src/Modules.php index 18858f5ca..4b5eaa7ad 100755 --- a/src/Modules.php +++ b/src/Modules.php @@ -182,7 +182,7 @@ class Modules if (!isset(self::$segments[$module])) { $database = database(); - self::$segments[$module] = $database->fetchArray('SELECT * FROM `zz_segments` INNER JOIN `zz_group_segment` ON `zz_segments`.`id` = `zz_group_segment`.`id_segment` WHERE `id_gruppo` = '.prepare($user->idgruppo).' AND `id_module` = '.prepare($module).' ORDER BY `predefined` DESC, `id` ASC'); + self::$segments[$module] = $database->fetchArray('SELECT * FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `zz_group_segment` ON `zz_segments`.`id` = `zz_group_segment`.`id_segment` WHERE `id_gruppo` = '.prepare($user->idgruppo).' AND `id_module` = '.prepare($module).' ORDER BY `predefined` DESC, `id` ASC'); } return (array) self::$segments[$module]; diff --git a/src/Util/Generator.php b/src/Util/Generator.php index 2ef46c58d..0dc32601f 100755 --- a/src/Util/Generator.php +++ b/src/Util/Generator.php @@ -190,7 +190,7 @@ class Generator { $database = database(); - $maschera = $database->fetchOne('SELECT pattern FROM zz_segments WHERE id = :id_segment', [ + $maschera = $database->fetchOne('SELECT `pattern` FROM `zz_segments` WHERE `id` = :id_segment', [ ':id_segment' => $id_segment, ]); diff --git a/templates/registro_iva/init.php b/templates/registro_iva/init.php index 122b38b46..d29c6e52d 100755 --- a/templates/registro_iva/init.php +++ b/templates/registro_iva/init.php @@ -23,7 +23,7 @@ use Models\Module; $dir = $_GET['dir']; $id_sezionale = filter('id_sezionale'); -$sezionale = $dbo->fetchOne('SELECT name FROM zz_segments WHERE id = '.$id_sezionale)['name']; +$sezionale = $dbo->fetchOne('SELECT `zz_segmnets_lang`.`name` FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `zz_segments`.`id` = '.$id_sezionale)['name']; $date_start = filter('date_start'); $date_end = filter('date_end'); diff --git a/update/2_5.sql b/update/2_5.sql index 753cd453c..99a5eb743 100644 --- a/update/2_5.sql +++ b/update/2_5.sql @@ -1837,21 +1837,6 @@ HAVING ORDER BY `scadenza` ASC" WHERE `zz_modules`.`id` = (SELECT `id_record` FROM `zz_modules_lang` WHERE `name` = 'Scadenzario'); --- Allineamento vista Segmenti -UPDATE `zz_modules` SET `options` = " -SELECT - |select| -FROM - `zz_segments` - INNER JOIN `zz_modules` ON `zz_modules`.`id` = `zz_segments`.`id_module` - LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.|lang|) - LEFT JOIN (SELECT GROUP_CONCAT(`zz_groups`.`nome` ORDER BY `zz_groups`.`nome` SEPARATOR ', ') AS `gruppi`, `zz_group_segment`.`id_segment` FROM `zz_group_segment` INNER JOIN `zz_groups` ON `zz_groups`.`id` = `zz_group_segment`.`id_gruppo` GROUP BY `zz_group_segment`.`id_segment`) AS `t` ON `t`.`id_segment` = `zz_segments`.`id` -WHERE - 1=1 -HAVING - 2=2 -ORDER BY `zz_segments`.`name`, - `zz_segments`.`id_module`" WHERE `zz_modules`.`id` = (SELECT `id_record` FROM `zz_modules_lang` WHERE `name` = 'Segmenti'); UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = "Lingua")) SET `zz_views`.`query` = '`zz_modules_lang`.`name`' WHERE `zz_modules_lang`.`name` = 'Segmenti' AND `zz_views`.`name` = 'Modulo'; -- Allineamento vista Stampe @@ -2036,4 +2021,42 @@ ORDER BY `mg_articoli_lang`.`name`" WHERE `zz_modules`.`id` = (SELECT `id_record` FROM `zz_modules_lang` WHERE `name` = 'Giacenze sedi'); UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = "Lingua")) SET `zz_views`.`query` = '`mg_articoli_lang`.`name`' WHERE `zz_modules_lang`.`name` = 'Giacenze sedi' AND `zz_views`.`name` = 'Descrizione'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = "Lingua")) SET `zz_views`.`query` = '`categoria_lang`.`name`' WHERE `zz_modules_lang`.`name` = 'Giacenze sedi' AND `zz_views`.`name` = 'Categoria'; -UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = "Lingua")) SET `zz_views`.`query` = '`sottocategoria_lang`.`name`' WHERE `zz_modules_lang`.`name` = 'Giacenze sedi' AND `zz_views`.`name` = 'Sottocategoria'; \ No newline at end of file +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = "Lingua")) SET `zz_views`.`query` = '`sottocategoria_lang`.`name`' WHERE `zz_modules_lang`.`name` = 'Giacenze sedi' AND `zz_views`.`name` = 'Sottocategoria'; + +-- Aggiunta tabella zz_segments_lang +CREATE TABLE IF NOT EXISTS `zz_segments_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `zz_segments_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `zz_segments_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `zz_segments_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `name` FROM `zz_segments`; + +ALTER TABLE `zz_segments` + DROP `name`; + +ALTER TABLE `zz_segments_lang` ADD CONSTRAINT `zz_segments_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `zz_segments`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Segmenti +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `zz_segments` + LEFT JOIN `zz_segments_lang` ON (`zz_segments_lang`.`id_record` = `zz_segments`.`id` AND `zz_segments_lang`.|lang|) + INNER JOIN `zz_modules` ON `zz_modules`.`id` = `zz_segments`.`id_module` + LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.|lang|) + LEFT JOIN (SELECT GROUP_CONCAT(`zz_groups`.`nome` ORDER BY `zz_groups`.`nome` SEPARATOR ', ') AS `gruppi`, `zz_group_segment`.`id_segment` FROM `zz_group_segment` INNER JOIN `zz_groups` ON `zz_groups`.`id` = `zz_group_segment`.`id_gruppo` GROUP BY `zz_group_segment`.`id_segment`) AS `t` ON `t`.`id_segment` = `zz_segments`.`id` +WHERE + 1=1 +HAVING + 2=2 +ORDER BY `zz_segments_lang`.`name`, + `zz_segments`.`id_module`" WHERE `zz_modules`.`id` = (SELECT `id_record` FROM `zz_modules_lang` WHERE `name` = 'Segmenti'); +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = "Lingua")) SET `zz_views`.`query` = '`zz_segments_lang`.`name`' WHERE `zz_modules_lang`.`name` = 'Segmenti' AND `zz_views`.`name` = 'Nome'; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index aca1fc7ac..d38f536a7 100755 --- a/update/tables.php +++ b/update/tables.php @@ -181,6 +181,7 @@ return [ 'zz_plugins_lang', 'zz_prints', 'zz_segments', + 'zz_segments_lang' 'zz_semaphores', 'zz_settings', 'zz_tasks',