From fe53d091511e410bf0f0cb6177e54bb3d991a68f Mon Sep 17 00:00:00 2001 From: valentina Date: Tue, 9 Jul 2024 10:53:26 +0200 Subject: [PATCH] Fix creazione combinazioni articoli --- modules/combinazioni_articoli/actions.php | 3 +- .../src/Combinazione.php | 12 ++++---- update/2_5_1.sql | 23 --------------- update/2_5_3.sql | 28 ++++++++++++++++++- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/modules/combinazioni_articoli/actions.php b/modules/combinazioni_articoli/actions.php index ff5e16d67..ab202e30a 100644 --- a/modules/combinazioni_articoli/actions.php +++ b/modules/combinazioni_articoli/actions.php @@ -79,7 +79,8 @@ switch (filter('op')) { break; case 'genera-varianti': - $combinazione->generaTutto(); + $nome_articolo = $combinazione->getTranslation('title'); + $combinazione->generaTutto($nome_articolo); flash()->info(tr('Varianti generate correttamente!')); diff --git a/modules/combinazioni_articoli/src/Combinazione.php b/modules/combinazioni_articoli/src/Combinazione.php index 0904d2248..1254f19be 100644 --- a/modules/combinazioni_articoli/src/Combinazione.php +++ b/modules/combinazioni_articoli/src/Combinazione.php @@ -87,7 +87,7 @@ class Combinazione extends Model /** * Metodo per generare dinamicamente una variante dell'articolo per la combinazione corrente. */ - public function generaVariante($valori_attributi, $id_articolo = null) + public function generaVariante($valori_attributi, $id_articolo = null, $nome_articolo = null) { $database = database(); @@ -100,6 +100,8 @@ class Combinazione extends Model if ($articoli->isEmpty()) { $articolo = Articolo::build($this->codice); $articolo->id_combinazione = $this->id; + $articolo->setTranslation('title', $nome_articolo); + $articolo->name = $nome_articolo; $articolo->id_categoria = $this->id_categoria; $articolo->id_sottocategoria = $this->id_sottocategoria; @@ -120,8 +122,8 @@ class Combinazione extends Model $articolo->save(); } } - $database->query("INSERT INTO `mg_articoli_lang` (`id_record`, `id_lang`, `title`) VALUES ('".$articolo->id."', ".\Models\Locale::getDefault()->id.", '".implode("', '", $variante)."')"); - $articolo->codice = $this->codice.'-'.implode('|', $variante); + $database->query("INSERT INTO `mg_articoli_lang` (`id_record`, `id_lang`, `title`) VALUES ('".$articolo->id."', ".\Models\Locale::getDefault()->id.", '".$articolo->getTranslation('title')."')"); + $articolo->codice = $this->codice.' - '.implode('|', $variante); $articolo->save(); } @@ -144,7 +146,7 @@ class Combinazione extends Model /** * Metodo per la generazione di tutte le varianti disponibili per la combinazione corrente. */ - public function generaTutto() + public function generaTutto($nome_articolo = null) { if ($this->articoli()->count() !== 0) { return; @@ -162,7 +164,7 @@ class Combinazione extends Model // Generazione delle singole varianti foreach ($varianti as $variante) { - $this->generaVariante($variante); + $this->generaVariante($variante, null, $nome_articolo); } } diff --git a/update/2_5_1.sql b/update/2_5_1.sql index 17fa34500..57c2cbbb0 100644 --- a/update/2_5_1.sql +++ b/update/2_5_1.sql @@ -470,29 +470,6 @@ ORDER BY UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'GROUP_CONCAT(\' \',`an_tipianagrafiche_lang`.`title`)' WHERE `zz_modules`.`name` = 'Anagrafiche' AND `zz_views`.`name` = 'Tipo'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'GROUP_CONCAT(\' \',`an_relazioni_lang`.`title`)' WHERE `zz_modules`.`name` = 'Anagrafiche' AND `zz_views`.`name` = 'color_title_Relazione'; --- Allineamento vista Articoli -UPDATE `zz_modules` SET `options` = " -SELECT - |select| -FROM - `mg_articoli` - LEFT JOIN `mg_articoli_lang` ON (`mg_articoli_lang`.`id_record` = `mg_articoli`.`id` AND `mg_articoli_lang`.|lang|) - LEFT JOIN `an_anagrafiche` ON `mg_articoli`.`id_fornitore` = `an_anagrafiche`.`idanagrafica` - LEFT JOIN `co_iva` ON `mg_articoli`.`idiva_vendita` = `co_iva`.`id` - LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_impegnata, `or_righe_ordini`.`idarticolo` 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` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'entrata' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1 GROUP BY `idarticolo`) a ON `a`.`idarticolo` = `mg_articoli`.`id` - LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_ordinata, `or_righe_ordini`.`idarticolo` 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` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'uscita' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1 - GROUP BY `idarticolo`) ordini_fornitore ON `ordini_fornitore`.`idarticolo` = `mg_articoli`.`id` - LEFT JOIN `mg_categorie` ON `mg_articoli`.`id_categoria` = `mg_categorie`.`id` - LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id` = `mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.|lang|) - LEFT JOIN `mg_categorie` AS sottocategorie ON `mg_articoli`.`id_sottocategoria` = `sottocategorie`.`id` - LEFT JOIN `mg_categorie_lang` AS sottocategorie_lang ON (`sottocategorie`.`id` = `sottocategorie_lang`.`id_record` AND `sottocategorie_lang`.|lang|) - LEFT JOIN (SELECT `co_iva`.`percentuale` AS perc, `co_iva`.`id`, `zz_settings`.`nome` FROM `co_iva` INNER JOIN `zz_settings` ON `co_iva`.`id`=`zz_settings`.`valore`)AS iva ON `iva`.`nome`= 'Iva predefinita' -WHERE - 1=1 AND(`mg_articoli`.`deleted_at`) IS NULL -HAVING - 2=2 -ORDER BY - `mg_articoli_lang`.`title`" WHERE `name` = 'Articoli'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`mg_articoli_lang`.`title`' WHERE `zz_modules`.`name` = 'Articoli' AND `zz_views`.`name` = 'Descrizione'; -- Allineamento vista Aspetto beni diff --git a/update/2_5_3.sql b/update/2_5_3.sql index d146e4ce1..201952e90 100644 --- a/update/2_5_3.sql +++ b/update/2_5_3.sql @@ -83,4 +83,30 @@ INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES -- Fix plugin Ddt del cliente UPDATE `zz_plugins` SET `options` = '{ \"main_query\": [ { \"type\": \"table\", \"fields\": \"Numero, Data, Descrizione, Qtà\", \"query\": \"SELECT `dt_ddt`.`id`, (CASE WHEN `dt_tipiddt`.`dir` = \'entrata\' THEN (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt in uscita\') ELSE (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt in entrata\') END) AS _link_module_, `dt_ddt`.`id` AS _link_record_, IF(`dt_ddt`.`numero_esterno` = \'\', `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`) AS Numero, DATE_FORMAT(`dt_ddt`.`data`, \'%d/%m/%Y\') AS Data, `dt_righe_ddt`.`descrizione` AS `Descrizione`, REPLACE(REPLACE(REPLACE(FORMAT(`dt_righe_ddt`.`qta`, 2), \',\', \'#\'), \'.\', \',\'), \'#\', \'.\') AS `Qtà` FROM `dt_ddt` LEFT JOIN `dt_righe_ddt` ON `dt_ddt`.`id`=`dt_righe_ddt`.`idddt` JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` WHERE `dt_ddt`.`idanagrafica`=|id_parent| ORDER BY `dt_ddt`.`id` DESC\"} ]}' WHERE `zz_plugins`.`name` = 'Ddt del cliente'; -UPDATE `em_templates_lang` SET `body` = '

Spett.le {ragione_sociale},

\n\n

da un riscontro contabile, ci risulta che la fattura numero {numero} a Voi intestata, riporti il mancato pagamento delle seguenti rate:

\n\n

{scadenze_fatture_scadute}

\n\n

La sollecitiamo pertanto di provvedere quanto prima a regolarizzare la sua situazione contabile. A tal proposito, il pagamento potrà essere effettuato tramite {pagamento}.

\n\n

Se ha già provveduto al pagamento, ritenga nulla la presente.

\n\n

\n\n

La ringraziamo e le porgiamo i nostri saluti.

' WHERE `em_templates_lang`.`title` = 'Sollecito di pagamento'; \ No newline at end of file +UPDATE `em_templates_lang` SET `body` = '

Spett.le {ragione_sociale},

\n\n

da un riscontro contabile, ci risulta che la fattura numero {numero} a Voi intestata, riporti il mancato pagamento delle seguenti rate:

\n\n

{scadenze_fatture_scadute}

\n\n

La sollecitiamo pertanto di provvedere quanto prima a regolarizzare la sua situazione contabile. A tal proposito, il pagamento potrà essere effettuato tramite {pagamento}.

\n\n

Se ha già provveduto al pagamento, ritenga nulla la presente.

\n\n

\n\n

La ringraziamo e le porgiamo i nostri saluti.

' WHERE `em_templates_lang`.`title` = 'Sollecito di pagamento'; + +-- Allineamento vista Articoli +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `mg_articoli` + LEFT JOIN `mg_articoli_lang` ON (`mg_articoli_lang`.`id_record` = `mg_articoli`.`id` AND `mg_articoli_lang`.|lang|) + LEFT JOIN `an_anagrafiche` ON `mg_articoli`.`id_fornitore` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `co_iva` ON `mg_articoli`.`idiva_vendita` = `co_iva`.`id` + LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_impegnata, `or_righe_ordini`.`idarticolo` 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` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'entrata' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1 GROUP BY `idarticolo`) a ON `a`.`idarticolo` = `mg_articoli`.`id` + LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_ordinata, `or_righe_ordini`.`idarticolo` 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` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'uscita' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1 + GROUP BY `idarticolo`) ordini_fornitore ON `ordini_fornitore`.`idarticolo` = `mg_articoli`.`id` + LEFT JOIN `mg_categorie` ON `mg_articoli`.`id_categoria` = `mg_categorie`.`id` + LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id` = `mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.|lang|) + LEFT JOIN `mg_categorie` AS sottocategorie ON `mg_articoli`.`id_sottocategoria` = `sottocategorie`.`id` + LEFT JOIN `mg_categorie_lang` AS sottocategorie_lang ON (`sottocategorie`.`id` = `sottocategorie_lang`.`id_record` AND `sottocategorie_lang`.|lang|) + LEFT JOIN (SELECT `co_iva`.`percentuale` AS perc, `co_iva`.`id`, `zz_settings`.`nome` FROM `co_iva` INNER JOIN `zz_settings` ON `co_iva`.`id`=`zz_settings`.`valore`)AS iva ON `iva`.`nome`= 'Iva predefinita' +WHERE + 1=1 AND(`mg_articoli`.`deleted_at`) IS NULL +GROUP BY + `mg_articoli`.`id` +HAVING + 2=2 +ORDER BY + `mg_articoli_lang`.`title`" WHERE `name` = 'Articoli'; \ No newline at end of file