Fix rimozione righe contratti e preventivi

This commit is contained in:
Thomas Zilio 2019-07-17 18:21:46 +02:00
parent 631a588fe3
commit 6ca7efbfd4
2 changed files with 34 additions and 122 deletions

View File

@ -498,82 +498,32 @@ switch (post('op')) {
$idriga = post('idriga');
// Lettura preventivi collegati
$query = 'SELECT iddocumento, idpreventivo, is_preventivo, idarticolo, qta FROM co_righe_documenti WHERE id='.prepare($idriga);
$query = 'SELECT iddocumento, idpreventivo, idarticolo, id, qta, descrizione 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) {
// rimetto a magazzino gli articoli collegati al preventivo
$rsa = $dbo->fetchArray('SELECT idarticolo, qta FROM co_righe_preventivi WHERE idpreventivo = '.prepare($idpreventivo));
for ($i = 0; $i < sizeof($rsa); ++$i) {
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)) {
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,
]
);
if (!empty($idarticolo)) {
rimuovi_articolo_dafattura($rsp[0]['idarticolo'], $id_record, $idriga);
}
// Ripristino le quantità da evadere nel preventivo
$query = 'UPDATE co_righe_preventivi SET qta_evasa = qta_evasa - '.$rsp[0]['qta'].' WHERE idarticolo='.prepare($rsp[0]['idarticolo']).' AND descrizione='.prepare($rsp[0]['descrizione']).' AND idpreventivo = '.prepare($idpreventivo);
$dbo->query($query);
$query = 'DELETE FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND id='.prepare($idriga);
$dbo->query($query);
$rs_righe = $dbo->fetchArray('SELECT * FROM co_righe_documenti WHERE idpreventivo='.prepare($idpreventivo));
if (sizeof($rs_righe) == 0) {
if (empty($rs_righe)) {
// Se ci sono dei preventivi collegati li rimetto nello stato "In attesa di pagamento"
for ($i = 0; $i < sizeof($rsp); ++$i) {
$dbo->query("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='In lavorazione') WHERE id=".prepare($rsp[$i]['idpreventivo']));
$dbo->query("UPDATE co_preventivi SET idstato=(SELECT id FROM co_statipreventivi WHERE descrizione='In lavorazione') WHERE id=".prepare($idpreventivo));
// Aggiorno anche lo stato degli interventi collegati ai preventivi
$dbo->query("UPDATE in_interventi SET idstatointervento = (SELECT idstatointervento FROM in_statiintervento WHERE descrizione = 'Completato') WHERE id_preventivo=".prepare($rsp[$i]['idpreventivo']));
}
/*
Rimuovo tutti gli articoli dalla fattura collegati agli interventi di questo preventivo
*/
$rs2 = $dbo->fetchArray('SELECT id FROM in_interventi WHERE id_preventivo = '.prepare($idpreventivo));
for ($i = 0; $i < sizeof($rs2); ++$i) {
// Leggo gli articoli usati in questo intervento
$rs3 = $dbo->fetchArray('SELECT idarticolo FROM mg_articoli_interventi WHERE idintervento='.prepare($rs2[$i]['id']));
for ($j = 0; $j < sizeof($rs3); ++$j) {
// Leggo l'id della riga in fattura di questo articolo
$rs4 = $dbo->fetchArray('SELECT id FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idarticolo='.prepare($rs3[$j]['idarticolo']));
for ($x = 0; $x < sizeof($rs4); ++$x) {
rimuovi_articolo_dafattura($rs3[$j]['idarticolo'], $id_record, $rs4[$x]['id']);
}
}
}
// Aggiorno anche lo stato degli interventi collegati ai preventivi
$dbo->query("UPDATE in_interventi SET idstatointervento = (SELECT idstatointervento FROM in_statiintervento WHERE descrizione = 'Completato') WHERE id_preventivo=".prepare($idpreventivo));
}
// Ricalcolo inps, ritenuta e bollo
@ -593,77 +543,30 @@ switch (post('op')) {
$idriga = post('idriga');
// Lettura contratti collegati
$query = 'SELECT iddocumento, idcontratto, is_contratto, idarticolo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idcontratto IS NOT NULL AND NOT idcontratto=0';
$query = 'SELECT iddocumento, idcontratto, idarticolo, id, qta, descrizione FROM co_righe_documenti WHERE id='.prepare($idriga);
$rsp = $dbo->fetchArray($query);
$id_record = $rsp[0]['iddocumento'];
$idcontratto = $rsp[0]['idcontratto'];
$is_contratto = $rsp[0]['is_contratto'];
$idarticolo = $rsp[0]['idarticolo'];
// contratto su unica riga, perdo il riferimento dell'articolo quindi lo vado a leggere da co_righe_contratti
if (empty($idarticolo) && $is_contratto) {
// rimetto a magazzino gli articoli collegati al contratto
$rsa = $dbo->fetchArray('SELECT idarticolo, qta FROM co_righe_contratti WHERE idcontratto = '.prepare($idcontratto));
for ($i = 0; $i < sizeof($rsa); ++$i) {
if (!empty($rsa[$i]['idarticolo'])) {
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_record]);
}
// Ripristino le quantità da evadere nel contratto
$dbo->update('co_righe_contratti',
[
'qta_evasa' => 0,
],
[
'idcontratto' => $idcontratto,
]
);
}
} else {
$rs5 = $dbo->fetchArray('SELECT idarticolo, id, qta, descrizione FROM co_righe_documenti WHERE id = '.prepare($idriga).' AND idintervento IS NULL');
if (!empty($idarticolo)) {
rimuovi_articolo_dafattura($rs5[0]['idarticolo'], $id_record, $idriga);
}
// Ripristino le quantità da evadere nel contratto
$dbo->update('co_righe_contratti',
[
'qta_evasa' => 0,
],
[
'idarticolo' => $rs5[0]['idarticolo'],
'descrizione' => $rs5[0]['descrizione'],
'idcontratto' => $idcontratto,
]
);
if (!empty($idarticolo)) {
rimuovi_articolo_dafattura($rsp[0]['idarticolo'], $id_record, $idriga);
}
$query = 'DELETE FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idcontratto='.prepare($idcontratto);
// Ripristino le quantità da evadere nel contratto
$query = 'UPDATE co_righe_contratti SET qta_evasa = qta_evasa - '.$rsp[0]['qta'].' WHERE idarticolo='.prepare($rsp[0]['idarticolo']).' AND descrizione='.prepare($rsp[0]['descrizione']).' AND idcontratto = '.prepare($idcontratto);
$dbo->query($query);
if ($dbo->query($query)) {
// Se ci sono dei preventivi collegati li rimetto nello stato "In attesa di pagamento"
for ($i = 0; $i < sizeof($rsp); ++$i) {
$dbo->query("UPDATE co_contratti SET idstato=(SELECT id FROM co_staticontratti WHERE descrizione='In lavorazione') WHERE id=".prepare($rsp[$i]['idcontratto']));
$query = 'DELETE FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND id='.prepare($idriga);
$dbo->query($query);
// Aggiorno anche lo stato degli interventi collegati ai contratti
$dbo->query("UPDATE in_interventi SET idstatointervento = (SELECT idstatointervento FROM in_statiintervento WHERE descrizione = 'Completato') WHERE id IN (SELECT idintervento FROM co_promemoria WHERE idcontratto=".prepare($rsp[$i]['idcontratto']).')');
}
$rs_righe = $dbo->fetchArray('SELECT * FROM co_righe_documenti WHERE idcontratto='.prepare($idcontratto));
/*
Rimuovo tutti gli articoli dalla fattura collegati agli interventi che sono collegati a questo contratto
*/
$rs2 = $dbo->fetchArray('SELECT idintervento FROM co_promemoria WHERE idcontratto='.prepare($idcontratto)." AND NOT idcontratto=''");
for ($i = 0; $i < sizeof($rs2); ++$i) {
// Leggo gli articoli usati in questo intervento
$rs3 = $dbo->fetchArray('SELECT idarticolo FROM mg_articoli_interventi WHERE idintervento='.prepare($rs2[$i]['idintervento']));
for ($j = 0; $j < sizeof($rs3); ++$j) {
// Leggo l'id della riga in fattura di questo articolo
$rs4 = $dbo->fetchArray('SELECT id FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idarticolo='.prepare($rs3[$j]['idarticolo']));
for ($x = 0; $x < sizeof($rs4); ++$x) {
rimuovi_articolo_dafattura($rs3[$j]['idarticolo'], $id_record, $rs4[$x]['id']);
}
}
}
if (empty($rs_righe)) { // Se ci sono dei preventivi collegati li rimetto nello stato "In attesa di pagamento"
$dbo->query("UPDATE co_contratti SET idstato=(SELECT id FROM co_staticontratti WHERE descrizione='In lavorazione') WHERE id=".prepare($idcontratto));
// Aggiorno anche lo stato degli interventi collegati ai contratti
$dbo->query("UPDATE in_interventi SET idstatointervento = (SELECT idstatointervento FROM in_statiintervento WHERE descrizione = 'Completato') WHERE id IN (SELECT idintervento FROM co_promemoria WHERE idcontratto=".prepare($idcontratto).')');
// Ricalcolo inps, ritenuta e bollo
if ($dir == 'entrata') {

View File

@ -44,10 +44,19 @@ foreach ($righe as $row) {
$riga['descrizione'] = (!empty($row->articolo) ? $row->articolo->codice.' - ' : '').$riga['descrizione'];
$delete = 'unlink_articolo';
// Preventivi
if (!empty($riga['idpreventivo'])) {
$delete = 'unlink_preventivo';
}
// Contratti
elseif (!empty($riga['idcontratto'])) {
$delete = 'unlink_contratto';
}
$extra = '';
$mancanti = 0;
}
// Intervento
elseif (!empty($riga['idintervento'])) {
$intervento = $dbo->fetchOne('SELECT num_item,codice_cig,codice_cup,id_documento_fe FROM in_interventi WHERE id = '.prepare($riga['idintervento']));