From 824eb089a3772f13429ac9ecd2deadaa0e89fc51 Mon Sep 17 00:00:00 2001 From: Fabio Lovato Date: Tue, 23 Jan 2018 18:05:29 +0100 Subject: [PATCH] =?UTF-8?q?Aggiunto=20automatismo=20cambio=20stati=20su=20?= =?UTF-8?q?ordini/ddt.=20Migliorata=20evasione=20qt=C3=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/ddt/actions.php | 18 +++++++++++++++++- modules/ddt/modutil.php | 18 +++++++++++------- modules/fatture/actions.php | 14 ++++++++++++++ modules/ordini/init.php | 3 +++ 4 files changed, 45 insertions(+), 8 deletions(-) diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 720b0f44d..88ed9e91a 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -5,6 +5,7 @@ include_once __DIR__.'/../../core.php'; // Necessaria per la funzione add_movimento_magazzino include_once $docroot.'/modules/articoli/modutil.php'; include_once $docroot.'/modules/fatture/modutil.php'; +include_once $docroot.'/modules/ordini/modutil.php'; $module = Modules::get($id_module); @@ -357,7 +358,7 @@ switch (post('op')) { $subtot = $prezzo * $qta; // Lettura idarticolo dalla riga ddt - $rs = $dbo->fetchArray('SELECT idddt, abilita_serial, idarticolo, idordine, qta FROM dt_righe_ddt WHERE id='.prepare($idriga)); + $rs = $dbo->fetchArray('SELECT * FROM dt_righe_ddt WHERE id='.prepare($idriga)); $idarticolo = $rs[0]['idarticolo']; $idordine = $rs[0]['idordine']; $old_qta = $rs[0]['qta']; @@ -372,6 +373,11 @@ switch (post('op')) { return; } } + + // Se c'è un collegamento ad un ordine, aggiorno la quantità evasa + if (!empty($idddt)) { + $dbo->query( 'UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$old_qta.' + '.$qta.' WHERE descrizione='.prepare($rs[0]['descrizione']).' AND idarticolo='.prepare($rs[0]['idarticolo']).' AND idordine='.prepare($idordine).' AND idiva='.prepare($rs[0]['idiva']) ); + } // Calcolo iva $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); @@ -483,6 +489,16 @@ switch (post('op')) { break; } +// Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase +if( !empty($id_record) ){ + $rs = $dbo->fetchArray( 'SELECT idordine FROM dt_righe_ddt WHERE idddt='.prepare($id_record) ); + + for( $i=0; $iquery( 'UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[$i]['idordine']).'")' ); + } +} + +// Aggiornamento sconto sulle righe if (post('op') !== null && post('op') != 'update') { aggiorna_sconto([ 'parent' => 'dt_ddt', diff --git a/modules/ddt/modutil.php b/modules/ddt/modutil.php index 12d04a74b..aa1c45bd0 100644 --- a/modules/ddt/modutil.php +++ b/modules/ddt/modutil.php @@ -332,13 +332,17 @@ function get_stato_ddt($idddt) $rs = $dbo->fetchArray('SELECT SUM(qta) AS qta, SUM(qta_evasa) AS qta_evasa FROM dt_righe_ddt GROUP BY idddt HAVING idddt='.prepare($idddt)); - if ($rs[0]['qta_evasa'] > 0) { - if ($rs[0]['qta'] > $rs[0]['qta_evasa']) { - return 'Parzialmente fatturato'; - } elseif ($rs[0]['qta'] == $rs[0]['qta_evasa']) { - return 'Fatturato'; - } + if ($rs[0]['qta'] == 0) { + return 'Bozza'; } else { - return 'Evaso'; + if ($rs[0]['qta_evasa'] > 0) { + if ($rs[0]['qta'] > $rs[0]['qta_evasa']) { + return 'Parzialmente fatturato'; + } elseif ($rs[0]['qta'] == $rs[0]['qta_evasa']) { + return 'Fatturato'; + } + } else { + return 'Evaso'; + } } } \ No newline at end of file diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 0da467cca..d259ceda9 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -799,6 +799,11 @@ switch (post('op')) { if (!empty($idddt)) { $dbo->query( 'UPDATE dt_righe_ddt SET qta_evasa=qta_evasa-'.$old_qta.' + '.$qta.' WHERE descrizione='.prepare($rs[0]['descrizione']).' AND idarticolo='.prepare($rs[0]['idarticolo']).' AND idddt='.prepare($idddt).' AND idiva='.prepare($rs[0]['idiva']) ); } + + // Se c'è un collegamento ad un ordine, aggiorno la quantità evasa + if (!empty($idddt)) { + $dbo->query( 'UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$old_qta.' + '.$qta.' WHERE descrizione='.prepare($rs[0]['descrizione']).' AND idarticolo='.prepare($rs[0]['idarticolo']).' AND idordine='.prepare($idordine).' AND idiva='.prepare($rs[0]['idiva']) ); + } // Calcolo iva $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); @@ -1327,6 +1332,15 @@ if( !empty($id_record) ){ } } +// Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase +if( !empty($id_record) ){ + $rs = $dbo->fetchArray( 'SELECT idordine FROM co_righe_documenti WHERE iddocumento='.prepare($id_record) ); + + for( $i=0; $iquery( 'UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[$i]['idordine']).'")' ); + } +} + // Aggiornamento sconto sulle righe if (post('op') !== null && post('op') != 'update') { aggiorna_sconto([ diff --git a/modules/ordini/init.php b/modules/ordini/init.php index 8514df946..d84becc02 100644 --- a/modules/ordini/init.php +++ b/modules/ordini/init.php @@ -2,6 +2,9 @@ include_once __DIR__.'/../../core.php'; +// Aggiornamento stato di questo ordine +$dbo->query( 'UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($id_record).'")' ); + if (isset($id_record)) { $records = $dbo->fetchArray('SELECT *, or_ordini.note, or_ordini.idpagamento, or_ordini.id AS idordine, or_statiordine.descrizione AS `stato`, or_tipiordine.descrizione AS `descrizione_tipodoc` FROM ((or_ordini LEFT OUTER JOIN or_statiordine ON or_ordini.idstatoordine=or_statiordine.id) INNER JOIN an_anagrafiche ON or_ordini.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN or_tipiordine ON or_ordini.idtipoordine=or_tipiordine.id WHERE or_ordini.id='.prepare($id_record)); }