Ripristino quantità evasa su righe preventivi quando rimossi da fattura

This commit is contained in:
loviuz 2019-03-26 21:42:16 +01:00
parent c12776b86b
commit 117c09b40b
2 changed files with 33 additions and 2 deletions

View File

@ -192,6 +192,7 @@ switch (post('op')) {
$rs = $dbo->fetchArray('SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idpreventivo IS NOT NULL');
for ($i = 0; $i < sizeof($rs); ++$i) {
$dbo->query("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='In lavorazione') WHERE id=".prepare($rs[$i]['idpreventivo']));
$dbo->query("UPDATE co_righe_preventivi SET qta_evasa=0 WHERE idpreventivo=".prepare($rs[$i]['idpreventivo']));
}
// Se ci sono degli interventi collegati li rimetto nello stato "Completato"
@ -481,12 +482,13 @@ switch (post('op')) {
$idriga = post('idriga');
// Lettura preventivi collegati
$query = 'SELECT iddocumento, idpreventivo, is_preventivo, idarticolo FROM co_righe_documenti WHERE id='.prepare($idriga);
$query = 'SELECT iddocumento, idpreventivo, is_preventivo, idarticolo, qta FROM co_righe_documenti WHERE id='.prepare($idriga);
$rsp = $dbo->fetchArray($query);
$id_record = $rsp[0]['iddocumento'];
$idpreventivo = $rsp[0]['idpreventivo'];
$is_preventivo = $rsp[0]['is_preventivo'];
$idarticolo = $rsp[0]['idarticolo'];
$qta = $rsp[0]['qta'];
// preventivo su unica riga, perdo il riferimento dell'articolo quindi lo vado a leggere da co_righe_preventivi
if (empty($idarticolo) && $is_preventivo) {
@ -496,12 +498,35 @@ switch (post('op')) {
if (!empty($rsa[$i]['idarticolo'])) {
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_record]);
}
// Ripristino le quantità da evadere nel preventivo
$dbo->update( 'co_righe_preventivi',
[
'qta_evasa' => 0,
],
[
'idpreventivo' => $idpreventivo,
]
);
}
} else {
$rs5 = $dbo->fetchArray('SELECT idarticolo, id, qta, descrizione FROM co_righe_documenti WHERE id = '.prepare($idriga));
if (!empty($idarticolo)) {
$rs5 = $dbo->fetchArray('SELECT idarticolo, id, qta FROM co_righe_documenti WHERE id = '.prepare($idriga).' AND idintervento IS NULL');
rimuovi_articolo_dafattura($rs5[0]['idarticolo'], $id_record, $idriga);
}
// Ripristino le quantità da evadere nel preventivo
$dbo->update( 'co_righe_preventivi',
[
'qta_evasa' => 0,
],
[
'idarticolo' => $rs5[0]['idarticolo'],
'descrizione' => $rs5[0]['descrizione'],
'idpreventivo' => $idpreventivo,
]
);
}
$query = 'DELETE FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND id='.prepare($idriga);

View File

@ -698,6 +698,12 @@ function rimuovi_riga_fattura($id_documento, $id_riga, $dir)
add_movimento_magazzino($riga['idarticolo'], ($dir == 'entrata') ? $riga['qta'] : -$riga['qta'], ['iddocumento' => $id_documento]);
}
// TODO: possibile ambiguità tra righe molto simili tra loro
// Se l'articolo è stato inserito in fattura tramite un preventivo devo sanare la qta_evasa
if (!empty($riga['idpreventivo'])) {
$dbo->query('UPDATE co_righe_preventivi SET qta_evasa=qta_evasa-'.$riga['qta'].' WHERE qta='.prepare($riga['qta']).' AND idarticolo='.prepare($riga['idarticolo']).' AND idpreventivo='.prepare($riga['idpreventivo']));
}
// TODO: possibile ambiguità tra righe molto simili tra loro
// Se l'articolo è stato inserito in fattura tramite un ddt devo sanare la qta_evasa
if (!empty($riga['idddt'])) {