From ac8d7883f51483e0cf525494c67954b930025e8f Mon Sep 17 00:00:00 2001 From: Luca Date: Tue, 16 Jul 2019 12:02:24 +0200 Subject: [PATCH 1/3] Update body.php --- templates/ordini/body.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/ordini/body.php b/templates/ordini/body.php index bfe70e3e3..389e0e85f 100644 --- a/templates/ordini/body.php +++ b/templates/ordini/body.php @@ -61,7 +61,7 @@ echo " ".tr('Descrizione', [], ['upper' => true])." ".tr('Q.tà', [], ['upper' => true])." ".tr('Prezzo unitario', [], ['upper' => true])." - ".tr('Importo', [], ['upper' => true])." + ".tr('Imponibile', [], ['upper' => true])." ".tr('IVA', [], ['upper' => true]).' (%) From 631a588fe3f0668bd73a7f1d69d80e0e9658dd9c Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Tue, 16 Jul 2019 12:27:36 +0200 Subject: [PATCH 2/3] Blocco pulsante Genera per FE --- plugins/exportFE/edit.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/exportFE/edit.php b/plugins/exportFE/edit.php index ca8df15f7..eabdcee13 100644 --- a/plugins/exportFE/edit.php +++ b/plugins/exportFE/edit.php @@ -6,6 +6,8 @@ use Modules\Anagrafiche\Anagrafica; use Plugins\ExportFE\FatturaElettronica; use Plugins\ExportFE\Interaction; +$abilita_genera = empty($fattura->codice_stato_fe) || in_array($fattura->codice_stato_fe, ['GEN', 'NS', 'EC02']); + if (!empty($fattura_pa)) { $disabled = false; $generated = $fattura_pa->isGenerated(); @@ -154,7 +156,7 @@ echo ' - '; From 6ca7efbfd4c86bd4b3d7450b7e592c2bd0cd7d5c Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Wed, 17 Jul 2019 18:21:46 +0200 Subject: [PATCH 3/3] Fix rimozione righe contratti e preventivi --- modules/fatture/actions.php | 147 ++++++----------------------------- modules/fatture/row-list.php | 9 +++ 2 files changed, 34 insertions(+), 122 deletions(-) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index a1b600681..d31a481ff 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -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') { diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php index 6460a8482..cbc479be2 100644 --- a/modules/fatture/row-list.php +++ b/modules/fatture/row-list.php @@ -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']));