diff --git a/include/common/riga.php b/include/common/riga.php index 786019cb3..4dd5b31bc 100755 --- a/include/common/riga.php +++ b/include/common/riga.php @@ -123,6 +123,9 @@ if (in_array($module['name'], ['Ordini cliente', 'Ordini fornitore'])) {
{[ "type": "date", "label": "'.tr('Data prevista evasione').'", "name": "data_evasione", "value": "'.$result['data_evasione'].'" ]}
+
+ {[ "type": "checkbox", "label": "'.tr('Articolo confermato').'", "name": "confermato", "value": "'.($options['action'] == 'add' ? setting("Conferma automaticamente le quantità negli ordini cliente") : $result['confermato']).'" ]} +
'; diff --git a/modules/articoli/plugins/articoli.giacenze.php b/modules/articoli/plugins/articoli.giacenze.php index d21a34edf..5af545da8 100755 --- a/modules/articoli/plugins/articoli.giacenze.php +++ b/modules/articoli/plugins/articoli.giacenze.php @@ -34,6 +34,7 @@ FROM or_ordini WHERE idarticolo = '.prepare($articolo->id)." AND (SELECT dir FROM or_tipiordine WHERE or_tipiordine.id=or_ordini.idtipoordine) = '|dir|' AND (or_righe_ordini.qta - or_righe_ordini.qta_evasa) > 0 + AND or_righe_ordini.confermato = 1 GROUP BY or_ordini.id HAVING qta_ordinata > 0"; diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 06593472a..29b18675d 100755 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -175,6 +175,7 @@ switch (post('op')) { $articolo->costo_unitario = post('costo_unitario') ?: 0; $articolo->data_evasione = post('data_evasione') ?: null; + $articolo->confermato = post('confermato') ?: 0; $articolo->setPrezzoUnitario(post('prezzo_unitario'), post('idiva')); $articolo->setSconto(post('sconto'), post('tipo_sconto')); diff --git a/modules/ordini/quantita_impegnate.php b/modules/ordini/quantita_impegnate.php index 952d7ed84..fc7fed4a9 100644 --- a/modules/ordini/quantita_impegnate.php +++ b/modules/ordini/quantita_impegnate.php @@ -54,9 +54,9 @@ foreach ($articoli as $elenco) { $qta_impegnata = $database->fetchOne("SELECT SUM(qta) as qta FROM or_righe_ordini JOIN or_ordini ON or_ordini.id = or_righe_ordini.idordine - WHERE or_ordini.id != '.prepare($ordine->id).' - AND idstatoordine = (SELECT id FROM or_statiordine WHERE descrizione = 'Bozza') + WHERE idstatoordine = (SELECT id FROM or_statiordine WHERE descrizione = 'Bozza') AND idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir = 'entrata') + AND confermato = 1 AND idarticolo=".prepare($articolo->id).' GROUP BY idarticolo')['qta']; $qta_impegnata = floatval($qta_impegnata); diff --git a/modules/ordini/row-list.php b/modules/ordini/row-list.php index 1b7c57cc4..3790d6283 100755 --- a/modules/ordini/row-list.php +++ b/modules/ordini/row-list.php @@ -137,6 +137,7 @@ foreach ($righe as $riga) { // Quantità e unità di misura echo ' + '.numberFormat($riga->qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').' '.$riga->um.' '; diff --git a/update/2_4_18.sql b/update/2_4_18.sql index 67ed02432..d63b936c4 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -220,3 +220,12 @@ UPDATE `co_documenti` SET `id_banca_azienda` = NULL WHERE `id_banca_azienda` = 0 -- Aggiunta unità di misura secondaria per le stampe documenti di vendita ALTER TABLE `mg_articoli` ADD `um_secondaria` varchar(255), ADD `fattore_um_secondaria` DECIMAL(15, 6); + +-- Aggiunta impostazione per impegnare o meno automaticamente le quantità negli ordini +INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Conferma automaticamente le quantità negli ordini cliente', '1', 'boolean', '1', 'Ordini', NULL, NULL); + +ALTER TABLE `or_righe_ordini` ADD `confermato` BOOLEAN NOT NULL AFTER `id_dettaglio_fornitore`; +UPDATE `or_righe_ordini` SET `confermato`=1; + + +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_articoli` 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(qta-qta_evasa) AS qta_impegnata, 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 WHERE idstatoordine IN(SELECT id FROM or_statiordine WHERE completato=0) AND or_tipiordine.dir=\'entrata\' AND or_righe_ordini.confermato = 1 GROUP BY idarticolo) a ON a.idarticolo=mg_articoli.id LEFT JOIN mg_categorie ON mg_articoli.id_categoria=mg_categorie.id LEFT JOIN mg_categorie AS sottocategorie ON mg_articoli.id_sottocategoria=sottocategorie.id WHERE 1=1 AND (`mg_articoli`.`deleted_at`) IS NULL HAVING 2=2 ORDER BY `mg_articoli`.`descrizione`' WHERE `zz_modules`.`name` = 'Articoli'; \ No newline at end of file