From 585290e011216c6e3a6fa4aeed58b8c70ec34a9a Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Mon, 11 Sep 2017 11:28:39 +0200 Subject: [PATCH] Miglioramento nella gestione degli sconti Risoluzione delle problematiche relative alla selezioni di diversi sconti su multipli livelli. Aggiunta selezione automatica dello sconto da listino. Introduzione del nuovo sistema degli sconti nei contratti. --- modules/anagrafiche/actions.php | 3 +- modules/anagrafiche/edit.php | 22 +++-- modules/contratti/actions.php | 84 +++++++++++++------ modules/contratti/add_riga.php | 13 ++- modules/contratti/edit.php | 11 +++ modules/contratti/row-list.php | 12 +-- modules/ddt/add_articolo.php | 14 +++- modules/ddt/row-list.php | 6 +- modules/fatture/actions.php | 71 ++++++++-------- modules/fatture/add_articolo.php | 15 +++- modules/fatture/add_intervento.php | 8 +- modules/fatture/add_preventivo.php | 12 +-- modules/fatture/edit.php | 2 +- modules/fatture/modutil.php | 3 +- modules/fatture/row-list.php | 14 ++-- modules/interventi/add_articolo.php | 15 ++-- modules/interventi/add_righe.php | 15 ++-- modules/interventi/ajax_articoli.php | 2 +- modules/interventi/ajax_costi.php | 3 + modules/ordini/add_articolo.php | 14 +++- modules/ordini/row-list.php | 6 +- modules/preventivi/actions.php | 17 ---- modules/preventivi/edit_riga.php | 7 +- modules/preventivi/row-list.php | 4 +- .../contratti_cons/pdfgen.contratti_cons.php | 2 +- templates/ddt/body.php | 2 +- .../pdfgen.preventivi_cons.php | 2 +- .../pdfgen.riepilogo_interventi.php | 2 +- update/2_3.sql | 22 +++-- 29 files changed, 246 insertions(+), 157 deletions(-) diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index f911962a9..9ba80377d 100644 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -36,7 +36,8 @@ switch (post('op')) { 'diciturafissafattura' => $post['diciturafissafattura'], 'idpagamento_acquisti' => $post['idpagamento_acquisti'], 'idpagamento_vendite' => $post['idpagamento_vendite'], - 'idlistino' => $post['idlistino'], + 'idlistino_acquisti' => $post['idlistino_acquisti'], + 'idlistino_vendite' => $post['idlistino_vendite'], 'idiva' => $post['idiva'], 'settore' => $post['settore'], 'marche' => $post['marche'], diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index af8636245..cfb12bf48 100644 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -154,7 +154,11 @@ if ($fornitore) { ?>
{[ "type": "select", "label": "", "name": "idpagamento_acquisti", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento_acquisti$" ]} -
+ + +
+ {[ "type": "select", "label": "", "name": "idlistino_acquisti", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino_acquisti$" ]} +
{[ "type": "select", "label": "", "name": "idpagamento_vendite", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento_vendite$" ]} -
+ + +
+ {[ "type": "select", "label": "", "name": "idlistino_vendite", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino_vendite$" ]} +
-
- {[ "type": "select", "label": "", "name": "idiva", "values": "query=SELECT id, descrizione FROM co_iva ORDER BY descrizione ASC", "value": "$idiva$" ]} -
+ -
+
- {[ "type": "select", "label": "", "name": "idlistino", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino$" ]} -
+ {[ "type": "select", "label": "", "name": "idiva", "values": "query=SELECT id, descrizione FROM co_iva ORDER BY descrizione ASC", "value": "$idiva$" ]} +
{[ "type": "select", "label": "", "name": "idsede_fatturazione", "values": "query=SELECT id, CONCAT_WS(', ', nomesede, citta) AS descrizione FROM an_sedi WHERE idanagrafica='$id_record' UNION SELECT '0' AS id, 'Sede legale' AS descrizione ORDER BY descrizione", "value": "$idsede_fatturazione$" ]} diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 89e40dea5..0e7326ae5 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -2,6 +2,8 @@ include_once __DIR__.'/../../core.php'; +include_once $docroot.'/modules/fatture/modutil.php'; + switch (post('op')) { case 'add': $idanagrafica = post('idanagrafica'); @@ -40,8 +42,6 @@ switch (post('op')) { break; case 'update': - $idcontratto = post('id_record'); - if (isset($post['id_record'])) { $idstato = post('idstato'); $idanagrafica = post('idanagrafica'); @@ -54,7 +54,7 @@ switch (post('op')) { if ($budget != '') { $budget = post('budget'); } else { - $q = "SELECT (SELECT SUM(subtotale) FROM co_righe2_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id) AS 'budget' FROM co_contratti WHERE id=".prepare($idcontratto); + $q = "SELECT (SELECT SUM(subtotale) FROM co_righe2_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id) AS 'budget' FROM co_contratti WHERE id=".prepare($id_record); $rs = $dbo->fetchArray($q); $budget = $rs[0]['budget']; } @@ -77,14 +77,31 @@ switch (post('op')) { $costo_km = post('costo_km'); $costo_diritto_chiamata = post('costo_diritto_chiamata'); - $query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).', idstato='.prepare($idstato).', nome='.prepare($nome).', idagente='.prepare($idagente).', idpagamento='.prepare($idpagamento).', numero='.prepare($numero).', budget='.prepare($budget).', idreferente='.prepare($idreferente).', validita='.prepare($validita).', data_bozza='.prepare($data_bozza).', data_accettazione='.prepare($data_accettazione).', data_rifiuto='.prepare($data_rifiuto).', data_conclusione='.prepare($data_conclusione).', rinnovabile='.prepare($rinnovabile).', giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).', esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).', idtipointervento='.prepare($idtipointervento).'WHERE id='.prepare($idcontratto); + $query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).', idstato='.prepare($idstato).', nome='.prepare($nome).', idagente='.prepare($idagente).', idpagamento='.prepare($idpagamento).', numero='.prepare($numero).', budget='.prepare($budget).', idreferente='.prepare($idreferente).', validita='.prepare($validita).', data_bozza='.prepare($data_bozza).', data_accettazione='.prepare($data_accettazione).', data_rifiuto='.prepare($data_rifiuto).', data_conclusione='.prepare($data_conclusione).', rinnovabile='.prepare($rinnovabile).', giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).', esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).', idtipointervento='.prepare($idtipointervento).'WHERE id='.prepare($id_record); // costo_diritto_chiamata='.prepare($costo_diritto_chiamata).', ore_lavoro='.prepare($ore_lavoro).', costo_orario='.prepare($costo_orario).', costo_km='.prepare($costo_km).' $dbo->query($query); - $dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($idcontratto)); + // Aggiornamento sconto + $tipo_sconto = $post['tipo_sconto_generico']; + $sconto = $post['sconto_generico']; + + $dbo->update('co_contratti', [ + 'tipo_sconto_globale' => $tipo_sconto, + 'sconto_globale' => $sconto, + ], ['id' => $id_record]); + + aggiorna_sconto([ + 'parent' => 'co_contratti', + 'row' => 'co_righe2_contratti', + ], [ + 'parent' => 'id', + 'row' => 'idcontratto', + ], $id_record); + + $dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record)); foreach ((array) $post['matricolaimpianto'] as $matricolaimpianto) { - $dbo->query('INSERT INTO my_impianti_contratti(idcontratto,idimpianto) VALUES('.prepare($idcontratto).', '.prepare($matricolaimpianto).')'); + $dbo->query('INSERT INTO my_impianti_contratti(idcontratto,idimpianto) VALUES('.prepare($id_record).', '.prepare($matricolaimpianto).')'); } // Salvataggio costi attività unitari del contratto @@ -120,25 +137,29 @@ switch (post('op')) { // Aggiungo una riga al contratto case 'addriga': - $idcontratto = $id_record; - $idarticolo = post('idarticolo'); - $idiva = post('idiva_articolo'); + $idiva = post('idiva'); $descrizione = post('descrizione'); $qta = $post['qta']; - $prezzo_vendita = $post['prezzo']; - $prezzo = $prezzo_vendita * $qta; + $prezzo = $post['prezzo']; - $sconto = $post['sconto']; + // Calcolo dello sconto + $sconto_unitario = $post['sconto']; + $tipo_sconto = $post['tipo_sconto']; + $sconto = ($tipo_sconto == 'PRC') ? ($prezzo * $sconto_unitario) / 100 : $sconto_unitario; + $sconto = $sconto * $qta; + + $subtot = $prezzo_vendita * $qta; $um = post('um'); // Lettura iva dell'articolo - $rs2 = $dbo->fetchArray('SELECT percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva)); - $iva = ($prezzo - ($sconto * $qta)) / 100 * $rs2[0]['percentuale']; + $rs2 = $dbo->fetchArray('SELECT percentuale, descrizione, indetraibile FROM co_iva WHERE id='.prepare($idiva)); + $iva = ($prezzo - $sconto) / 100 * $rs2[0]['percentuale']; $iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile']; + $desc_iva = $rs2[0]['descrizione']; - $dbo->query('INSERT INTO co_righe2_contratti(idcontratto, idiva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto) VALUES ('.prepare($idcontratto).', '.prepare($idiva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($prezzo).', '.prepare($um).', '.prepare($qta).', '.prepare($sconto).')'); + $dbo->query('INSERT INTO co_righe2_contratti(idcontratto, idiva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto) VALUES ('.prepare($id_record).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($um).', '.prepare($qta).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe2_contratti AS t WHERE idcontratto='.prepare($id_record).'))'); $_SESSION['infos'][] = tr('Articolo aggiunto!'); @@ -149,23 +170,27 @@ switch (post('op')) { $descrizione = post('descrizione'); $qta = $post['qta']; - $importo_manuale = $post['prezzo']; - $subtot = $importo_manuale * $qta; + $prezzo = $post['prezzo']; + $subtot = $prezzo * $qta; - $sconto = $post['sconto']; + // Calcolo dello sconto + $sconto_unitario = $post['sconto']; + $tipo_sconto = $post['tipo_sconto']; + $sconto = ($tipo_sconto == 'PRC') ? ($prezzo * $sconto_unitario) / 100 : $sconto_unitario; + $sconto = $sconto * $qta; - $idiva = post('idiva_articolo'); + $idiva = post('idiva'); $um = post('um'); // Calcolo iva - $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); + $query = 'SELECT percentuale, descrizione, indetraibile FROM co_iva WHERE id='.prepare($idiva); $rs = $dbo->fetchArray($query); - $iva = ($subtot - ($sconto * $qta)) / 100 * $rs[0]['percentuale']; + $iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; $desc_iva = $rs[0]['descrizione']; // Modifica riga generica sul documento - $query = 'UPDATE co_righe2_contratti SET idiva='.prepare($idiva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga); + $query = 'UPDATE co_righe2_contratti SET idiva='.prepare($idiva).', desc_iva='.prepare($desc_iva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga); $dbo->query($query); $_SESSION['infos'][] = tr('Riga modificata!'); @@ -175,10 +200,9 @@ switch (post('op')) { // Eliminazione riga case 'delriga': if (isset($post['idriga'])) { - $idcontratto = $id_record; $idriga = post('idriga'); - $query = 'DELETE FROM `co_righe2_contratti` WHERE idcontratto='.prepare($idcontratto).' AND id='.prepare($idriga); + $query = 'DELETE FROM `co_righe2_contratti` WHERE idcontratto='.prepare($id_record).' AND id='.prepare($idriga); if ($dbo->query($query)) { $_SESSION['infos'][] = tr('Riga eliminata!'); @@ -186,7 +210,7 @@ switch (post('op')) { } // Ricalcolo il budget - $dbo->query('UPDATE co_contratti SET budget=( SELECT SUM(subtotale) FROM co_righe2_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id ) WHERE id='.prepare($idcontratto)); + $dbo->query('UPDATE co_contratti SET budget=( SELECT SUM(subtotale) FROM co_righe2_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id ) WHERE id='.prepare($id_record)); break; @@ -255,3 +279,13 @@ switch (get('op')) { break; } + +if (post('op') !== null && post('op') != 'update') { + aggiorna_sconto([ + 'parent' => 'co_contratti', + 'row' => 'co_righe2_contratti', + ], [ + 'parent' => 'id', + 'row' => 'idcontratto', + ], $id_record); +} diff --git a/modules/contratti/add_riga.php b/modules/contratti/add_riga.php index 214db7268..c6c798753 100644 --- a/modules/contratti/add_riga.php +++ b/modules/contratti/add_riga.php @@ -6,7 +6,7 @@ $idcontratto = $get['idcontratto']; $idriga = $get['idriga']; // Info contratto -$q = 'SELECT * FROM co_contratti WHERE id='.prepare($idcontratto); +$q = 'SELECT *, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=co_contratti.idanagrafica)) AS prc_guadagno FROM co_contratti WHERE id='.prepare($idcontratto); $rs = $dbo->fetchArray($q); $numero = $rs[0]['numero']; $idanagrafica = $rs[0]['idanagrafica']; @@ -21,6 +21,12 @@ if (empty($idriga)) { $um = ''; $prezzo = 0; $sconto = 0; + $tipo_sconto = ''; + + if (!empty($rs[0]['prc_guadagno'])) { + $sconto = $rs[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; + } // Leggo l'iva predefinita dall'anagrafica e se non c'è leggo quella predefinita generica $rsa = $dbo->fetchArray('SELECT idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); @@ -37,6 +43,7 @@ if (empty($idriga)) { $idiva = $rsr[0]['idiva']; $prezzo = $rsr[0]['subtotale'] / $rsr[0]['qta']; $sconto = $rsr[0]['sconto']; + $tipo_sconto = $rsr[0]['tipo_sconto']; } echo ' @@ -55,7 +62,7 @@ echo ' echo '
- {[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva_articolo", "required": 1, "values": "query=SELECT id, descrizione FROM co_iva ORDER BY descrizione ASC", "value": "'.$idiva.'" ]} + {[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "values": "query=SELECT id, descrizione FROM co_iva ORDER BY descrizione ASC", "value": "'.$idiva.'" ]}
'; // Quantità @@ -119,7 +126,7 @@ echo ' // Sconto unitario echo '
- {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$sconto.'", "icon-after": "€" ]} + {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$sconto.'", "icon-after": "choice|untprc|'.$tipo_sconto.'" ]}
'; echo ' diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 77fed5515..747a0a40f 100644 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -103,6 +103,17 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
+
+
+ {[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "help": "", "icon-after": "choice|untprc|$tipo_sconto_globale$" ]} +
+
+ +
{[ "type": "textarea", "label": "", "name": "esclusioni", "class": "autosize", "value": "$esclusioni$" ]} diff --git a/modules/contratti/row-list.php b/modules/contratti/row-list.php index 3679aa50e..8a6749569 100644 --- a/modules/contratti/row-list.php +++ b/modules/contratti/row-list.php @@ -68,9 +68,9 @@ if (!empty($rs_art)) { '.Translator::numberToLocale($r['subtotale']).' €'; - if ($r['sconto'] > 0) { - echo '
- - sconto '.Translator::numberToLocale($r['sconto'] * $r['qta']).' €'; + if ($r['sconto_unitario'] > 0) { + echo ' +
- sconto '.Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; } echo ' @@ -80,7 +80,7 @@ if (!empty($rs_art)) { echo ' '; - if ($records[0]['stato'] != 'Pagato') { + if ($records[0]['stato'] != 'Pagato' && empty($r['sconto_globale'])) { echo '
@@ -103,9 +103,9 @@ if (!empty($rs_art)) { '; $iva_art += $r['iva']; - $imponibile_art += $r['subtotale'] - ($r['sconto'] * $r['qta']); + $imponibile_art += $r['subtotale'] - $r['sconto']; $imponibile_nosconto += $r['subtotale']; - $sconto_art += $r['sconto'] * $r['qta']; + $sconto_art += $r['sconto']; } } diff --git a/modules/ddt/add_articolo.php b/modules/ddt/add_articolo.php index 7d34d7a0b..70090842a 100644 --- a/modules/ddt/add_articolo.php +++ b/modules/ddt/add_articolo.php @@ -6,17 +6,25 @@ $module = Modules::getModule($id_module); if ($module['name'] == 'Ddt di vendita') { $dir = 'entrata'; + + $listino = 'idlistino_vendite'; } else { $dir = 'uscita'; + + $listino = 'idlistino_acquisti'; } $_SESSION['superselect']['dir'] = $dir; // Info documento -$q = 'SELECT *, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=dt_ddt.idanagrafica)) AS prc_guadagno FROM dt_ddt WHERE id='.prepare($id_record); +$q = 'SELECT *, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT '.$listino.' FROM an_anagrafiche WHERE idanagrafica=dt_ddt.idanagrafica)) AS prc_guadagno FROM dt_ddt WHERE id='.prepare($id_record); $rs = $dbo->fetchArray($q); $numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; $idanagrafica = $rs[0]['idanagrafica']; -$prc_guadagno = $rs[0]['prc_guadagno']; + +if (!empty($rs[0]['prc_guadagno'])) { + $sconto = $rs[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; +} /* Form di inserimento riga documento @@ -78,7 +86,7 @@ echo ' // Sconto unitario echo '
- {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc" ]} + {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$sconto.'", "icon-after": "choice|untprc| '.$tipo_sconto.'" ]}
'; diff --git a/modules/ddt/row-list.php b/modules/ddt/row-list.php index f7c8524b0..2040cbefa 100644 --- a/modules/ddt/row-list.php +++ b/modules/ddt/row-list.php @@ -85,7 +85,7 @@ if (!empty($rs)) { echo ' '; - if (!str_contains($r['descrizione'], 'SCONTO')) { + if (empty($r['sconto_globale'])) { echo ' '.Translator::numberToLocale($r['qta'] - $r['qta_evasa']).'
('.tr('Q.tà iniziale').': '.Translator::numberToLocale($r['qta']).')'; @@ -130,7 +130,7 @@ if (!empty($rs)) { // Possibilità di rimuovere una riga solo se il ddt non è evaso echo ' '; - if ($records[0]['stato'] != 'Evaso' && !str_contains($r['descrizione'], 'SCONTO')) { + if ($records[0]['stato'] != 'Evaso' && empty($r['sconto_globale'])) { echo " @@ -169,7 +169,7 @@ if (!empty($rs)) { "; } - if (!str_contains($r['descrizione'], 'SCONTO')) { + if (empty($r['sconto_globale'])) { echo '
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index f51ba8b5e..073cd6c94 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -46,25 +46,6 @@ switch (post('op')) { $dbo->query($query); $id_record = $dbo->lastInsertedID(); - if ($dir == 'entrata') { - $listino = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id = (SELECT idlistino FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).')'); - - if (!empty($listino)) { - $dbo->update('co_documenti', [ - 'tipo_sconto_globale' => 'PRC', - 'sconto_globale' => abs($listino[0]['prc_guadagno']), - ], ['id' => $id_record]); - - aggiorna_sconto([ - 'parent' => 'co_documenti', - 'row' => 'co_righe_documenti', - ], [ - 'parent' => 'id', - 'row' => 'iddocumento', - ], $id_record); - } - } - $_SESSION['infos'][] = tr('Aggiunta fattura numero _NUM_!', [ '_NUM_' => $numero, ]); @@ -312,12 +293,6 @@ switch (post('op')) { $prezzo = $post['prezzo']; $qta = 1; - // Calcolo dello sconto - $sconto_unitario = $post['sconto']; - $tipo_sconto = $post['tipo_sconto']; - $sconto = ($tipo_sconto == 'PRC') ? ($prezzo * $sconto_unitario) / 100 : $sconto_unitario; - $sconto = $sconto * $qta; - // Leggo l'anagrafica del cliente $rs = $dbo->fetchArray('SELECT idanagrafica, codice, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento).') AS data FROM `in_interventi` WHERE id='.prepare($idintervento)); $idanagrafica = $rs[0]['idanagrafica']; @@ -358,14 +333,14 @@ switch (post('op')) { // Calcolo rivalsa inps $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); $rs = $dbo->fetchArray($query); - $rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + $rivalsainps = ($subtot) / 100 * $rs[0]['percentuale']; // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + $ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale']; - $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', NULL, '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).", 'km' ".prepare($km).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; + $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Trasferta intervento '.$codice.' del '.Translator::dateToLocale($data)).', '.prepare($subtot).", 'km' ".prepare($km).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); } @@ -386,20 +361,47 @@ switch (post('op')) { // Calcolo rivalsa inps $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); $rs = $dbo->fetchArray($query); - $rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + $rivalsainps = ($subtot) / 100 * $rs[0]['percentuale']; // Calcolo ritenuta d'acconto $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + $ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale']; - $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', NULL, '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).", 0, 0, 'UNT', ".prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; + $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($rsr[$i]['descrizione']).', '.prepare($subtot).", 0, 0, 'UNT', ".prepare($rsr[$i]['um']).', '.prepare($rsr[$i]['qta']).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; $dbo->query($query); } } $costi_intervento = get_costi_intervento($idintervento); - $prezzo = $costi_intervento['manodopera_scontato'] + $costi_intervento['viaggio_scontato'] - $costi_intervento['sconto_globale']; + $prezzo = $costi_intervento['manodopera_scontato'] + $costi_intervento['viaggio_scontato']; + + // Aggiunta sconto + if (!empty($costi_intervento['sconto_globale'])) { + $subtot = $costi_intervento['sconto_globale']; + + // Calcolo iva + $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); + $rs = $dbo->fetchArray($query); + $desc_iva = $rs[0]['descrizione']; + + $subtot = $rsr[$i]['prezzo_vendita'] * $rsr[$i]['qta']; + $iva = ($subtot) / 100 * $rs[0]['percentuale']; + $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; + + // Calcolo rivalsa inps + $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); + $rs = $dbo->fetchArray($query); + $rivalsainps = ($subtot) / 100 * $rs[0]['percentuale']; + + // Calcolo ritenuta d'acconto + $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); + $rs = $dbo->fetchArray($query); + $ritenutaacconto = ($subtot + $rivalsainps) / 100 * $rs[0]['percentuale']; + + $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', NULL, '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare('Sconto '.$descrizione).', '.prepare($subtot).', 1, '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; + $dbo->query($query); + } // Calcolo iva $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); @@ -421,7 +423,7 @@ switch (post('op')) { $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; // Aggiunta riga intervento sul documento - $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).", '-', ".prepare($qta).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; + $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).", '-', ".prepare($qta).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; if ($dbo->query($query)) { // Ricalcolo inps, ritenuta e bollo if ($dir == 'entrata') { @@ -499,7 +501,7 @@ switch (post('op')) { 'desc_iva' => $riga['desc_iva'], 'iva' => $riga['iva'], 'iva_indetraibile' => $riga['iva_indetraibile'], - 'descrizione' => str_replace('SCONTO', 'SCONTO PREVENTIVO', $riga['descrizione']), + 'descrizione' => str_replace('SCONTO', 'SCONTO '.$descrizione, $riga['descrizione']), 'subtotale' => $riga['subtotale'], 'um' => $riga['um'], 'qta' => $riga['qta'], @@ -644,6 +646,7 @@ switch (post('op')) { $descrizione = post('descrizione'); $idiva = post('idiva'); $idconto = post('idconto'); + $um = post('um'); $qta = $post['qta']; $prezzo = $post['prezzo']; diff --git a/modules/fatture/add_articolo.php b/modules/fatture/add_articolo.php index 316492524..25ecc0b19 100644 --- a/modules/fatture/add_articolo.php +++ b/modules/fatture/add_articolo.php @@ -7,16 +7,25 @@ $module = Modules::getModule($id_module); if ($module['name'] == 'Fatture di vendita') { $dir = 'entrata'; $conti = 'conti-vendite'; + + $listino = 'idlistino_vendite'; + } else { $dir = 'uscita'; $conti = 'conti-acquisti'; + + $listino = 'idlistino_acquisti'; } // Info documento -$q = 'SELECT *, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=co_documenti.idanagrafica)) AS prc_guadagno FROM co_documenti WHERE id='.prepare($id_record); +$q = 'SELECT *, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT '.$listino.' FROM an_anagrafiche WHERE idanagrafica=co_documenti.idanagrafica)) AS prc_guadagno FROM co_documenti WHERE id='.prepare($id_record); $record = $dbo->fetchArray($q); $numero = ($record[0]['numero_esterno'] != '') ? $record[0]['numero_esterno'] : $record[0]['numero']; -$prc_guadagno = $record[0]['prc_guadagno']; + +if (!empty($rs[0]['prc_guadagno'])) { + $sconto = $rs[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; +} $idconto = $record[0]['idconto']; $idanagrafica = $record[0]['idanagrafica']; @@ -99,7 +108,7 @@ echo ' // Sconto unitario echo '
- {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc" ]} + {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$sconto.'", "icon-after": "choice|untprc| '.$tipo_sconto.'" ]}
'; diff --git a/modules/fatture/add_intervento.php b/modules/fatture/add_intervento.php index 0e9ef4a2f..51e47dfef 100644 --- a/modules/fatture/add_intervento.php +++ b/modules/fatture/add_intervento.php @@ -72,14 +72,8 @@ echo ' // Costo unitario echo '
-
+
{[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo", "required": 1, "icon-after": "€", "disabled": 1 ]} -
'; - -// Sconto unitario -echo ' -
- {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc" ]}
'; diff --git a/modules/fatture/add_preventivo.php b/modules/fatture/add_preventivo.php index 5ad79ef6b..455d7fb0c 100644 --- a/modules/fatture/add_preventivo.php +++ b/modules/fatture/add_preventivo.php @@ -34,7 +34,7 @@ echo ' echo '
- {[ "type": "select", "label": "'.tr('Preventivo').'", "name": "idpreventivo", "required": 1, "values": "query=SELECT id, CONCAT(\'Preventivo numero \', numero, \' - \', nome) AS descrizione, (SELECT SUM(subtotale) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS subtot, (SELECT SUM(sconto) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS sconto FROM co_preventivi WHERE idanagrafica='.prepare($idanagrafica).' AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione=\'Accettato\' OR descrizione=\'In lavorazione\' OR descrizione=\'In attesa di conferma\')", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.text); $(\'#prezzo\').val($data.subtot); $(\'#sconto\').val($data.sconto);\"" ]} + {[ "type": "select", "label": "'.tr('Preventivo').'", "name": "idpreventivo", "required": 1, "values": "query=SELECT id, CONCAT(\'Preventivo numero \', numero, \' - \', nome) AS descrizione, (SELECT SUM(subtotale) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) - (SELECT SUM(sconto) FROM co_righe_preventivi WHERE idpreventivo=co_preventivi.id GROUP BY idpreventivo) AS subtot FROM co_preventivi WHERE idanagrafica='.prepare($idanagrafica).' AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione=\'Accettato\' OR descrizione=\'In lavorazione\' OR descrizione=\'In attesa di conferma\')", "extra": "onchange=\"$data = $(this).selectData(); $(\'#descrizione\').val($data.text); $(\'#prezzo\').val($data.subtot);\"" ]}
@@ -69,14 +69,8 @@ echo ' // Costo unitario echo '
-
- {[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo", "required": 1, "icon-after": "€" ]} -
'; - -// Sconto unitario -echo ' -
- {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc" ]} +
+ {[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo", "required": 1, "icon-after": "€", "disabled": 1 ]}
'; diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 889139e44..69ff4888d 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -205,7 +205,7 @@ if ($records[0]['stato'] == 'Pagato') {
- {[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "help": "", "icon-after": "choice|untprc|$tipo_sconto_globale$"", "name": "sconto_generico", "value": "$sconto_globale$", "help": "", "icon-after": "choice|untprc|$tipo_sconto_globale$" true]); // Rimozione dello sconto precedente - $dbo->query('DELETE FROM '.$tables['row']." WHERE descrizione LIKE '%".$descrizione."%' AND ".$fields['row'].'='.prepare($id_record)); + $dbo->query('DELETE FROM '.$tables['row'].' WHERE sconto_globale = 1 AND '.$fields['row'].'='.prepare($id_record)); // Individuazione del nuovo sconto $sconto = $dbo->select($tables['parent'], ['sconto_globale', 'tipo_sconto_globale'], [$fields['parent'] => $id_record]); @@ -766,6 +766,7 @@ function aggiorna_sconto($tables, $fields, $id_record, $options = []) 'idiva' => $idiva, 'desc_iva' => $rsi[0]['descrizione'], 'iva' => $iva, + 'sconto_globale' => 1, '#order' => '(SELECT IFNULL(MAX(`order`) + 1, 0) FROM '.$tables['row'].' AS t WHERE '.$fields['row'].'='.prepare($id_record).')', ]; diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php index 863264c57..ec7553889 100644 --- a/modules/fatture/row-list.php +++ b/modules/fatture/row-list.php @@ -25,6 +25,9 @@ if (!empty($rs)) { foreach ($rs as $r) { $extra = ''; + $modulo = null; + $id = null; + // Articoli if (!empty($r['idarticolo'])) { $modulo = Modules::getModule('Articoli')['id']; @@ -69,9 +72,6 @@ if (!empty($rs)) { } // Righe generiche else { - $modulo = 0; - $id = 0; - $delete = 'unlink_riga'; } @@ -96,6 +96,10 @@ if (!empty($rs)) { } } + $descrizione = null; + $ref = null; + $ref_id = null; + // Aggiunta riferimento a ordine if (!empty($r['idordine'])) { $rso = $dbo->fetchArray('SELECT numero, numero_esterno, data, dir FROM or_ordini JOIN or_tipiordine ON or_tipiordine.id = or_ordini.idtipoordine WHERE or_ordini.id='.prepare($r['idordine'])); @@ -180,7 +184,7 @@ if (!empty($rs)) { echo ' '; - if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa' && !str_contains($r['descrizione'], 'SCONTO')) { + if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa' && empty($r['sconto_globale'])) { echo "
@@ -207,7 +211,7 @@ if (!empty($rs)) {
"; } - if (!str_contains($r['descrizione'], 'SCONTO')) { + if (empty($r['sconto_globale'])) { echo '
diff --git a/modules/interventi/add_articolo.php b/modules/interventi/add_articolo.php index 7d5ba2fb9..d7f07fcfa 100644 --- a/modules/interventi/add_articolo.php +++ b/modules/interventi/add_articolo.php @@ -13,6 +13,10 @@ $can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (get_var('Mostra i p $idriga = get('idriga'); $idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo'); +// 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)); + +$idanagrafica = $rs[0]['idanagrafica']; if (empty($idriga)) { $op = 'addarticolo'; $button = ' '.tr('Aggiungi'); @@ -24,10 +28,15 @@ if (empty($idriga)) { $um = ''; $prezzo_vendita = '0'; - $sconto_unitario = 0; $idimpianto = 0; + + $listino = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id = (SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).')'); + if (!empty($listino[0]['prc_guadagno'])) { + $sconto = $listino[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; + } } else { $op = 'editarticolo'; $button = ' '.tr('Modifica'); @@ -53,10 +62,6 @@ if (empty($idriga)) { $idimpianto = $rsr[0]['idimpianto']; } -// 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)); -$idanagrafica = $rs[0]['idanagrafica']; - /* Form di inserimento */ diff --git a/modules/interventi/add_righe.php b/modules/interventi/add_righe.php index efe96265d..5c6b76135 100644 --- a/modules/interventi/add_righe.php +++ b/modules/interventi/add_righe.php @@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php'; $idriga = filter('idriga'); //Lettura idanagrafica cliente e percentuale di sconto/rincaro in base al listino -$rs = $dbo->fetchArray('SELECT idanagrafica, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=.in_interventi.idanagrafica)) AS prc_sconto FROM in_interventi WHERE id='.prepare($id_record)); +$rs = $dbo->fetchArray('SELECT idanagrafica, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=.in_interventi.idanagrafica)) AS prc_sconto FROM in_interventi WHERE id='.prepare($id_record)); $idanagrafica = $rs[0]['idanagrafica']; $prc_sconto = $rs[0]['prc_sconto']; @@ -19,6 +19,11 @@ if (empty($idriga)) { $um = ''; $prezzo_vendita = '0'; $prezzo_acquisto = '0'; + + if (!empty($rs[0]['prc_guadagno'])) { + $sconto = $rs[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; + } } else { $op = 'editriga'; $button = ' '.tr('Modifica'); @@ -90,8 +95,10 @@ echo ' echo ' - -
'; +'; + +echo ' +'; ?> @@ -115,5 +122,3 @@ echo ' $('#add-righe').ajaxForm( options ); }); - - diff --git a/modules/interventi/ajax_articoli.php b/modules/interventi/ajax_articoli.php index 8f6a60ac5..6cccab4f0 100644 --- a/modules/interventi/ajax_articoli.php +++ b/modules/interventi/ajax_articoli.php @@ -4,7 +4,7 @@ include_once __DIR__.'/../../core.php'; include_once $docroot.'/modules/articoli/modutil.php'; -$query = 'SELECT *, (SELECT codice FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS codice, mg_articoli_interventi.id AS idriga, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino'); +$query = 'SELECT *, (SELECT codice FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS codice, mg_articoli_interventi.id AS idriga, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino'); $rs = $dbo->fetchArray($query); if (!empty($rs)) { diff --git a/modules/interventi/ajax_costi.php b/modules/interventi/ajax_costi.php index 62ec158ca..7e61001f1 100644 --- a/modules/interventi/ajax_costi.php +++ b/modules/interventi/ajax_costi.php @@ -73,3 +73,6 @@ echo ' {[ "type": "number", "label": "'.tr('Sconto globale').'", "name": "sconto_globale", "value": "'.$sconto.'", "icon-after": "choice|untprc|'.$tipo_sconto.'" ]}
'; + +echo ' +'; diff --git a/modules/ordini/add_articolo.php b/modules/ordini/add_articolo.php index 0e5927298..03e184b2e 100644 --- a/modules/ordini/add_articolo.php +++ b/modules/ordini/add_articolo.php @@ -6,16 +6,24 @@ $module = Modules::getModule($id_module); if ($module['name'] == 'Ordini cliente') { $dir = 'entrata'; + + $listino = 'idlistino_vendite'; } else { $dir = 'uscita'; + + $listino = 'idlistino_acquisti'; } //Info documento -$q = 'SELECT *, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=or_ordini.idanagrafica) ) AS prc_guadagno FROM or_ordini WHERE id='.prepare($id_record); +$q = 'SELECT *, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT '.$listino.' FROM an_anagrafiche WHERE idanagrafica=or_ordini.idanagrafica) ) AS prc_guadagno FROM or_ordini WHERE id='.prepare($id_record); $rs = $dbo->fetchArray($q); $numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; $idanagrafica = $rs[0]['idanagrafica']; -$prc_guadagno = $rs[0]['prc_guadagno']; + +if (!empty($rs[0]['prc_guadagno'])) { + $sconto = $rs[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; +} // Seleziona articolo // - per i documenti di vendita deve esserci almeno 1 unità @@ -87,7 +95,7 @@ echo ' // Sconto unitario echo '
- {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc" ]} + {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$sconto.'", "icon-after": "choice|untprc| '.$tipo_sconto.'" ]}
'; diff --git a/modules/ordini/row-list.php b/modules/ordini/row-list.php index a236c775f..56c2b3886 100644 --- a/modules/ordini/row-list.php +++ b/modules/ordini/row-list.php @@ -75,7 +75,7 @@ if (!empty($rs)) { echo ' '; - if (!str_contains($r['descrizione'], 'SCONTO')) { + if (empty($r['sconto_globale'])) { echo ' '.Translator::numberToLocale($r['qta'] - $r['qta_evasa']).'
('.tr('Q.tà iniziale').': '.Translator::numberToLocale($r['qta']).')'; @@ -121,7 +121,7 @@ if (!empty($rs)) { echo ' '; - if ($records[0]['stato'] != 'Evaso' && !str_contains($r['descrizione'], 'SCONTO')) { + if ($records[0]['stato'] != 'Evaso' && empty($r['sconto_globale'])) { echo "
@@ -152,7 +152,7 @@ if (!empty($rs)) {
"; } - if (!str_contains($r['descrizione'], 'SCONTO')) { + if (empty($r['sconto_globale'])) { echo '
diff --git a/modules/preventivi/actions.php b/modules/preventivi/actions.php index 8c47cd395..7f8f417e0 100644 --- a/modules/preventivi/actions.php +++ b/modules/preventivi/actions.php @@ -49,23 +49,6 @@ switch (post('op')) { $dbo->query('INSERT INTO co_preventivi(idanagrafica, nome, numero, idagente, idstato, idtipointervento, data_bozza, data_conclusione, idiva, idpagamento) VALUES ('.prepare($idanagrafica).', '.prepare($nome).', '.prepare($numero).', '.prepare($idagente).", (SELECT `id` FROM `co_statipreventivi` WHERE `descrizione`='Bozza'), ".prepare($idtipointervento).', NOW(), DATE_ADD(NOW(), INTERVAL +1 MONTH), '.prepare($idiva).', '.prepare($idpagamento).')'); $id_record = $dbo->lastInsertedID(); - $listino = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id = (SELECT idlistino FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).')'); - - if (!empty($listino)) { - $dbo->update('co_preventivi', [ - 'tipo_sconto_globale' => 'PRC', - 'sconto_globale' => abs($listino[0]['prc_guadagno']), - ], ['id' => $id_record]); - - aggiorna_sconto([ - 'parent' => 'co_preventivi', - 'row' => 'co_righe_preventivi', - ], [ - 'parent' => 'id', - 'row' => 'idpreventivo', - ], $id_record); - } - /* // inserisco righe standard preventivo // ore lavoro diff --git a/modules/preventivi/edit_riga.php b/modules/preventivi/edit_riga.php index a630cc3a2..c05b30d4c 100644 --- a/modules/preventivi/edit_riga.php +++ b/modules/preventivi/edit_riga.php @@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php'; $idriga = get('idriga'); // Info preventivo -$q = 'SELECT numero, idanagrafica FROM co_preventivi WHERE id='.prepare($id_record); +$q = 'SELECT numero, idanagrafica, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=co_preventivi.idanagrafica)) AS prc_guadagno FROM co_preventivi WHERE id='.prepare($id_record); $rs = $dbo->fetchArray($q); $numero = $rs[0]['numero']; $idanagrafica = $rs[0]['idanagrafica']; @@ -22,6 +22,11 @@ if (empty($idriga)) { $idiva = get_var('Iva predefinita'); $subtot = 0; $sconto = 0; + + if (!empty($rs[0]['prc_guadagno'])) { + $sconto = $rs[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; + } } else { $op = 'editriga'; $button = tr('Modifica'); diff --git a/modules/preventivi/row-list.php b/modules/preventivi/row-list.php index 9f15b0199..535e30c67 100644 --- a/modules/preventivi/row-list.php +++ b/modules/preventivi/row-list.php @@ -78,7 +78,7 @@ if (!empty($rs)) { echo ' '; - if ($records[0]['stato'] != 'Pagato' && !str_contains($r['descrizione'], 'SCONTO')) { + if ($records[0]['stato'] != 'Pagato' && empty($r['sconto_globale'])) { echo "
@@ -94,7 +94,7 @@ if (!empty($rs)) {
"; } - if (!str_contains($r['descrizione'], 'SCONTO')) { + if (empty($r['sconto_globale'])) { echo '
diff --git a/templates/contratti_cons/pdfgen.contratti_cons.php b/templates/contratti_cons/pdfgen.contratti_cons.php index e1179e981..ea0e473cb 100644 --- a/templates/contratti_cons/pdfgen.contratti_cons.php +++ b/templates/contratti_cons/pdfgen.contratti_cons.php @@ -162,7 +162,7 @@ if (sizeof($contratti) > 0) { $body .= "
\n"; // Conteggio articoli utilizzati -$query = "SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC"; +$query = "SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC"; $rs2 = $dbo->fetchArray($query); if (sizeof($rs2) > 0) { diff --git a/templates/ddt/body.php b/templates/ddt/body.php index 8d222fc5e..71b3095b0 100644 --- a/templates/ddt/body.php +++ b/templates/ddt/body.php @@ -59,7 +59,7 @@ foreach ($rs_gen as $r) { $sconto = $r['sconto']; $iva = $r['iva']; - if (str_contains($r['descrizione'], 'SCONTO')) { + if (empty($r['sconto_globale'])) { $sconto_generico = $r['subtotale']; $iva_gen += $r['iva']; } else { diff --git a/templates/preventivi_cons/pdfgen.preventivi_cons.php b/templates/preventivi_cons/pdfgen.preventivi_cons.php index ecfe8e960..06fd06ae2 100644 --- a/templates/preventivi_cons/pdfgen.preventivi_cons.php +++ b/templates/preventivi_cons/pdfgen.preventivi_cons.php @@ -192,7 +192,7 @@ if (sizeof($preventivi) > 0) { $body .= "
\n"; // Conteggio articoli utilizzati -$query = "SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento = mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno,(SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING ".(!empty($idinterventi) ? 'idintervento IN('.implode(',', $idinterventi).') AND ' : '')." NOT idarticolo='0' ORDER BY idarticolo ASC"; +$query = "SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento = mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno,(SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING ".(!empty($idinterventi) ? 'idintervento IN('.implode(',', $idinterventi).') AND ' : '')." NOT idarticolo='0' ORDER BY idarticolo ASC"; $rs2 = $dbo->fetchArray($query); if (sizeof($rs2) > 0) { diff --git a/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php b/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php index a72e5f3ac..0b6ddf9c5 100644 --- a/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php +++ b/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php @@ -275,7 +275,7 @@ if (sizeof($info_intervento) > 0) { } // Conteggio articoli utilizzati -$query = "SELECT *, (SELECT percentuale FROM co_iva WHERE id=(SELECT idiva_vendita FROM mg_articoli WHERE id=idarticolo)) AS prciva_vendita, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento GROUP BY idintervento HAVING idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC"; +$query = "SELECT *, (SELECT percentuale FROM co_iva WHERE id=(SELECT idiva_vendita FROM mg_articoli WHERE id=idarticolo)) AS prciva_vendita, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento GROUP BY idintervento HAVING idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC"; $rs2 = $dbo->fetchArray($query); if (sizeof($rs2) > 0) { $body .= "\n"; diff --git a/update/2_3.sql b/update/2_3.sql index e0880f22a..a05a78514 100644 --- a/update/2_3.sql +++ b/update/2_3.sql @@ -86,11 +86,13 @@ DROP TABLE `co_contratti_interventi`; ALTER TABLE `dt_righe_ddt` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; ALTER TABLE `co_righe_preventivi` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; ALTER TABLE `or_righe_ordini` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; +ALTER TABLE `co_righe2_contratti` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; -- Fix per l'ordinamento delle righe in Preventivi, DDT e Ordini ALTER TABLE `co_righe_preventivi` ADD `order` tinyint(11) NOT NULL AFTER `qta`; ALTER TABLE `dt_righe_ddt` ADD `order` tinyint(11) NOT NULL AFTER `qta_evasa`; ALTER TABLE `or_righe_ordini` ADD `order` tinyint(11) NOT NULL AFTER `qta_evasa`; +ALTER TABLE `co_righe2_contratti` ADD `order` tinyint(11) NOT NULL AFTER `qta`; ALTER TABLE `co_righe_documenti` CHANGE `ordine` `order` int(11) NOT NULL; -- Aggiungo idconto anche per le righe delle fatture e allineamento (copia idconto nelle righe delle fatture, solo per i conti di entrata e uscita) @@ -114,11 +116,11 @@ ALTER TABLE `or_ordini` ADD `sconto_globale` decimal(12, 4) NOT NULL, ADD `tipo_ ALTER TABLE `dt_ddt` ADD `sconto_globale` decimal(12, 4) NOT NULL, ADD `tipo_sconto_globale` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT'; ALTER TABLE `in_interventi` ADD `sconto_globale` decimal(12, 4) NOT NULL, ADD `tipo_sconto_globale` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT'; -ALTER TABLE `co_righe_documenti` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`; -ALTER TABLE `co_righe_preventivi` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`; -ALTER TABLE `co_righe2_contratti` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`; -ALTER TABLE `or_righe_ordini` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`; -ALTER TABLE `dt_righe_ddt` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`; +ALTER TABLE `co_righe_documenti` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`, ADD `sconto_globale` boolean NOT NULL DEFAULT 0 AFTER `tipo_sconto`; +ALTER TABLE `co_righe_preventivi` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`, ADD `sconto_globale` boolean NOT NULL DEFAULT 0 AFTER `tipo_sconto`; +ALTER TABLE `co_righe2_contratti` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`, ADD `sconto_globale` boolean NOT NULL DEFAULT 0 AFTER `tipo_sconto`; +ALTER TABLE `or_righe_ordini` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`, ADD `sconto_globale` boolean NOT NULL DEFAULT 0 AFTER `tipo_sconto`; +ALTER TABLE `dt_righe_ddt` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`, ADD `sconto_globale` boolean NOT NULL DEFAULT 0 AFTER `tipo_sconto`; ALTER TABLE `in_righe_interventi` ADD `sconto` decimal(12, 4) NOT NULL, ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`; ALTER TABLE `mg_articoli_interventi` ADD `sconto_unitario` decimal(12, 4) NOT NULL AFTER `sconto`, ADD `tipo_sconto` enum('UNT', 'PRC') NOT NULL DEFAULT 'UNT' AFTER `sconto_unitario`; @@ -762,8 +764,14 @@ UPDATE `zz_modules` SET `title` = `name` WHERE `title` = ''; ALTER TABLE `co_iva` ADD `dicitura` varchar(255); -- Miglioramento della gestione dei pagamenti predefiniti -ALTER TABLE `an_anagrafiche` CHANGE `idpagamento` `idpagamento_vendite` int(11), ADD `idpagamento_acquisti` int(11); -UPDATE `an_anagrafiche` SET `idpagamento_acquisti` = `idpagamento_vendite` WHERE `idpagamento_acquisti` IS NULL; +ALTER TABLE `an_anagrafiche` CHANGE `idpagamento` `idpagamento_vendite` int(11), ADD `idpagamento_acquisti` int(11) AFTER `idpagamento_vendite`; +UPDATE `an_anagrafiche` SET `idpagamento_vendite` = NULL WHERE `idpagamento_vendite` = 0; +UPDATE `an_anagrafiche` SET `idpagamento_acquisti` = `idpagamento_vendite` WHERE `idpagamento_vendite` IS NOT NULL; + +-- Miglioramento della gestione dei listini predefiniti +ALTER TABLE `an_anagrafiche` CHANGE `idlistino` `idlistino_vendite` int(11), ADD `idlistino_acquisti` int(11) AFTER `idlistino_vendite`; +UPDATE `an_anagrafiche` SET `idlistino_vendite` = NULL WHERE `idlistino_vendite` = 0; +UPDATE `an_anagrafiche` SET `idlistino_acquisti` = `idlistino_vendite` WHERE `idlistino_vendite` IS NOT NULL; -- Rimozione data_sla e ora_sla ALTER TABLE `in_interventi` DROP `data_sla`, DROP `ora_sla`;