From 976af57fe1c44e26f48429ed9f8bc3dcb9702db9 Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 16 May 2018 12:50:59 +0200 Subject: [PATCH] Fix per caricamento articoli in promemoria contratti --- modules/contratti/plugins/actions.php | 117 ++++++++++++++++++++ modules/contratti/plugins/add_articolo.php | 47 +++++--- modules/contratti/plugins/ajax_articoli.php | 19 ++-- modules/contratti/plugins/ajax_righe.php | 2 +- modules/interventi/add_articolo.php | 2 +- update/2_4_1.sql | 34 +++++- 6 files changed, 191 insertions(+), 30 deletions(-) diff --git a/modules/contratti/plugins/actions.php b/modules/contratti/plugins/actions.php index d54f05bd2..24016eba2 100644 --- a/modules/contratti/plugins/actions.php +++ b/modules/contratti/plugins/actions.php @@ -6,6 +6,123 @@ include_once $docroot.'/modules/fatture/modutil.php'; switch (post('op')) { + /* + GESTIONE ARTICOLI + */ + + case 'editarticolo': + + $idriga = post('idriga'); + $idarticolo = post('idarticolo'); + $idimpianto = post('idimpianto'); + //$idautomezzo = post('idautomezzo'); + + //$idarticolo_originale = post('idarticolo_originale'); + + // Leggo la quantità attuale nell'intervento + $q = 'SELECT qta, idautomezzo, idimpianto FROM co_righe_contratti_articoli WHERE id='.prepare($idriga); + $rs = $dbo->fetchArray($q); + $old_qta = $rs[0]['qta']; + $idimpianto = $rs[0]['idimpianto']; + //$idautomezzo = $rs[0]['idautomezzo']; + + //$serials = array_column($dbo->select('mg_prodotti', 'serial', ['id_riga_intervento' => $idriga]), 'serial'); + + //add_movimento_magazzino($idarticolo_originale, $old_qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]); + + // Elimino questo articolo dall'intervento + $dbo->query('DELETE FROM co_righe_contratti_articoli WHERE id='.prepare($idriga)); + + // Elimino il collegamento al componente + //$dbo->query('DELETE FROM my_impianto_componenti WHERE idimpianto='.prepare($idimpianto).' AND idintervento='.prepare($id_record)); + + /* Ricollego l'articolo modificato all'intervento */ + /* ci può essere il caso in cui cambio idarticolo e anche qta */ + + + //no break; + + case 'addarticolo': + + $idarticolo = post('idarticolo'); + //$idautomezzo = post('idautomezzo'); + $descrizione = post('descrizione'); + $idimpianto = post('idimpianto'); + $qta = post('qta'); + $um = post('um'); + $prezzo_vendita = post('prezzo_vendita'); + $idiva = post('idiva'); + + $sconto_unitario = $post['sconto']; + $tipo_sconto = $post['tipo_sconto']; + $sconto = ($tipo_sconto == 'PRC') ? ($prezzo_vendita * $sconto_unitario) / 100 : $sconto_unitario; + $sconto = $sconto * $qta; + + $idcontratto_riga = $post['idcontratto_riga']; + + // Decremento la quantità + //add_movimento_magazzino($idarticolo, -$qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]); + + // Aggiorno l'automezzo dell'intervento + //$dbo->query('UPDATE in_interventi SET idautomezzo='.prepare($idautomezzo).' WHERE id='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module)); + + //$rsart = $dbo->fetchArray('SELECT abilita_serial, prezzo_acquisto FROM mg_articoli WHERE id='.prepare($idarticolo)); + //$prezzo_acquisto = $rsart[0]['prezzo_acquisto']; + + //Calcolo iva + $rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva)); + $desc_iva = $rs_iva[0]['descrizione']; + + $iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100; + + // Aggiunto il collegamento fra l'articolo e l'intervento + $idriga = $dbo->query('INSERT INTO co_righe_contratti_articoli(idarticolo, id_riga_contratto, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($idcontratto_riga).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')'); + + /*if (!empty($serials)) { + if ($old_qta > $qta) { + $serials = array_slice($serials, 0, $qta); + } + + $dbo->sync('mg_prodotti', ['id_riga_intervento' => $idriga, 'dir' => 'entrata', 'id_articolo' => $idarticolo], ['serial' => $serials]); + }*/ + + //link_componente_to_articolo($id_record, $idimpianto, $idarticolo, $qta); + + break; + + case 'unlink_articolo': + + $idriga = post('idriga'); + //$idarticolo = post('idarticolo'); + + $dbo->query('DELETE FROM co_righe_contratti_articoli WHERE id='.prepare($idriga).' '.Modules::getAdditionalsQuery($id_module)); + + + // Riporto la merce nel magazzino + if (!empty($idriga) && !empty($id_record)) { + // Leggo la quantità attuale nell'intervento + //$q = 'SELECT qta, idautomezzo, idarticolo, idimpianto FROM co_righe_contratti_articoli WHERE id='.prepare($idriga); + //$rs = $dbo->fetchArray($q); + //$qta = $rs[0]['qta']; + //$idarticolo = $rs[0]['idarticolo']; + //$idimpianto = $rs[0]['idimpianto']; + //$idautomezzo = $rs[0]['idautomezzo']; + + // add_movimento_magazzino($idarticolo, $qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]); + + // Elimino questo articolo dall'intervento + //$dbo->query('DELETE FROM mg_articoli_interventi WHERE id='.prepare($idriga).' AND idintervento='.prepare($id_record)); + + // Elimino il collegamento al componente + //$dbo->query('DELETE FROM my_impianto_componenti WHERE idimpianto='.prepare($idimpianto).' AND idintervento='.prepare($id_record)); + + // Elimino i seriali utilizzati dalla riga + //$dbo->query('DELETE FROM `mg_prodotti` WHERE id_articolo = '.prepare($idarticolo).' AND id_riga_intervento = '.prepare($id_record)); + } + + break; + + /* Gestione righe generiche diff --git a/modules/contratti/plugins/add_articolo.php b/modules/contratti/plugins/add_articolo.php index c81aded75..1bba7bc99 100644 --- a/modules/contratti/plugins/add_articolo.php +++ b/modules/contratti/plugins/add_articolo.php @@ -8,17 +8,20 @@ for ($i = 0; $i < count($rs); ++$i) { $gruppi[$i] = $rs[$i]['nome']; } -$can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (get_var('Mostra i prezzi al tecnico') == 1 && (in_array('Tecnici', $gruppi))); +//$can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (get_var('Mostra i prezzi al tecnico') == 1 && (in_array('Tecnici', $gruppi))); $idriga = get('idriga'); -$idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo'); +//$idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo'); -$_SESSION['superselect']['idintervento'] = get('id_record'); +//$_SESSION['superselect']['idintervento'] = get('id_record'); // Lettura idanagrafica cliente e percentuale di sconto/rincaro in base al listino -$rs = $dbo->fetchArray('SELECT idanagrafica FROM in_interventi WHERE id='.prepare($id_record)); +$rs = $dbo->fetchArray('SELECT idanagrafica FROM co_contratti WHERE id='.prepare($id_record)); $idanagrafica = $rs[0]['idanagrafica']; + + + if (empty($idriga)) { $op = 'addarticolo'; $button = ' '.tr('Aggiungi'); @@ -39,12 +42,15 @@ if (empty($idriga)) { $sconto_unitario = $listino[0]['prc_guadagno']; $tipo_sconto = 'PRC'; } + + (empty($idcontratto_riga)) ? $idcontratto_riga = $dbo->fetchArray('SELECT MAX(id) AS max_idcontratto_riga FROM `co_righe_contratti`')[0]['max_idcontratto_riga'] : ''; + } else { $op = 'editarticolo'; $button = ' '.tr('Modifica'); // carico record da modificare - $q = "SELECT *, (SELECT codice FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS codice_articolo, (SELECT CONCAT(codice, ' - ', descrizione) FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS descrizione_articolo FROM mg_articoli_interventi WHERE id=".prepare($idriga); + $q = "SELECT *, (SELECT codice FROM mg_articoli WHERE id=co_righe_contratti_articoli.idarticolo) AS codice_articolo, (SELECT CONCAT(codice, ' - ', descrizione) FROM mg_articoli WHERE id=co_righe_contratti_articoli.idarticolo) AS descrizione_articolo FROM co_righe_contratti_articoli WHERE id=".prepare($idriga); $rsr = $dbo->fetchArray($q); $idarticolo = $rsr[0]['idarticolo']; @@ -62,16 +68,21 @@ if (empty($idriga)) { $idautomezzo = $rsr[0]['idautomezzo']; $idimpianto = $rsr[0]['idimpianto']; + $idcontratto_riga = $rsr[0]['id_riga_contratto']; } /* Form di inserimento */ echo ' -
+ + - - '; + + + '; + + if (!empty($idarticolo)) { echo ' @@ -109,11 +120,11 @@ echo ' '; // Impianto -echo ' -
- {[ "type": "select", "label": "'.tr('Impianto su cui installare').'", "name": "idimpianto", "value": "'.$idimpianto.'", "ajax-source": "impianti" ]} -
- '; +echo ' +
+ {[ "type": "select", "multiple": "0", "label": "'.tr('Impianto').'", "name": "idimpianto", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_record.' ORDER BY descrizione", "value": "'.$matricoleimpianti.'", "extra":"'.$readonly.'" ]} +
+ '; // Iva echo ' @@ -136,7 +147,7 @@ echo ' '; // Informazioni aggiuntive -echo ' +/*echo '
-
'; +
';*/ echo '