Aggiunto automatismo cambio stati su ordini/ddt. Migliorata evasione qtà

This commit is contained in:
Fabio Lovato 2018-01-23 18:05:29 +01:00
parent 16d78485be
commit 824eb089a3
4 changed files with 45 additions and 8 deletions

View File

@ -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; $i<sizeof($rs); $i++ ){
$dbo->query( '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',

View File

@ -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';
}
}
}

View File

@ -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; $i<sizeof($rs); $i++ ){
$dbo->query( '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([

View File

@ -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));
}