diff --git a/CHANGELOG.md b/CHANGELOG.md index cc4a2802b..519630a6f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,8 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k ## 2.4.52 ### Aggiunto (Added) ### Modificato (Changed) +- Aggiunta una limitazione sulle quantità scaricabili nei documenti di vendita in modo da non poter vendere più articoli di quelli presenti fisicamente nel magazzino selezionato. Questa limitazione è legata all'impostazione **Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita** + ### Fixed - Risolto il problema di visualizzazione dei PDF negli allegati - Risolto un problema di movimentazione magazzino: gli articoli nelle attività venivano sempre movimentati da sede legale anche se specificata diversa sede di partenza nel documento (solo da popup di modifica articolo) diff --git a/src/Common/Components/Article.php b/src/Common/Components/Article.php index 8ea11e79d..0d80bace7 100755 --- a/src/Common/Components/Article.php +++ b/src/Common/Components/Article.php @@ -300,8 +300,21 @@ abstract class Article extends Accounting // Fix per valori di sede a NULL $id_sede = $id_sede ?: 0; + $qta_finale = $qta_movimento; - $this->articolo->movimenta($qta_movimento, $movimento, $data, false, [ + if( !setting('Permetti selezione articoli con quantità minore o uguale a zero in Documenti di Vendita') && $documento->direzione == 'entrata' ){ + $qta_sede = Movimento::where('idarticolo', $this->articolo->id) + ->where('idsede',$id_sede) + ->groupBy('idarticolo') + ->sum('qta'); + + if( ($qta_sede + $qta_finale) < 0 ){ + $qta_finale = -$qta_sede; + $this->attributes['qta'] = $this->original['qta'] + abs($qta_finale); + } + } + + $this->articolo->movimenta($qta_finale, $movimento, $data, false, [ 'reference_type' => get_class($documento), 'reference_id' => $documento->id, 'idsede' => $id_sede,