From 5818082c080592bcb2a774ea09d04a5bca1bec18 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Wed, 13 Sep 2017 09:33:45 +0200 Subject: [PATCH] Bugfix sui seriali Risoluzione di alcuni problemi nella gestione dei seriali nel passaggio tra documenti. --- modules/ddt/actions.php | 5 ++++- modules/fatture/actions.php | 10 ++++++++-- modules/fatture/crea_documento.php | 4 +++- update/2_3.sql | 2 ++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index f6780594c..d8df20dcc 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -248,7 +248,10 @@ switch (post('op')) { $riga = $dbo->lastInsertedID(); // Aggiornamento seriali dalla riga dell'ordine - $dbo->sync('mg_prodotti', ['id_riga_ddt' => $riga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => (array) $post['serial'][$i]]); + $serials = is_array($post['serial'][$i]) ? $post['serial'][$i] : []; + $serials = array_filter($serials, function ($value) { return !empty($value); }); + + $dbo->sync('mg_prodotti', ['id_riga_ddt' => $riga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]); // Scalo la quantità dall'ordine $dbo->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa+'.$qta.' WHERE id='.prepare($idrigaordine)); diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index b3515ed71..e8d549d18 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -828,7 +828,10 @@ switch (post('op')) { $idriga = add_articolo_infattura($id_record, $idarticolo, $descrizione, $idiva_acquisto, $qta, $prezzo_acquisto, $sconto, $sconto_unitario, $tipo_sconto); // Aggiornamento seriali dalla riga dell'ordine - $dbo->sync('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => (array) $post['serial'][$i]]); + $serials = is_array($post['serial'][$i]) ? $post['serial'][$i] : []; + $serials = array_filter($serials, function ($value) { return !empty($value); }); + + $dbo->sync('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]); } // Inserimento riga normale @@ -905,7 +908,10 @@ switch (post('op')) { $idriga = add_articolo_infattura($id_record, $idarticolo, $descrizione, $idiva_acquisto, $qta, $prezzo_acquisto, $sconto, $sconto_unitario, $tipo_sconto); // Aggiornamento seriali dalla riga dell'ordine - $dbo->sync('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => (array) $post['serial'][$i]]); + $serials = is_array($post['serial'][$i]) ? $post['serial'][$i] : []; + $serials = array_filter($serials, function ($value) { return !empty($value); }); + + $dbo->sync('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]); // Imposto la provenienza dell'ordine $dbo->query('UPDATE co_righe_documenti SET idordine='.prepare($idordine).' WHERE id='.prepare($idriga)); diff --git a/modules/fatture/crea_documento.php b/modules/fatture/crea_documento.php index 3cd4715a0..a9afb927a 100644 --- a/modules/fatture/crea_documento.php +++ b/modules/fatture/crea_documento.php @@ -168,8 +168,10 @@ if (!empty($rs)) { echo ' '; if (!empty($r['abilita_serial'])) { + $values = $dbo->fetchArray('SELECT DISTINCT serial FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND dir=\''.$dir.'\' AND '.$data[$pos]['condition'].')'); + echo ' - {[ "type": "select", "name": "serial['.$i.'][]", "id": "serial_'.$i.'", "multiple": 1, "values": "query=SELECT DISTINCT serial AS id, serial AS descrizione FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$data[$pos]['condition'].' AND dir=\''.$dir.'\')", "extra": "data-maximum=\"'.intval($r['qta_rimanente']).'\"" ]} + {[ "type": "select", "name": "serial['.$i.'][]", "id": "serial_'.$i.'", "multiple": 1, "values": "query=SELECT DISTINCT serial AS id, serial AS descrizione FROM mg_prodotti WHERE dir=\''.$dir.'\' AND '.$row.' = \''.$r['id'].'\' AND serial IS NOT NULL AND serial NOT IN (SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND dir=\''.$dir.'\' AND '.$data[$pos]['condition'].')", "value": "'.implode(',', array_column($values, 'serial')).'", "extra": "data-maximum=\"'.intval($r['qta_rimanente']).'\"" ]} '; } else { echo '-'; diff --git a/update/2_3.sql b/update/2_3.sql index b6dbcc962..d68da880e 100644 --- a/update/2_3.sql +++ b/update/2_3.sql @@ -905,6 +905,8 @@ UPDATE `mg_prodotti` SET `serial` = NULL WHERE `serial` = ''; UPDATE `mg_prodotti` SET `lotto` = NULL WHERE `lotto` = ''; UPDATE `mg_prodotti` SET `altro` = NULL WHERE `altro` = ''; +DELETE FROM `mg_prodotti` WHERE `serial` IS NULL AND `lotto` IS NULL AND `altro` IS NULL; + ALTER TABLE `co_righe_documenti` DROP `serial`, DROP `altro`, DROP `lotto`; ALTER TABLE `mg_articoli_interventi` DROP `serial`, DROP `altro`, DROP `lotto`; ALTER TABLE `dt_righe_ddt` DROP `serial`, DROP `altro`, DROP `lotto`;