diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php
index 037969cd22f..8e63644683c 100644
--- a/htdocs/admin/limits.php
+++ b/htdocs/admin/limits.php
@@ -39,7 +39,7 @@ if (isset($_POST["action"]) && $_POST["action"] == 'update')
{
$MAXDEC=8;
if ($_POST["MAIN_MAX_DECIMALS_UNIT"] > $MAXDEC
- || $_POST["MAIN_MAX_DECIMALS_TTC"] > $MAXDEC
+ || $_POST["MAIN_MAX_DECIMALS_TOT"] > $MAXDEC
|| $_POST["MAIN_MAX_DECIMALS_SHOWN"] > $MAXDEC)
{
$mesg='
'.$langs->trans("ErrorDecimalLargerThanAreForbidden",$MAXDEC).'
';
@@ -47,7 +47,7 @@ if (isset($_POST["action"]) && $_POST["action"] == 'update')
else
{
dolibarr_set_const($db, "MAIN_MAX_DECIMALS_UNIT", $_POST["MAIN_MAX_DECIMALS_UNIT"]);
- dolibarr_set_const($db, "MAIN_MAX_DECIMALS_TTC", $_POST["MAIN_MAX_DECIMALS_TTC"]);
+ dolibarr_set_const($db, "MAIN_MAX_DECIMALS_TOT", $_POST["MAIN_MAX_DECIMALS_TOT"]);
dolibarr_set_const($db, "MAIN_MAX_DECIMALS_SHOWN", $_POST["MAIN_MAX_DECIMALS_SHOWN"]);
Header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
@@ -82,7 +82,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'edit')
print '| '.$langs->trans("MAIN_MAX_DECIMALS_UNIT").' | |
';
$var=!$var;
- print '| '.$langs->trans("MAIN_MAX_DECIMALS_TTC").' | |
';
+ print '| '.$langs->trans("MAIN_MAX_DECIMALS_TOT").' | |
';
$var=!$var;
print '| '.$langs->trans("MAIN_MAX_DECIMALS_SHOWN").' | |
';
@@ -109,7 +109,7 @@ else
print '| '.$langs->trans("MAIN_MAX_DECIMALS_UNIT").' | '.$conf->global->MAIN_MAX_DECIMALS_UNIT.' |
';
$var=!$var;
- print '| '.$langs->trans("MAIN_MAX_DECIMALS_TTC").' | '.$conf->global->MAIN_MAX_DECIMALS_TTC.' |
';
+ print '| '.$langs->trans("MAIN_MAX_DECIMALS_TOT").' | '.$conf->global->MAIN_MAX_DECIMALS_TOT.' |
';
$var=!$var;
print '| '.$langs->trans("MAIN_MAX_DECIMALS_SHOWN").' | '.$conf->global->MAIN_MAX_DECIMALS_SHOWN.' |
';
diff --git a/htdocs/conf/conf.class.php b/htdocs/conf/conf.class.php
index cc4ddad14c7..5be572300f2 100644
--- a/htdocs/conf/conf.class.php
+++ b/htdocs/conf/conf.class.php
@@ -474,7 +474,7 @@ class Conf
// Limites decimales
if (! isset($this->global->MAIN_MAX_DECIMALS_UNIT)) $this->global->MAIN_MAX_DECIMALS_UNIT=5;
- if (! isset($this->global->MAIN_MAX_DECIMALS_TTC)) $this->global->MAIN_MAX_DECIMALS_TTC=2;
+ if (! isset($this->global->MAIN_MAX_DECIMALS_TOT)) $this->global->MAIN_MAX_DECIMALS_TOT=2;
if (! isset($this->global->MAIN_MAX_DECIMALS_SHOWN)) $this->global->MAIN_MAX_DECIMALS_SHOWN=8;
diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php
index 3bb43359ae5..ce26c63520e 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -2841,14 +2841,14 @@ class FactureLigne
$sql.= ' info_bits, total_ht, total_tva, total_ttc)';
$sql.= " VALUES (".$this->fk_facture.",";
$sql.= " '".addslashes($this->desc)."',";
- $sql.= " '".price2num($this->qty)."',";
- $sql.= " '".price2num($this->tva_tx)."',";
+ $sql.= " ".price2num($this->qty).",";
+ $sql.= " ".price2num($this->tva_tx).",";
if ($this->fk_product) { $sql.= "'".$this->fk_product."',"; }
else { $sql.='null,'; }
- $sql.= " '".price2num($this->remise_percent)."',";
- $sql.= " '".price2num($this->subprice)."',";
- $sql.= " '".price2num($this->price)."',";
- $sql.= " '".price2num($this->remise)."',";
+ $sql.= " ".price2num($this->remise_percent).",";
+ $sql.= " ".price2num($this->subprice).",";
+ $sql.= " ".price2num($this->price).",";
+ $sql.= " ".price2num($this->remise).",";
if ($this->fk_remise_except) $sql.= $this->fk_remise_except.",";
else $sql.= 'null,';
if ($this->date_start) { $sql.= "'".$this->date_start."',"; }
@@ -2859,9 +2859,9 @@ class FactureLigne
$sql.= ' '.$this->fk_export_compta.',';
$sql.= ' '.$rangtouse.',';
$sql.= " '".$this->info_bits."',";
- $sql.= " '".price2num($this->total_ht)."',";
- $sql.= " '".price2num($this->total_tva)."',";
- $sql.= " '".price2num($this->total_ttc)."'";
+ $sql.= " ".price2num($this->total_ht);
+ $sql.= " ".price2num($this->total_tva);
+ $sql.= " ".price2num($this->total_ttc);
$sql.= ')';
dolibarr_syslog("FactureLigne::insert sql=".$sql);
@@ -2943,23 +2943,23 @@ class FactureLigne
// Mise a jour ligne en base
$sql = "UPDATE ".MAIN_DB_PREFIX."facturedet SET";
$sql.= " description='".addslashes($this->desc)."'";
- $sql.= ",subprice='".price2num($this->subprice)."'";
- $sql.= ",price='".price2num($this->price)."'";
- $sql.= ",remise='".price2num($this->remise)."'";
- $sql.= ",remise_percent='".price2num($this->remise_percent)."'";
+ $sql.= ",subprice=".price2num($this->subprice)."";
+ $sql.= ",price=".price2num($this->price)."";
+ $sql.= ",remise=".price2num($this->remise)."";
+ $sql.= ",remise_percent=".price2num($this->remise_percent)."";
if ($this->fk_remise_except) $sql.= ",fk_remise_except=".$this->fk_remise_except;
else $sql.= ",fk_remise_except=null";
- $sql.= ",tva_taux='".price2num($this->tva_tx)."'";
- $sql.= ",qty='".price2num($this->qty)."'";
+ $sql.= ",tva_taux=".price2num($this->tva_tx)."";
+ $sql.= ",qty=".price2num($this->qty)."";
if ($this->date_start) { $sql.= ",date_start='".$this->date_start."'"; }
else { $sql.=',date_start=null'; }
if ($this->date_end) { $sql.= ",date_end='".$this->date_end."'"; }
else { $sql.=',date_end=null'; }
$sql.= ",rang='".$this->rang."'";
$sql.= ",info_bits='".$this->info_bits."'";
- $sql.= ",total_ht='".price2num($this->total_ht)."'";
- $sql.= ",total_tva='".price2num($this->total_tva)."'";
- $sql.= ",total_ttc='".price2num($this->total_ttc)."'";
+ $sql.= ",total_ht=".price2num($this->total_ht)."";
+ $sql.= ",total_tva=".price2num($this->total_tva)."";
+ $sql.= ",total_ttc=".price2num($this->total_ttc)."";
$sql.= " WHERE rowid = ".$this->rowid;
dolibarr_syslog("FactureLigne::update sql=$sql");
@@ -2990,9 +2990,9 @@ class FactureLigne
// Mise a jour ligne en base
$sql = "UPDATE ".MAIN_DB_PREFIX."facturedet SET";
- $sql.= " total_ht='".price2num($this->total_ht)."'";
- $sql.= ",total_tva='".price2num($this->total_tva)."'";
- $sql.= ",total_ttc='".price2num($this->total_ttc)."'";
+ $sql.= " total_ht=".price2num($this->total_ht)."";
+ $sql.= ",total_tva=".price2num($this->total_tva)."";
+ $sql.= ",total_ttc=".price2num($this->total_ttc)."";
$sql.= " WHERE rowid = ".$this->rowid;
diff --git a/htdocs/fourn/fournisseur.facture.class.php b/htdocs/fourn/fournisseur.facture.class.php
index 8ab408a2d66..2030ea13270 100644
--- a/htdocs/fourn/fournisseur.facture.class.php
+++ b/htdocs/fourn/fournisseur.facture.class.php
@@ -446,8 +446,8 @@ class FactureFournisseur extends Facture
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_fourn_det ';
$sql.= 'SET ';
$sql.= 'description =\''.addslashes($label).'\'';
- $sql.= ', pu_ht = ' .$puht;
- $sql.= ', qty =' .$qty;
+ $sql.= ', pu_ht = ' .price2num($puht);
+ $sql.= ', qty =' .price2num($qty);
$sql.= ', total_ht=' .price2num($totalht);
$sql.= ', tva=' .price2num($tva);
$sql.= ', tva_taux=' .price2num($tauxtva);
@@ -456,6 +456,7 @@ class FactureFournisseur extends Facture
else $sql.= ', fk_product=null';
$sql.= ' WHERE rowid = '.$id;
+ dolibarr_syslog("Fournisseur.facture::updateline sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
@@ -524,6 +525,7 @@ class FactureFournisseur extends Facture
$sql .= ',total_tva = '.price2num($total_tva);
$sql .= ',total_ttc = '.price2num($total_ttc);
$sql .= ' WHERE rowid = '.$facid.';';
+ dolibarr_syslog("Fournisseur.facture::update_price sql=".$sql);
$resql2 = $this->db->query($sql);
if ($resql2)
{
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index ef256aba274..325c648e723 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -454,7 +454,7 @@ MiscellanousDesc=Define here all other parameters related to security.
LimitsSetup=Limits/Precision setup
LimitsDesc=You can define here limits and precision used by Dolibarr
MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices
-MAIN_MAX_DECIMALS_TTC=Max decimals for prices with taxes
+MAIN_MAX_DECIMALS_TTC=Max decimals for total prices
MAIN_MAX_DECIMALS_SHOWN=Max decimals for prices shown on screen (Excedented decimals will be replaced by three dots ...)
##### Users setup #####
UserGroupSetup=Users and groups module setup
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index f86465a8df0..ff7a8d517d9 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -461,7 +461,7 @@ MiscellanousDesc=D
LimitsSetup=Configuration des limites et precisions
LimitsDesc=Vous pouvez définir ici les limites et précisions utilisées par Dolibarr
MAIN_MAX_DECIMALS_UNIT=Nombre de décimals maximum pour les prix unitaires
-MAIN_MAX_DECIMALS_TTC=Nombre de décimals maximum pour les prix totaux toute taxe comprise
+MAIN_MAX_DECIMALS_TTC=Nombre de décimals maximum pour les prix totaux
MAIN_MAX_DECIMALS_SHOWN=Nombre de décimals maximum pour les montant affichés à l'écran (Les décimals en trop sont remplacés par trois petits points: ...)
##### Users setup #####
UserGroupSetup=Configuration module utilisateurs et groupes
diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php
index 4dbf61d48b1..30c4b95c1a3 100644
--- a/htdocs/lib/functions.inc.php
+++ b/htdocs/lib/functions.inc.php
@@ -1959,7 +1959,7 @@ function price($amount, $html=0, $outlangs='', $trunc=1)
\remarks Fonction à appeler sur montants saisis avant un insert en base
\param amount Montant a formater
\param rounding 'MU'=Round to Max unit price (MAIN_MAX_DECIMALS_UNIT)
- 'MT'=Round to Max with Tax (MAIN_MAX_DECIMALS_TTC)
+ 'MT'=Round to Max with Tax (MAIN_MAX_DECIMALS_TOT)
'MS'=Round to Max Shown (MAIN_MAX_DECIMALS_SHOWN)
''=No rounding
\return string Montant au format numérique PHP et SQL (Exemple: '99.99999')
@@ -1976,7 +1976,7 @@ function price2num($amount,$rounding='')
if ($rounding)
{
if ($rounding == 'MU') $amount = round($amount,$conf->global->MAIN_MAX_DECIMALS_UNIT);
- elseif ($rounding == 'MT') $amount = round($amount,$conf->global->MAIN_MAX_DECIMALS_TTC);
+ elseif ($rounding == 'MT') $amount = round($amount,$conf->global->MAIN_MAX_DECIMALS_TOT);
elseif ($rounding == 'MS') $amount = round($amount,$conf->global->MAIN_MAX_DECIMALS_SHOWN);
else $amount='ErrorBadParameterProvidedToFunction';
$amount=ereg_replace(',','.',$amount);
diff --git a/mysql/migration/2.1.0-2.2.0.sql b/mysql/migration/2.1.0-2.2.0.sql
index 9ae523261d0..53dc8ad5b03 100644
--- a/mysql/migration/2.1.0-2.2.0.sql
+++ b/mysql/migration/2.1.0-2.2.0.sql
@@ -583,6 +583,22 @@ ALTER TABLE llx_product_fournisseur_price MODIFY price double(16,8);
ALTER TABLE llx_product_fournisseur_price MODIFY quantity double;
+ALTER TABLE llx_facture_fourn MODIFY amount double(16,8) DEFAULT 0 NOT NULL;
+ALTER TABLE llx_facture_fourn MODIFY remise double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn MODIFY tva double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn MODIFY total double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn MODIFY total_ht double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn MODIFY total_tva double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn MODIFY total_ttc double(16,8) DEFAULT 0;
+
+ALTER TABLE llx_facture_fourn_det MODIFY pu_ht double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn_det MODIFY qty smallint DEFAULT 1;
+ALTER TABLE llx_facture_fourn_det MODIFY total_ht double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn_det MODIFY tva_taux double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn_det MODIFY tva double(16,8) DEFAULT 0;
+ALTER TABLE llx_facture_fourn_det MODIFY total_ttc double(16,8) DEFAULT 0;
+
+
-- Changement de idp en rowid
-- V4 ALTER TABLE llx_propal DROP FOREIGN KEY llx_propal_ibfk1;
-- V4 ALTER TABLE llx_socpeople DROP FOREIGN KEY fk_socpeople_fk_soc;
diff --git a/mysql/tables/llx_facture_fourn.sql b/mysql/tables/llx_facture_fourn.sql
index 14366933429..bb416bba3aa 100644
--- a/mysql/tables/llx_facture_fourn.sql
+++ b/mysql/tables/llx_facture_fourn.sql
@@ -30,13 +30,13 @@ create table llx_facture_fourn
datef date, -- date de la facture
libelle varchar(255),
paye smallint DEFAULT 0 NOT NULL,
- amount real DEFAULT 0 NOT NULL,
- remise real DEFAULT 0,
- tva real DEFAULT 0,
- total real DEFAULT 0,
- total_ht real DEFAULT 0,
- total_tva real DEFAULT 0,
- total_ttc real DEFAULT 0,
+ amount double(16,8) DEFAULT 0 NOT NULL,
+ remise double(16,8) DEFAULT 0,
+ tva double(16,8) DEFAULT 0,
+ total double(16,8) DEFAULT 0,
+ total_ht double(16,8) DEFAULT 0,
+ total_tva double(16,8) DEFAULT 0,
+ total_ttc double(16,8) DEFAULT 0,
fk_statut smallint DEFAULT 0 NOT NULL,
diff --git a/mysql/tables/llx_facture_fourn_det.sql b/mysql/tables/llx_facture_fourn_det.sql
index a9445e11565..a2dfc04d5b0 100644
--- a/mysql/tables/llx_facture_fourn_det.sql
+++ b/mysql/tables/llx_facture_fourn_det.sql
@@ -25,11 +25,11 @@ create table llx_facture_fourn_det
fk_facture_fourn integer NOT NULL,
fk_product integer NULL,
description text,
- pu_ht real DEFAULT 0,
+ pu_ht double(16,8) DEFAULT 0,
qty smallint DEFAULT 1,
- total_ht real DEFAULT 0,
- tva_taux real DEFAULT 0,
- tva real DEFAULT 0,
- total_ttc real DEFAULT 0
+ total_ht double(16,8) DEFAULT 0,
+ tva_taux double(16,8) DEFAULT 0,
+ tva double(16,8) DEFAULT 0,
+ total_ttc double(16,8) DEFAULT 0
)type=innodb;