diff --git a/lib/functions.php b/lib/functions.php
index 1e8eacf2c..603ad4491 100644
--- a/lib/functions.php
+++ b/lib/functions.php
@@ -645,7 +645,7 @@ function isAjaxRequest()
*
* @return float
*/
-function sum($first, $second = null, $decimals = null)
+function sum($first, $second = null, $decimals = 4)
{
$first = (array) $first;
$second = (array) $second;
@@ -654,9 +654,7 @@ function sum($first, $second = null, $decimals = null)
$result = 0;
- if (!is_numeric($decimals)) {
- $decimals = is_numeric($decimals) ? $decimals : Translator::getFormatter()->getPrecision();
- }
+ $decimals = is_numeric($decimals) ? $decimals : Translator::getFormatter()->getPrecision();
$bcadd = function_exists('bcadd');
diff --git a/modules/contratti/row-list.php b/modules/contratti/row-list.php
index 29271d368..0e85e1205 100644
--- a/modules/contratti/row-list.php
+++ b/modules/contratti/row-list.php
@@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
/*
ARTICOLI + RIGHE GENERICHE
*/
-$rs = $dbo->fetchArray('SELECT *, round(iva,'.Settings::get('Cifre decimali per importi').') AS iva, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo), "") AS codice FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record).' ORDER BY `order`');
+$rs = $dbo->fetchArray('SELECT *, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo), "") AS codice FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record).' ORDER BY `order`');
echo '
diff --git a/modules/ddt/row-list.php b/modules/ddt/row-list.php
index 85fad83e3..7c6850a15 100644
--- a/modules/ddt/row-list.php
+++ b/modules/ddt/row-list.php
@@ -19,7 +19,7 @@ echo '
/*
Articoli e righe generiche
*/
-$q_art = 'SELECT *, round(iva,'.Settings::get('Cifre decimali per importi').') AS iva, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice FROM `dt_righe_ddt` WHERE idddt='.prepare($id_record).' ORDER BY `order`';
+$q_art = 'SELECT *, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice FROM `dt_righe_ddt` WHERE idddt='.prepare($id_record).' ORDER BY `order`';
$rs = $dbo->fetchArray($q_art);
if (!empty($rs)) {
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php
index 1994bd14b..a7da07e6a 100644
--- a/modules/fatture/actions.php
+++ b/modules/fatture/actions.php
@@ -633,13 +633,14 @@ switch (post('op')) {
// Aggiunta riga preventivo sul documento
$query = 'INSERT INTO co_righe_documenti(iddocumento, idpreventivo, idconto, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idritenutaacconto, ritenutaacconto, idrivalsainps, rivalsainps, `order`) VALUES('.prepare($id_record).', '.prepare($idpreventivo).', '.prepare($idconto).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($prezzo).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).", '-', 1, ".prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
$dbo->query($query);
-
- // Aggiorno lo stato degli interventi collegati al preventivo se ce ne sono
- $query2 = 'SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';
- $rs2 = $dbo->fetchArray($query2);
- for ($j = 0; $j < sizeof($rs2); ++$j) {
- $dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE id IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo=".prepare($rs2[$j]['idpreventivo']).')');
- }
+ }
+
+ // Aggiorno lo stato degli interventi collegati al preventivo se ce ne sono
+ $query2 = 'SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';
+ $rs2 = $dbo->fetchArray($query2);
+
+ for ($j = 0; $j < sizeof($rs2); ++$j) {
+ $dbo->query("UPDATE in_interventi SET idstatointervento=(SELECT idstatointervento FROM in_statiintervento WHERE descrizione='Fatturato') WHERE id IN (SELECT idintervento FROM co_preventivi_interventi WHERE idpreventivo=".prepare($rs2[$j]['idpreventivo']).')');
}
$_SESSION['infos'][] = tr('Preventivo _NUM_ aggiunto!', [
diff --git a/modules/fatture/modutil.php b/modules/fatture/modutil.php
index 33fb85bef..4c330d39c 100644
--- a/modules/fatture/modutil.php
+++ b/modules/fatture/modutil.php
@@ -298,7 +298,7 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
// Lettura iva delle righe in fattura
$query = 'SELECT iva FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento);
$rs = $dbo->fetchArray($query);
- $iva_fattura = sum(array_column($rs, 'iva'), null, 2) + $iva_rivalsainps - $iva_indetraibile_fattura;
+ $iva_fattura = sum(array_column($rs, 'iva'), null) + $iva_rivalsainps - $iva_indetraibile_fattura;
// Imposto i segni + e - in base se la fattura è di acquisto o vendita
if ($dir == 'uscita') {
@@ -493,7 +493,7 @@ function get_totale_fattura($iddocumento)
global $dbo;
// Sommo l'iva di ogni riga al totale
- $query = 'SELECT SUM(ROUND(iva, 2)) AS iva FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='.prepare($iddocumento);
+ $query = 'SELECT SUM(iva) AS iva FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='.prepare($iddocumento);
$rs = $dbo->fetchArray($query);
// Aggiungo la rivalsa inps se c'è
@@ -510,7 +510,7 @@ function get_totale_fattura($iddocumento)
$iva_rivalsainps += $rsr[$r]['rivalsainps'] / 100 * $rsi[0]['percentuale'];
}
- $iva = sum($rs[0]['iva'], null, 2);
+ $iva = $rs[0]['iva'];
$totale_iva = sum($iva, $iva_rivalsainps);
$totale = sum([
diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php
index d605c02f0..69b0e825b 100644
--- a/modules/fatture/row-list.php
+++ b/modules/fatture/row-list.php
@@ -5,7 +5,8 @@ include_once __DIR__.'/../../core.php';
/*
Righe fattura
*/
-$rs = $dbo->fetchArray('SELECT *, round(iva,'.Settings::get('Cifre decimali per importi').') AS iva, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),"") AS codice, (SELECT descrizione FROM co_pianodeiconti3 WHERE co_pianodeiconti3.id=IF(co_righe_documenti.idconto = 0, (SELECT idconto FROM co_documenti WHERE iddocumento='.prepare($id_record).' LIMIT 1), co_righe_documenti.idconto)) AS descrizione_conto FROM `co_righe_documenti` WHERE iddocumento='.prepare($id_record).' ORDER BY `order`');
+//$rs = $dbo->fetchArray('SELECT *, round(iva,'.Settings::get('Cifre decimali per importi').') AS iva, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),"") AS codice, (SELECT descrizione FROM co_pianodeiconti3 WHERE co_pianodeiconti3.id=IF(co_righe_documenti.idconto = 0, (SELECT idconto FROM co_documenti WHERE iddocumento='.prepare($id_record).' LIMIT 1), co_righe_documenti.idconto)) AS descrizione_conto FROM `co_righe_documenti` WHERE iddocumento='.prepare($id_record).' ORDER BY `order`');
+$rs = $dbo->fetchArray('SELECT *, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),"") AS codice, (SELECT descrizione FROM co_pianodeiconti3 WHERE co_pianodeiconti3.id=IF(co_righe_documenti.idconto = 0, (SELECT idconto FROM co_documenti WHERE iddocumento='.prepare($id_record).' LIMIT 1), co_righe_documenti.idconto)) AS descrizione_conto FROM `co_righe_documenti` WHERE iddocumento='.prepare($id_record).' ORDER BY `order`');
echo '
@@ -214,7 +215,8 @@ if (!empty($rs)) {
if (empty($r['is_descrizione'])) {
echo '
'.Translator::numberToLocale($r['iva']).' €
-
'.$r['desc_iva'].'';
+
'.$r['desc_iva'].'
+ '.$r['iva'].'';
}
echo '
diff --git a/modules/ordini/row-list.php b/modules/ordini/row-list.php
index 79256b7bc..a13728f3e 100644
--- a/modules/ordini/row-list.php
+++ b/modules/ordini/row-list.php
@@ -19,7 +19,7 @@ echo '
';
-$q = 'SELECT *, round(iva,'.Settings::get('Cifre decimali per importi').') AS iva, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, (SELECT codice FROM mg_articoli WHERE mg_articoli.id=`or_righe_ordini`.`idarticolo`) AS codice FROM `or_righe_ordini` WHERE idordine='.prepare($id_record).' ORDER BY `order`';
+$q = 'SELECT *, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, (SELECT codice FROM mg_articoli WHERE mg_articoli.id=`or_righe_ordini`.`idarticolo`) AS codice FROM `or_righe_ordini` WHERE idordine='.prepare($id_record).' ORDER BY `order`';
$rs = $dbo->fetchArray($q);
if (!empty($rs)) {
diff --git a/modules/preventivi/row-list.php b/modules/preventivi/row-list.php
index 7eeb7fe4b..b4f875e60 100644
--- a/modules/preventivi/row-list.php
+++ b/modules/preventivi/row-list.php
@@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
/*
ARTICOLI + RIGHE GENERICHE
*/
-$q_art = 'SELECT *, round(iva,'.Settings::get('Cifre decimali per importi').') AS iva, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo), "") AS codice FROM co_righe_preventivi WHERE idpreventivo='.prepare($id_record).' ORDER BY `order`';
+$q_art = 'SELECT *, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo), "") AS codice FROM co_righe_preventivi WHERE idpreventivo='.prepare($id_record).' ORDER BY `order`';
$rs = $dbo->fetchArray($q_art);
echo '