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/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..53b766564 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 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_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 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_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 reference_type='.prepare('Modules\Interventi\Intervento').' AND reference_id='.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/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, - ], - ], -]; 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/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 '