From d984831e0134c64e5ff481ef7370b329aba4592c Mon Sep 17 00:00:00 2001 From: loviuz Date: Fri, 5 Feb 2021 00:58:12 +0100 Subject: [PATCH 1/8] Fix sintassi query --- update/2_4_22.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/update/2_4_22.sql b/update/2_4_22.sql index 4768e2479..0e762df13 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -9,10 +9,10 @@ UPDATE `dt_causalet` SET `reversed`=1 WHERE `descrizione`='Reso'; ALTER TABLE `mg_movimenti` ADD INDEX(`idarticolo`); -- Aggiunta possibilità di scegliere uno stato dopo la firma anche se non ha il flag completato -UPDATE `zz_settings` SET `tipo`='query=SELECT idstatointervento AS id, descrizione AS text FROM in_statiintervento' WHERE `nome`='Stato dell''attività dopo la firma' +UPDATE `zz_settings` SET `tipo`='query=SELECT idstatointervento AS id, descrizione AS text FROM in_statiintervento' WHERE `nome`='Stato dell''attività dopo la firma'; -- Aggiunto filtro N3.% nella scelta aliquota per le dichiarazioni d'intento -UPDATE `zz_settings` SET `tipo` = 'query=SELECT id, descrizione FROM `co_iva` WHERE codice_natura_fe LIKE \'N3.%\' AND deleted_at IS NULL ORDER BY descrizione ASC' WHERE `zz_settings`.`nome` = 'Iva per lettere d''intento'; +UPDATE `zz_settings` SET `tipo` = 'query=SELECT id, descrizione FROM `co_iva` WHERE codice_natura_fe LIKE ''N3.%'' AND deleted_at IS NULL ORDER BY descrizione ASC' WHERE `zz_settings`.`nome` = 'Iva per lettere d''intento'; -- Aggiunte descrizioni aliquote IVA con codice natura 2.1 From fd49bbf1019495bfbfd14fe2c4af527189c5610a Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Fri, 5 Feb 2021 13:27:18 +0100 Subject: [PATCH 2/8] Eliminata colonna idsede_controparte e rinominata colonna idsede_azienda in mg_movimenti --- modules/articoli/ajax/select.php | 19 +++++-------------- modules/articoli/modutil.php | 15 ++++++--------- modules/articoli/src/Articolo.php | 6 +++--- modules/articoli/src/Import/CSV.php | 3 +-- modules/articoli/src/Movimento.php | 6 ------ modules/movimenti/actions.php | 9 +++------ src/Common/Components/Article.php | 6 ++---- update/2_4_22.sql | 6 +++++- 8 files changed, 25 insertions(+), 45 deletions(-) diff --git a/modules/articoli/ajax/select.php b/modules/articoli/ajax/select.php index 909fa447b..3be6f8f9f 100755 --- a/modules/articoli/ajax/select.php +++ b/modules/articoli/ajax/select.php @@ -106,8 +106,8 @@ switch ($resource) { // Se c'è una sede settata, carico tutti gli articoli presenti in quella sede if (!$sedi_non_impostate) { $query .= ' - LEFT JOIN (SELECT idarticolo, idsede_azienda, idsede_controparte FROM mg_movimenti GROUP BY idarticolo) movimenti ON movimenti.idarticolo=mg_articoli.id - LEFT JOIN an_sedi ON an_sedi.id = movimenti.idsede_azienda'; + LEFT JOIN (SELECT idarticolo, idsede FROM mg_movimenti GROUP BY idarticolo) movimenti ON movimenti.idarticolo=mg_articoli.id + LEFT JOIN an_sedi ON an_sedi.id = movimenti.idsede'; } $query .= ' @@ -154,20 +154,11 @@ switch ($resource) { // IVA da impostazioni foreach ($rs as $k => $r) { // Lettura movimenti delle mie sedi - $qta_azienda = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede_azienda = '.prepare($superselect['idsede_partenza'])); - - // Lettura eventuali movimenti ad una propria sede (nel caso di movimenti fra sedi della mia azienda) per il calcolo corretto delle quantità - if ($superselect['idsede_partenza'] != 0) { - $qta_controparte = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede_controparte = '.prepare($superselect['idsede_partenza'])); - } else { - $qta_controparte = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM ((( mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte ) LEFT JOIN dt_ddt ON mg_movimenti.idddt = dt_ddt.id ) LEFT JOIN co_documenti ON mg_movimenti.iddocumento = co_documenti.id ) WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede_controparte = '.prepare($superselect['idsede_partenza']).' AND IFNULL(dt_ddt.idanagrafica, co_documenti.idanagrafica) = '.prepare(setting('Azienda predefinita'))); - } - - $qta = $qta_azienda['qta'] - $qta_controparte['qta']; + $qta_sede = $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede WHERE mg_movimenti.idarticolo = '.prepare($r['id']).' AND idsede = '.prepare($superselect['idsede_partenza']))['qta']; $rs[$k] = array_merge($r, [ - 'text' => $r['codice'].' - '.$r['descrizione'].' '.(!$r['servizio'] ? '('.Translator::numberToLocale($qta).(!empty($r['um']) ? ' '.$r['um'] : '').')' : ''), - 'disabled' => $r['qta'] <= 0 && !$permetti_movimenti_sotto_zero && !$r['servizio'], + 'text' => $r['codice'].' - '.$r['descrizione'].' '.(!$r['servizio'] ? '('.Translator::numberToLocale($qta_sede).(!empty($r['um']) ? ' '.$r['um'] : '').')' : ''), + 'disabled' => $qta_sede <= 0 && !$permetti_movimenti_sotto_zero && !$r['servizio'], ]); } diff --git a/modules/articoli/modutil.php b/modules/articoli/modutil.php index b2c328054..70cb11dc5 100755 --- a/modules/articoli/modutil.php +++ b/modules/articoli/modutil.php @@ -121,23 +121,20 @@ function aggiorna_sedi_movimenti($module, $id) if ($module == 'ddt') { $rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione, dir FROM dt_ddt INNER JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($id)); - $idsede_azienda = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $idsede_controparte = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_partenza'] : $rs[0]['idsede_destinazione']; + $idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE idddt='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE idddt='.prepare($id)); } elseif ($module == 'documenti') { $rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione, dir FROM co_documenti INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($id)); - $idsede_azienda = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $idsede_controparte = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_partenza'] : $rs[0]['idsede_destinazione']; + $idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE iddocumento='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE iddocumento='.prepare($id)); } elseif ($module == 'interventi') { $rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione FROM in_interventi WHERE in_interventi.id='.prepare($id)); - $idsede_azienda = $rs[0]['idsede_partenza']; - $idsede_controparte = $rs[0]['idsede_destinazione']; + $idsede = $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede_azienda='.prepare($idsede_azienda).', idsede_controparte='.prepare($idsede_controparte).' WHERE idintervento='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE idintervento='.prepare($id)); } } diff --git a/modules/articoli/src/Articolo.php b/modules/articoli/src/Articolo.php index 4554151c2..12c541889 100755 --- a/modules/articoli/src/Articolo.php +++ b/modules/articoli/src/Articolo.php @@ -204,12 +204,12 @@ class Articolo extends Model { return $this->movimenti() ->select( - 'idsede_azienda', + 'idsede', database()->raw('SUM(qta) AS qta') - )->groupBy(['idsede_azienda']) + )->groupBy(['idsede']) ->get() ->mapToGroups(function ($item, $key) { - return [$item->idsede_azienda => (float) $item->attributes['qta']]; + return [$item->idsede => (float) $item->attributes['qta']]; }) ->flatten() ->toArray(); diff --git a/modules/articoli/src/Import/CSV.php b/modules/articoli/src/Import/CSV.php index 21b96716e..c5b352c56 100644 --- a/modules/articoli/src/Import/CSV.php +++ b/modules/articoli/src/Import/CSV.php @@ -291,8 +291,7 @@ class CSV extends CSVImporter $qta_movimento = $qta_registrata - $giacenze[$id_sede]; $articolo->movimenta($qta_movimento, tr('Movimento da importazione'), new Carbon(), false, [ - 'idsede_azienda' => $id_sede, - 'idsede_controparte' => 0, + 'idsede' => $id_sede, ]); } diff --git a/modules/articoli/src/Movimento.php b/modules/articoli/src/Movimento.php index 91e32cdf1..21c950889 100755 --- a/modules/articoli/src/Movimento.php +++ b/modules/articoli/src/Movimento.php @@ -24,12 +24,6 @@ use Illuminate\Database\Eloquent\Model; /* * Classe dedicata alla gestione dei movimenti di magazzino degli articoli. - * - * Alcuni appunti sull'utilizzo dei campi *idsede_azienda* e *idsede_controparte* - * Il campo *idsede_azienda* è relativo alla sede dell'Azienda che è interessata dal movimento, mentre *idsede_controparte* indica la sede del Cliente/Fornitore controparte. - * La natura effettiva del movimento (e di *idsede_controparte*) è quindi identificabile dal valore del campo *qta*: se positivo il magazzino è aumentatao (movimento da *idsede_controparte* a *idsede_azienda*), se negativo il magazzino è diminuito (movimento da *idsede_azienda* a *idsede_controparte*). - * - * Si noti che il valore "0" per i campi *idsede_* indica solitamente una Sede legale dell'Anagrafica di riferimento. Solo se il movimento non è associato ad alcun documento il campo *idsede_controparte* non segue questo significato, poichè il movimento in questo caso è considerato manuale. */ class Movimento extends Model { diff --git a/modules/movimenti/actions.php b/modules/movimenti/actions.php index a6ee362c2..b7d082664 100755 --- a/modules/movimenti/actions.php +++ b/modules/movimenti/actions.php @@ -45,20 +45,17 @@ switch (post('op')) { // Registrazione del movimento con variazione della quantità $articolo->movimenta($qta, $descrizione, $data, 1, [ - 'idsede_controparte' => $id_sede_controparte, - 'idsede_azienda' => $id_sede_azienda, + 'idsede' => $id_sede_azienda, ]); } elseif ($tipo_movimento == 'spostamento') { // Registrazione del movimento verso la sede di destinazione $articolo->registra($qta, $descrizione, $data, 1, [ - 'idsede_controparte' => 0, - 'idsede_azienda' => $idsede_destinazione, + 'idsede' => $idsede_destinazione, ]); // Registrazione del movimento dalla sede di origine $articolo->registra(-$qta, $descrizione, $data, 1, [ - 'idsede_controparte' => 0, - 'idsede_azienda' => $idsede_partenza, + 'idsede' => $idsede_partenza, ]); } diff --git a/src/Common/Components/Article.php b/src/Common/Components/Article.php index eb23f7ede..30c0be7e9 100755 --- a/src/Common/Components/Article.php +++ b/src/Common/Components/Article.php @@ -277,8 +277,7 @@ abstract class Article extends Accounting $qta_movimento = $documento->direzione == 'uscita' ? $qta : -$qta; $movimento = Movimento::descrizioneMovimento($qta_movimento, $documento->direzione).' - '.$documento->getReference(); - $partenza = $documento->direzione == 'uscita' ? $documento->idsede_destinazione : $documento->idsede_partenza; - $arrivo = $documento->direzione == 'uscita' ? $documento->idsede_partenza : $documento->idsede_destinazione; + $idsede = $documento->direzione == 'uscita' ? $documento->idsede_destinazione : $documento->idsede_partenza; // Fix per valori di sede a NULL $partenza = $partenza ?: 0; @@ -287,8 +286,7 @@ abstract class Article extends Accounting $this->articolo->movimenta($qta_movimento, $movimento, $data, false, [ 'reference_type' => get_class($documento), 'reference_id' => $documento->id, - 'idsede_azienda' => $partenza, - 'idsede_controparte' => $arrivo, + 'idsede' => $idsede, ]); } diff --git a/update/2_4_22.sql b/update/2_4_22.sql index 1283868ac..b950781be 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -94,4 +94,8 @@ ALTER TABLE `co_documenti` ADD `is_ritenuta_pagata` BOOLEAN NOT NULL AFTER `id_r UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`\r\n LEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`\r\n LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\r\n LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`\r\n LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\r\n LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\r\nWHERE 1=1 AND\r\n (`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN(\'Emessa\',\'Parzialmente pagato\',\'Pagato\'))\r\nHAVING 2=2\r\nORDER BY `scadenza` ASC' WHERE `zz_modules`.`id` = (SELECT `id` FROM `zz_modules` WHERE `name`='Scadenzario'); -- Modificato nome segmento -UPDATE `zz_segments` SET `name` = 'Scadenzario completo per periodo' WHERE `zz_segments`.`name` = 'Scadenzario completo'; \ No newline at end of file +UPDATE `zz_segments` SET `name` = 'Scadenzario completo per periodo' WHERE `zz_segments`.`name` = 'Scadenzario completo'; + +-- Eliminata colonna idsede_controparte e rinominata idsede_azienda in idsede +ALTER TABLE `mg_movimenti` CHANGE `idsede_azienda` `idsede` INT(11) NOT NULL; +ALTER TABLE `mg_movimenti` DROP `idsede_controparte`; \ No newline at end of file From b2a4a8f5c4e6a552f749e1e366fd9aa9b240147f Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Fri, 5 Feb 2021 14:56:42 +0100 Subject: [PATCH 3/8] Rinominata a database colonna idsede_azienda in idsede --- update/2_4_22.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/update/2_4_22.sql b/update/2_4_22.sql index b950781be..77680abb8 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -98,4 +98,7 @@ UPDATE `zz_segments` SET `name` = 'Scadenzario completo per periodo' WHERE `zz_s -- Eliminata colonna idsede_controparte e rinominata idsede_azienda in idsede ALTER TABLE `mg_movimenti` CHANGE `idsede_azienda` `idsede` INT(11) NOT NULL; -ALTER TABLE `mg_movimenti` DROP `idsede_controparte`; \ No newline at end of file +ALTER TABLE `mg_movimenti` DROP `idsede_controparte`; +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_movimenti` JOIN `mg_articoli` ON `mg_articoli`.id = `mg_movimenti`.`idarticolo` LEFT JOIN `an_sedi` ON `mg_movimenti`.`idsede` = `an_sedi`.`id` WHERE 1=1 HAVING 2=2 ORDER BY mg_movimenti.data DESC, mg_movimenti.created_at DESC' WHERE `zz_modules`.`name` = 'Movimenti'; +UPDATE `zz_views` SET `query` = 'IF( mg_movimenti.idsede=0, \'Sede legale\', an_sedi.nomesede )' WHERE `zz_views`.`name` = 'Sede' 'Movimenti' AND `zz_views`.`id_module`= (SELECT `id` FROM `zz_modules` WHERE `name`='Movimenti'); +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_articoli`\r\n LEFT OUTER JOIN an_anagrafiche ON mg_articoli.id_fornitore = an_anagrafiche.idanagrafica\r\n LEFT OUTER JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id\r\n LEFT OUTER JOIN (\r\n SELECT SUM(qta - qta_evasa) AS qta_impegnata, idarticolo FROM or_righe_ordini\r\n INNER JOIN or_ordini ON or_righe_ordini.idordine = or_ordini.id\r\n WHERE idstatoordine IN (SELECT id FROM or_statiordine WHERE completato = 0)\r\n GROUP BY idarticolo\r\n ) ordini ON ordini.idarticolo = mg_articoli.id\r\n LEFT OUTER JOIN (SELECT `idarticolo`, `idsede`, SUM(`qta`) AS `qta` FROM `mg_movimenti` WHERE `idsede` = |giacenze_sedi_idsede| GROUP BY `idarticolo`, `idsede`) movimenti ON `mg_articoli`.`id` = `movimenti`.`idarticolo`\r\nWHERE 1=1 AND `mg_articoli`.`deleted_at` IS NULL HAVING 2=2 AND `Q.tà` > 0 ORDER BY `descrizione`' WHERE `zz_modules`.`name` = 'Giacenze sedi'; \ No newline at end of file From 2bd91bea23950d9c552566af270260afa7b9f4cc Mon Sep 17 00:00:00 2001 From: loviuz Date: Fri, 5 Feb 2021 15:38:35 +0100 Subject: [PATCH 4/8] Rimozione collegamento obbligatorio nota di credito da importFE --- plugins/importFE/generate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index 648f697fc..b9cf67e6c 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -245,7 +245,7 @@ if (!empty($anagrafica)) { if (in_array($dati_generali['TipoDocumento'], ['TD04', 'TD05'])) { echo '
- {[ "type": "select", "label": "'.tr('Fattura collegata').'", "name": "ref_fattura", "required": 1, "values": "query='.$query.'" ]} + {[ "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).')'; From e31251c69b6a5fb68db61cdb4e00263a602243b7 Mon Sep 17 00:00:00 2001 From: loviuz Date: Fri, 5 Feb 2021 15:52:21 +0100 Subject: [PATCH 5/8] Fix query di aggiornamento --- update/2_4_22.sql | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/update/2_4_22.sql b/update/2_4_22.sql index 77680abb8..cd1f46f07 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -91,7 +91,7 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e ALTER TABLE `co_documenti` ADD `is_ritenuta_pagata` BOOLEAN NOT NULL AFTER `id_ricevuta_principale`; -- Modificato options modulo scadenzario -UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`\r\n LEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`\r\n LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\r\n LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`\r\n LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\r\n LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\r\nWHERE 1=1 AND\r\n (`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN(\'Emessa\',\'Parzialmente pagato\',\'Pagato\'))\r\nHAVING 2=2\r\nORDER BY `scadenza` ASC' WHERE `zz_modules`.`id` = (SELECT `id` FROM `zz_modules` WHERE `name`='Scadenzario'); +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`\r\n LEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`\r\n LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\r\n LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`\r\n LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\r\n LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\r\nWHERE 1=1 AND\r\n (`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN(\'Emessa\',\'Parzialmente pagato\',\'Pagato\'))\r\nHAVING 2=2\r\nORDER BY `scadenza` ASC' WHERE `zz_modules`.`name`='Scadenzario'; -- Modificato nome segmento UPDATE `zz_segments` SET `name` = 'Scadenzario completo per periodo' WHERE `zz_segments`.`name` = 'Scadenzario completo'; @@ -101,4 +101,7 @@ ALTER TABLE `mg_movimenti` CHANGE `idsede_azienda` `idsede` INT(11) NOT NULL; ALTER TABLE `mg_movimenti` DROP `idsede_controparte`; UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_movimenti` JOIN `mg_articoli` ON `mg_articoli`.id = `mg_movimenti`.`idarticolo` LEFT JOIN `an_sedi` ON `mg_movimenti`.`idsede` = `an_sedi`.`id` WHERE 1=1 HAVING 2=2 ORDER BY mg_movimenti.data DESC, mg_movimenti.created_at DESC' WHERE `zz_modules`.`name` = 'Movimenti'; UPDATE `zz_views` SET `query` = 'IF( mg_movimenti.idsede=0, \'Sede legale\', an_sedi.nomesede )' WHERE `zz_views`.`name` = 'Sede' 'Movimenti' AND `zz_views`.`id_module`= (SELECT `id` FROM `zz_modules` WHERE `name`='Movimenti'); -UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_articoli`\r\n LEFT OUTER JOIN an_anagrafiche ON mg_articoli.id_fornitore = an_anagrafiche.idanagrafica\r\n LEFT OUTER JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id\r\n LEFT OUTER JOIN (\r\n SELECT SUM(qta - qta_evasa) AS qta_impegnata, idarticolo FROM or_righe_ordini\r\n INNER JOIN or_ordini ON or_righe_ordini.idordine = or_ordini.id\r\n WHERE idstatoordine IN (SELECT id FROM or_statiordine WHERE completato = 0)\r\n GROUP BY idarticolo\r\n ) ordini ON ordini.idarticolo = mg_articoli.id\r\n LEFT OUTER JOIN (SELECT `idarticolo`, `idsede`, SUM(`qta`) AS `qta` FROM `mg_movimenti` WHERE `idsede` = |giacenze_sedi_idsede| GROUP BY `idarticolo`, `idsede`) movimenti ON `mg_articoli`.`id` = `movimenti`.`idarticolo`\r\nWHERE 1=1 AND `mg_articoli`.`deleted_at` IS NULL HAVING 2=2 AND `Q.tà` > 0 ORDER BY `descrizione`' WHERE `zz_modules`.`name` = 'Giacenze sedi'; \ No newline at end of file +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_articoli`\r\n LEFT OUTER JOIN an_anagrafiche ON mg_articoli.id_fornitore = an_anagrafiche.idanagrafica\r\n LEFT OUTER JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id\r\n LEFT OUTER JOIN (\r\n SELECT SUM(qta - qta_evasa) AS qta_impegnata, idarticolo FROM or_righe_ordini\r\n INNER JOIN or_ordini ON or_righe_ordini.idordine = or_ordini.id\r\n WHERE idstatoordine IN (SELECT id FROM or_statiordine WHERE completato = 0)\r\n GROUP BY idarticolo\r\n ) ordini ON ordini.idarticolo = mg_articoli.id\r\n LEFT OUTER JOIN (SELECT `idarticolo`, `idsede`, SUM(`qta`) AS `qta` FROM `mg_movimenti` WHERE `idsede` = |giacenze_sedi_idsede| GROUP BY `idarticolo`, `idsede`) movimenti ON `mg_articoli`.`id` = `movimenti`.`idarticolo`\r\nWHERE 1=1 AND `mg_articoli`.`deleted_at` IS NULL HAVING 2=2 AND `Q.tà` > 0 ORDER BY `descrizione`' WHERE `zz_modules`.`name` = 'Giacenze sedi'; + +-- Rimozione campo idsede_azienda +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF( mg_movimenti.idsede=0, \'Sede legale\', an_sedi.nomesede )' WHERE `zz_views`.`name` = 'Sede' AND `zz_modules`.`name` = 'Movimenti'; \ No newline at end of file From 2b1776cbf8f0880cb78f93dda9a653abf3d6da68 Mon Sep 17 00:00:00 2001 From: loviuz Date: Fri, 5 Feb 2021 15:52:26 +0100 Subject: [PATCH 6/8] Rimozione file non usato --- modules/listini/bulk.php | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 modules/listini/bulk.php diff --git a/modules/listini/bulk.php b/modules/listini/bulk.php deleted file mode 100644 index d2825c5da..000000000 --- a/modules/listini/bulk.php +++ /dev/null @@ -1,26 +0,0 @@ -query('UPDATE mg_prezzi_articoli SET sconto_percentuale='.prepare($sconto).' WHERE id='.prepare($id_record)); - } - flash()->info(tr('Sconti modificati correttamente!')); - break; -} - -return [ - 'aggiorna-listino' => [ - 'text' => ''.tr('Modifica sconto').'', - 'data' => [ - 'title' => tr('Inserisci lo sconto per questi articoli'), - 'msg' => '{[ "type": "text", "label": "'.tr('Nuovo sconto').'","icon-after":"%", "name": "sconto" ]}', - 'button' => tr('Modifica'), - 'class' => 'btn btn-lg btn-warning', - 'blank' => false, - ], - ], -]; From 6ffd497eddbbe7bfb20c03e918f9a881298acc47 Mon Sep 17 00:00:00 2001 From: loviuz Date: Fri, 5 Feb 2021 16:05:41 +0100 Subject: [PATCH 7/8] Rimozione file non usato --- modules/listini/bulk.php | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 modules/listini/bulk.php diff --git a/modules/listini/bulk.php b/modules/listini/bulk.php deleted file mode 100644 index d2825c5da..000000000 --- a/modules/listini/bulk.php +++ /dev/null @@ -1,26 +0,0 @@ -query('UPDATE mg_prezzi_articoli SET sconto_percentuale='.prepare($sconto).' WHERE id='.prepare($id_record)); - } - flash()->info(tr('Sconti modificati correttamente!')); - break; -} - -return [ - 'aggiorna-listino' => [ - 'text' => ''.tr('Modifica sconto').'', - 'data' => [ - 'title' => tr('Inserisci lo sconto per questi articoli'), - 'msg' => '{[ "type": "text", "label": "'.tr('Nuovo sconto').'","icon-after":"%", "name": "sconto" ]}', - 'button' => tr('Modifica'), - 'class' => 'btn btn-lg btn-warning', - 'blank' => false, - ], - ], -]; From 3efd8dc6d6a1971486d37a9143d2b49e261a8aa5 Mon Sep 17 00:00:00 2001 From: loviuz Date: Fri, 5 Feb 2021 16:05:45 +0100 Subject: [PATCH 8/8] Correzione movimenti di magazzino con sedi diverse --- CHANGELOG.md | 5 ++++- modules/articoli/modutil.php | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 384084354..4a4844df6 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,9 +47,12 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k - Aggiunta possibilità di notificare al cliente/tecnico in modo automatico quando viene cambiato lo stato dell'intervento - Aggiunta flag per escludere la generazione scadenza di una ritenuta d'acconto se viene versata dal fornitore - ### Modificato (Changed) +### Modificato (Changed) - Impostazione CAP automatico a 99999 nella FE per clienti esteri +### Fixed + - Correzione movimenti di magazzino con sedi diverse + ## 2.4.21 (2021-01-14) ### Aggiunto (Added) diff --git a/modules/articoli/modutil.php b/modules/articoli/modutil.php index 70cb11dc5..53b766564 100755 --- a/modules/articoli/modutil.php +++ b/modules/articoli/modutil.php @@ -123,18 +123,18 @@ function aggiorna_sedi_movimenti($module, $id) $idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE idddt='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare('Modules\DDT\DDT').' AND reference_id='.prepare($id)); } elseif ($module == 'documenti') { $rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione, dir FROM co_documenti INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($id)); $idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE iddocumento='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare('Modules\Fatture\Fattura').' AND reference_id='.prepare($id)); } elseif ($module == 'interventi') { $rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione FROM in_interventi WHERE in_interventi.id='.prepare($id)); $idsede = $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE idintervento='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare('Modules\Interventi\Intervento').' AND reference_id='.prepare($id)); } }