diff --git a/htdocs/commande/commande.class.php b/htdocs/commande/commande.class.php
index 846d7ccc016..6101b293e4d 100644
--- a/htdocs/commande/commande.class.php
+++ b/htdocs/commande/commande.class.php
@@ -621,7 +621,7 @@ class Commande extends CommonObject
* par l'appelant par la methode get_default_tva(societe_vendeuse,societe_acheteuse,taux_produit)
* et le desc doit deja avoir la bonne valeur (a l'appelant de gerer le multilangue)
*/
- function addline($commandeid, $desc, $pu, $qty, $txtva, $fk_product=0, $remise_percent=0, $fk_remise_except=0, $info_bits=0)
+ function addline($commandeid, $desc, $pu, $qty, $txtva, $fk_product=0, $remise_percent=0, $fk_remise_except=0, $info_bits=0, $price_base_type='HT')
{
dolibarr_syslog("Commande.class.php::addline this->id=$this->id, $commandeid, $desc, $pu, $qty, $txtva, $fk_product, $remise_percent");
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -641,7 +641,7 @@ class Commande extends CommonObject
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
- $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
@@ -1805,7 +1805,7 @@ class Commande extends CommonObject
* \param tva_tx Taux TVA
* \return int < 0 si erreur, > 0 si ok
*/
- function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva)
+ function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT')
{
dolibarr_syslog("Commande::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva");
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -1825,7 +1825,7 @@ class Commande extends CommonObject
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
- $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 7ec2964831d..9bb0fe9b84e 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -2222,7 +2222,7 @@ else
print '
';
print '' . "\n";
if ($conf->service->enabled)
diff --git a/htdocs/compta/facture/facture-rec.class.php b/htdocs/compta/facture/facture-rec.class.php
index 3656b2fde0b..2fda42cfd64 100644
--- a/htdocs/compta/facture/facture-rec.class.php
+++ b/htdocs/compta/facture/facture-rec.class.php
@@ -283,7 +283,7 @@ class FactureRec extends Facture
/**
* \brief Ajoute une ligne de facture
*/
- function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0)
+ function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0, $price_base_type='HT')
{
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -301,7 +301,7 @@ class FactureRec extends Facture
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
- $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php
index 5510590c8bf..3801007bf25 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -1308,12 +1308,14 @@ class Facture extends CommonObject
if (! $info_bits) $info_bits=0;
$pu = price2num($pu);
$txtva=price2num($txtva);
-
+ if ($price_base_type=='HT') $pu=$pu;
+ else $pu=$pu_ttc;
+
// Calcul du total TTC et de la TVA pour la ligne a partir de
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
- $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $pu_ttc);
+ $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
@@ -1382,15 +1384,16 @@ class Facture extends CommonObject
* \brief Mets à jour une ligne de facture
* \param rowid Id de la ligne de facture
* \param desc Description de la ligne
- * \param pu Prix unitaire
+ * \param pu Prix unitaire (HT ou TTC selon price_base_type)
* \param qty Quantité
* \param remise_percent Pourcentage de remise de la ligne
- * \param date_start Date de debut de validité du service
- * \param date_end Date de fin de validité du service
+ * \param date_start Date de debut de validité du service
+ * \param date_end Date de fin de validité du service
* \param tva_tx Taux TVA
+ * \param price_base_type HT ou TTC
* \return int < 0 si erreur, > 0 si ok
*/
- function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $date_start, $date_end, $txtva)
+ function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $date_start, $date_end, $txtva, $price_base_type='HT')
{
dolibarr_syslog("Facture::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva", LOG_DEBUG);
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -1410,10 +1413,13 @@ class Facture extends CommonObject
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
- $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva);
- $total_ht = $tabprice[0];
- $total_tva = $tabprice[1];
- $total_ttc = $tabprice[2];
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type);
+ $total_ht = $tabprice[0];
+ $total_tva = $tabprice[1];
+ $total_ttc = $tabprice[2];
+ $pu_ht = $tabprice[3];
+ $pu_tva = $tabprice[4];
+ $pu_ttc = $tabprice[5];
// Anciens indicateurs: $price, $remise (a ne plus utiliser)
$price = $pu;
diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php
index 2f290079837..4ced48b3433 100644
--- a/htdocs/fourn/facture/fiche.php
+++ b/htdocs/fourn/facture/fiche.php
@@ -106,13 +106,6 @@ if($_GET['action'] == 'deletepaiement')
}
}
-if ($_POST['action'] == 'modif_libelle')
-{
- $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_fourn set libelle = \''.addslashes($form_libelle).'\' WHERE rowid = '.$_GET['facid'];
- $result = $db->query( $sql);
-}
-
-
if ($_POST['action'] == 'update' && ! $_POST['cancel'])
{
$datefacture = $db->idate(mktime(12, 0 , 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']));
@@ -165,22 +158,23 @@ if ($_POST['action'] == 'add' && $user->rights->fournisseur->facture->creer)
for ($i = 1 ; $i < 9 ; $i++)
{
$label = $_POST['label'.$i];
- $amount = price2num($_POST['amount'.$i]);
+ $amountht = price2num($_POST['amount'.$i]);
$amountttc = price2num($_POST['amountttc'.$i]);
- $tauxtva = price2num($_POST['tauxtva'.$i]);
+ $tauxtva = price2num($_POST['tauxtva'.$i]);
$qty = $_POST['qty'.$i];
-
- if (strlen($label) > 0 && !empty($amount))
+ $fk_product = $_POST['fk_product'.$i];
+ if ($label)
{
+ if ($amountht)
+ {
+ $price_base='HT'; $amount=$amountht;
+ }
+ else
+ {
+ $price_base='TTC'; $amount=$amountttc;
+ }
$atleastoneline=1;
- $ret=$facfou->addline($label, $amount, $tauxtva, $qty, 1);
- if ($ret < 0) $nberror++;
- }
- else if (strlen($label) > 0 && empty($amount))
- {
- $ht = $amountttc / (1 + ($tauxtva / 100));
- $atleastoneline=1;
- $ret=$facfou->addline($label, $ht, $tauxtva, $qty, 1);
+ $ret=$facfou->addline($label, $amount, $tauxtva, $qty, $fk_product, $remise_percent, '', '', '', 0, $price_base);
if ($ret < 0) $nberror++;
}
}
@@ -379,8 +373,8 @@ if ($_GET['action'] == 'create' or $_GET['action'] == 'copy')
print '
';
print '
'.$langs->trans('Label').'
';
print '
'.$langs->trans('PriceUHT').'
';
+ print '
'.$langs->trans('VAT').'
';
print '
'.$langs->trans('Qty').'
';
- print '
'.$langs->trans('VATRate').'
';
print '
'.$langs->trans('PriceUTTC').'
';
print '
';
@@ -401,10 +395,10 @@ if ($_GET['action'] == 'create' or $_GET['action'] == 'copy')
print '