From 58dcb1e099aa4a00096f6cc00fc84e2c2c4cf8d7 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Fri, 1 Mar 2024 11:49:21 +0100 Subject: [PATCH] Aggiunta tabella or_tipiordine_lang --- modules/anagrafiche/edit.php | 2 +- modules/articoli/plugins/articoli.lotti.php | 30 +++++++++++++++++++-- modules/ddt/edit.php | 2 +- modules/ordini/init.php | 3 ++- modules/ordini/src/Ordine.php | 12 ++++----- modules/ordini/src/Tipo.php | 30 +++++++++++++++++++++ modules/pagamenti/edit.php | 2 +- modules/preventivi/edit.php | 2 +- update/2_4_55.sql | 22 +++++++++++++++ update/tables.php | 1 + 10 files changed, 93 insertions(+), 13 deletions(-) diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 9db5d9c21..10e203ce4 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -742,7 +742,7 @@ UNION SELECT `zz_users`.`idgruppo` AS id, `zz_users`.`created_at` AS data, `zz_users`.`username` AS numero, 0 AS `numero_esterno`, "Utente" AS tipo_documento, 0 AS `dir`, NULL AS `deleted_at` FROM `zz_users` WHERE `zz_users`.`idanagrafica` = '.prepare($id_record).' UNION -SELECT `or_ordini`.`id`, `or_ordini`.`data`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_tipiordine`.`descrizione` AS tipo_documento, `or_tipiordine`.`dir`, NULL AS `deleted_at` FROM `or_ordini` JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine` WHERE `or_ordini`.`idanagrafica` = '.prepare($id_record).' +SELECT `or_ordini`.`id`, `or_ordini`.`data`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_tipiordine_lang`.`name` AS tipo_documento, `or_tipiordine`.`dir`, NULL AS `deleted_at` FROM `or_ordini` INNER JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine` LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine`.`id` = `or_tipiordine_lang`.`id_record` AND `or_tipiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `or_ordini`.`idanagrafica` = '.prepare($id_record).' UNION SELECT `dt_ddt`.`id`, `dt_ddt`.`data`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_tipiddt_lang`.`name` AS tipo_documento, `dt_tipiddt`.`dir`, NULL AS `deleted_at` FROM `dt_ddt` INNER JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` LEFT JOIN `dt_tipiddt_lang` ON (`dt_tipiddt`.`id` = `dt_tipiddt_lang`.`id_record` AND `dt_tipiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `dt_ddt`.`idanagrafica` = '.prepare($id_record).' diff --git a/modules/articoli/plugins/articoli.lotti.php b/modules/articoli/plugins/articoli.lotti.php index 0c7fc2f8f..9e4a83c05 100755 --- a/modules/articoli/plugins/articoli.lotti.php +++ b/modules/articoli/plugins/articoli.lotti.php @@ -188,7 +188,20 @@ if (empty(get('modal'))) { $module_id = Modules::get('Ordini cliente')['id']; // Ricerca inserimenti su ordini - $query = 'SELECT *, ( SELECT descrizione FROM or_tipiordine WHERE id=(SELECT idtipoordine FROM or_ordini WHERE id=idordine) ) AS tipo_documento, ( SELECT `dir` FROM or_tipiordine WHERE id=(SELECT idtipoordine FROM or_ordini WHERE id=idordine) ) AS `dir`, ( SELECT numero FROM or_ordini WHERE id=idordine ) AS numero, ( SELECT numero_esterno FROM or_ordini WHERE id=idordine ) AS numero_esterno, ( SELECT data FROM or_ordini WHERE id=idordine ) AS data FROM or_righe_ordini WHERE or_righe_ordini.id='.prepare($acquisto['id_riga_ordine']); + $query = 'SELECT + *, + `or_tipiordine_lang`.`name` AS tipo_documento, + `or_tipiordine`.`dir`, + `or_ordini`.`numero`, + `or_ordini`.`numero_esterno`, + `or_ordini`.`data` + FROM + `or_righe_ordini` + INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine`=`or_ordini`.`id` + INNER JOIN `or_tipiordine` ON `or_ordini`.`ididtipordine`=`or_tipiordine`.`id` + LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine`.`id` = `or_tipiordine_lang`.`id_record` AND `or_tipiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE + `or_righe_ordini`.`id`='.prepare($acquisto['id_riga_ordine']); $data = $dbo->fetchArray($query); $id = $data[0]['idordine']; @@ -285,7 +298,20 @@ if (empty(get('modal'))) { $module_id = Modules::get('Ordini cliente')['id']; // Ricerca inserimenti su ordini - $query = 'SELECT *, ( SELECT descrizione FROM or_tipiordine WHERE id=(SELECT idtipoordine FROM or_ordini WHERE id=idordine) ) AS tipo_documento, ( SELECT `dir` FROM or_tipiordine WHERE id=(SELECT idtipoordine FROM or_ordini WHERE id=idordine) ) AS `dir`, ( SELECT numero FROM or_ordini WHERE id=idordine ) AS numero, ( SELECT numero_esterno FROM or_ordini WHERE id=idordine ) AS numero_esterno, ( SELECT data FROM or_ordini WHERE id=idordine ) AS data FROM or_righe_ordini WHERE or_righe_ordini.id='.prepare($vendita['id_riga_ordine']); + $query = 'SELECT + *, + `or_tipiordine_lang`.`name` AS tipo_ordine, + `or_ordini`.`dir`, + `or_ordini`.`numero`, + `or_ordini`.`numero_esterno`, + `or_ordini`.`data` + FROM + `or_righe_ordini` + INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine`=`or_ordini`.`id` + INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine`=`or_tipiordine`.`id` + LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine_lang`.`id_record`=`or_tipiordine`.`id` AND `or_tipiordine_lang`.`id_lang`='.prepare(setting('Lingua')).') + WHERE + `or_righe_ordini`.`id`='.prepare($vendita['id_riga_ordine']); $data = $dbo->fetchArray($query); $id = $data[0]['idordine']; diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php index 62129b14e..cdb77fbc9 100755 --- a/modules/ddt/edit.php +++ b/modules/ddt/edit.php @@ -541,7 +541,7 @@ if (!$block_edit) { WHERE `idanagrafica`='.prepare($record['idanagrafica']).' AND `or_statiordine_lang`.`name` IN(\'Accettato\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) - AND `dir`='.prepare($dir).') + AND `or_tipiordine`.`dir`='.prepare($dir).') AND (`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) > 0) GROUP BY `or_ordini`.`id`'; $tot_ordini = $dbo->fetchArray($ordini_query)[0]['tot']; diff --git a/modules/ordini/init.php b/modules/ordini/init.php index 19634bf42..2c5605097 100755 --- a/modules/ordini/init.php +++ b/modules/ordini/init.php @@ -30,7 +30,7 @@ if (isset($id_record)) { `or_ordini`.`id` AS idordine, `or_ordini`.`idagente` AS idagente, `or_statiordine_lang`.`name` AS `stato`, - `or_tipiordine`.`descrizione` AS `descrizione_tipodoc`, + `or_tipiordine_lang`.`name` AS `descrizione_tipodoc`, `an_anagrafiche`.`tipo` AS tipo_anagrafica, `or_statiordine`.`completato` AS flag_completato FROM @@ -39,6 +39,7 @@ if (isset($id_record)) { LEFT JOIN `or_statiordine_lang` ON `or_statiordine_lang`.`id_record`=`or_statiordine`.`id` INNER JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica`=`an_anagrafiche`.`idanagrafica` INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine`=`or_tipiordine`.`id` + LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine_lang`.`id_record`=`or_tipiordine`.`id` AND `or_tipiordine_lang`.`id_lang`="'.prepare(setting('Lingua')).'") WHERE `or_ordini`.`id`='.prepare($id_record)); } diff --git a/modules/ordini/src/Ordine.php b/modules/ordini/src/Ordine.php index 2bad6f92a..52e8f3870 100755 --- a/modules/ordini/src/Ordine.php +++ b/modules/ordini/src/Ordine.php @@ -208,17 +208,17 @@ class Ordine extends Document $ultimo = Generator::getPreviousFrom($maschera, 'or_ordini', 'numero', [ 'YEAR(data) = '.prepare(date('Y', strtotime($data))), 'MONTH(data) = '.prepare(date('m', strtotime($data))), - 'idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir = '.prepare($direzione).')', + 'idtipoordine IN (SELECT `id` FROM `or_tipiordine` WHERE `dir` = '.prepare($direzione).')', ]); } elseif ((strpos($maschera, 'YYYY') !== false) or (strpos($maschera, 'yy') !== false)) { $ultimo = Generator::getPreviousFrom($maschera, 'or_ordini', 'numero', [ 'YEAR(data) = '.prepare(date('Y', strtotime($data))), - 'idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir = '.prepare($direzione).')', + 'idtipoordine IN (SELECT `id` FROM `or_tipiordine` WHERE `dir` = '.prepare($direzione).')', ]); } else { $ultimo = Generator::getPreviousFrom($maschera, 'or_ordini', 'numero', [ 'YEAR(data) = '.prepare(date('Y', strtotime($data))), - 'idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir = '.prepare($direzione).')', + 'idtipoordine IN (SELECT `id` FROM `or_tipiordine` WHERE `dir` = '.prepare($direzione).')', ]); } } @@ -248,17 +248,17 @@ class Ordine extends Document $ultimo = Generator::getPreviousFrom($maschera, 'or_ordini', 'numero_esterno', [ 'YEAR(data) = '.prepare(date('Y', strtotime($data))), 'MONTH(data) = '.prepare(date('m', strtotime($data))), - 'idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir = '.prepare($direzione).')', + 'idtipoordine IN (SELECT `id` FROM `or_tipiordine` WHERE `dir` = '.prepare($direzione).')', ]); } elseif ((strpos($maschera, 'YYYY') !== false) or (strpos($maschera, 'yy') !== false)) { $ultimo = Generator::getPreviousFrom($maschera, 'or_ordini', 'numero_esterno', [ 'YEAR(data) = '.prepare(date('Y', strtotime($data))), - 'idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir = '.prepare($direzione).')', + 'idtipoordine IN (SELECT `id` FROM `or_tipiordine` WHERE `dir` = '.prepare($direzione).')', ]); } else { $ultimo = Generator::getPreviousFrom($maschera, 'or_ordini', 'numero_esterno', [ 'YEAR(data) = '.prepare(date('Y', strtotime($data))), - 'idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir = '.prepare($direzione).')', + 'idtipoordine IN (SELECT `id` FROM `or_tipiordine` WHERE `dir` = '.prepare($direzione).')', ]); } diff --git a/modules/ordini/src/Tipo.php b/modules/ordini/src/Tipo.php index 1bd88243d..2003ac958 100755 --- a/modules/ordini/src/Tipo.php +++ b/modules/ordini/src/Tipo.php @@ -32,4 +32,34 @@ class Tipo extends Model { return $this->hasMany(Ordine::class, 'idtipoordine'); } + + /** + * Ritorna l'attributo name del tipo ordine. + * + * @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 ordine 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/modules/pagamenti/edit.php b/modules/pagamenti/edit.php index f7ba52057..28e2a91e8 100755 --- a/modules/pagamenti/edit.php +++ b/modules/pagamenti/edit.php @@ -108,7 +108,7 @@ foreach ($results as $result) { $elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento_lang`.`name` AS tipo_documento, `co_tipidocumento`.`dir`, NULL AS `deleted_at` FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id`=`co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang`= '.prepare(setting('Lingua')).') WHERE `co_documenti`.`idpagamento` = '.prepare($id_record).' UNION -SELECT `or_ordini`.`id`, `or_ordini`.`data`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_tipiordine`.`descrizione` AS tipo_documento, `or_tipiordine`.`dir`, NULL AS `deleted_at` FROM `or_ordini` JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine` WHERE `or_ordini`.`idpagamento` = '.prepare($id_record).' +SELECT `or_ordini`.`id`, `or_ordini`.`data`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_tipiordine_lang`.`name` AS tipo_documento, `or_tipiordine`.`dir`, NULL AS `deleted_at` FROM `or_ordini` INNER JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine` LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine`.`id`=`or_tipiordine_lang`.`id_record` AND `or_tipiordine_lang`.`id_lang`= '.prepare(setting('Lingua')).') WHERE `or_ordini`.`idpagamento` = '.prepare($id_record).' UNION SELECT `dt_ddt`.`id`, `dt_ddt`.`data`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_tipiddt_lang`.`name` AS tipo_documento, `dt_tipiddt`.`dir`, NULL AS `deleted_at` FROM `dt_ddt` INNER JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` LEFT JOIN `dt_tipiddt_lang` ON (`dt_tipiddt`.`id`=`dt_tipiddt_lang`.`id_record` AND `dt_tipiddt_lang`.`id_lang`= '.prepare(setting('Lingua')).') WHERE `dt_ddt`.`idpagamento` = '.prepare($id_record).' diff --git a/modules/preventivi/edit.php b/modules/preventivi/edit.php index 136b54beb..e3d802091 100755 --- a/modules/preventivi/edit.php +++ b/modules/preventivi/edit.php @@ -465,7 +465,7 @@ $("#link_form").bind("keypress", function(e) { $elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento_lang`.`name` AS tipo_documento, IF(`co_tipidocumento`.`dir` = \'entrata\', \'Fatture di vendita\', \'Fatture di acquisto\') AS modulo FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id` WHERE `co_righe_documenti`.`idpreventivo` = '.prepare($id_record).') UNION -SELECT `or_ordini`.`id`, `or_ordini`.`data`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_tipiordine`.`descrizione`, IF(`or_tipiordine`.`dir` = \'entrata\', \'Ordini cliente\', \'Ordini fornitore\') FROM `or_ordini` JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine` WHERE `or_righe_ordini`.`idpreventivo` = '.prepare($id_record).' +SELECT `or_ordini`.`id`, `or_ordini`.`data`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_tipiordine_lang`.`name`, IF(`or_tipiordine`.`dir` = \'entrata\', \'Ordini cliente\', \'Ordini fornitore\') FROM `or_ordini` JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` INNER JOIN `or_tipiordine` ON `or_tipiordine`.`id` = `or_ordini`.`idtipoordine` LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine_lang`.`id_record` = `or_tipiordine`.`id` AND `or_tipiordine_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `or_righe_ordini`.`idpreventivo` = '.prepare($id_record).' UNION SELECT `dt_ddt`.`id`, `dt_ddt`.`data`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_tipiddt_lang`.`name`, IF(`dt_tipiddt`.`dir` = \'entrata\', \'Ddt di vendita\', \'Ddt di acquisto\') FROM `dt_ddt` JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` INNER JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` LEFT JOIN `dt_tipiddt_lang` ON (`dt_tipiddt_lang`.`id_record` = `dt_tipiddt`.`id` AND `dt_tipiddt_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `dt_righe_ddt`.`original_document_id` = '.prepare($preventivo->id).' AND `dt_righe_ddt`.`original_document_type` = \'Modules\\\\Preventivi\\\\Preventivo\' diff --git a/update/2_4_55.sql b/update/2_4_55.sql index 94de7a3ac..62497da76 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -1703,3 +1703,25 @@ ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Ordini cliente'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`or_statiordine_lang`.`name`' WHERE `zz_modules`.`name` = 'Ordini cliente' AND `zz_views`.`name` = 'icon_title_Stato'; + +-- Aggiunta tabella or_tipiordine_lang +CREATE TABLE IF NOT EXISTS `or_tipiordine_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `or_tipiordine_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `or_tipiordine_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `or_tipiordine_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `or_tipiordine`; + +ALTER TABLE `or_tipiordine` + DROP `descrizione`; + +ALTER TABLE `or_tipiordine` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT; + +ALTER TABLE `or_tipiordine_lang` ADD CONSTRAINT `or_tipiordine_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `or_tipiordine`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index 73f1e5d2e..01cba11e5 100755 --- a/update/tables.php +++ b/update/tables.php @@ -151,6 +151,7 @@ return [ 'or_statiordine', 'or_statiordine_lang', 'or_tipiordine', + 'or_tipiordine_lang' 'zz_api_resources', 'zz_cache', 'zz_currencies',