';
diff --git a/htdocs/compta/facture/facture-rec.class.php b/htdocs/compta/facture/facture-rec.class.php
index d5475e8a383..f52e52d66a2 100644
--- a/htdocs/compta/facture/facture-rec.class.php
+++ b/htdocs/compta/facture/facture-rec.class.php
@@ -358,7 +358,7 @@ class FactureRec extends Facture
/**
* \brief Ajoute une ligne de facture
*/
- function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0, $price_base_type='HT')
+ function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0, $price_base_type='HT', $info_bits=0)
{
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -376,7 +376,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, 0, $price_base_type);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
diff --git a/htdocs/contrat/contrat.class.php b/htdocs/contrat/contrat.class.php
index 1421e193c93..fccab983c9c 100644
--- a/htdocs/contrat/contrat.class.php
+++ b/htdocs/contrat/contrat.class.php
@@ -670,7 +670,7 @@ class Contrat extends CommonObject
$pu = price2num($pu,'MU');
$txtva = price2num($txtva,'MU');
- dolibarr_syslog("Contrat::addline $desc, $pu, $qty, $txtva, $fk_product, $remise_percent, $date_start, $date_end, $price_base_type");
+ dolibarr_syslog("Contrat::addline $desc, $pu, $qty, $txtva, $fk_product, $remise_percent, $date_start, $date_end, $price_base_type, $info_bits");
if ($this->statut == 0)
{
@@ -693,7 +693,7 @@ class Contrat 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, 0, $price_base_type);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
$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 7734f4c92d1..12a8a1a11d6 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -46,57 +46,58 @@ class Facture extends CommonObject
var $element='facture';
var $table_element='facture';
- var $table;
- var $tabledetail;
- var $id;
- //! Id client
- var $socid;
- //! Objet societe client (à charger par fetch_client)
- var $client;
- var $number;
- var $author;
- var $date;
- var $ref;
- var $ref_client;
- //! 0=Facture normale, 1=Facture remplacement, 2=Facture avoir, 3=Facture récurrente
- var $type;
- var $amount;
- var $remise;
- var $tva;
- var $total;
- var $note;
- var $note_public;
- //! 0=brouillon,
- //! 1=validée,
- //! 2=classée payée partiellement (close_code='discount_vat','badcustomer') ou complètement (close_code=null),
- //! 3=classée abandonnée et aucun paiement n'a eu lieu (close_code='badcustomer','abandon' ou 'replaced')
- var $statut;
- //! 1 si facture payée COMPLETEMENT, 0 sinon (ce champ ne devrait plus servir car insuffisant)
- var $paye;
- //! id facture source si facture de remplacement ou avoir
- var $fk_facture_source;
- //! Fermeture apres paiement partiel: discount_vat, bad_customer, abandon
- //! Fermeture alors que aucun paiement: replaced (si remplacé), abandon
- var $close_code;
- //! Commentaire si mis a paye sans paiement complet
- var $close_note;
- var $propalid;
- var $projetid;
- var $date_lim_reglement;
- var $cond_reglement_id;
- var $cond_reglement_code;
- var $mode_reglement_id;
- var $mode_reglement_code;
- var $modelpdf;
- var $products=array();
- var $lignes=array();
- //! Pour board
- var $nbtodo;
- var $nbtodolate;
- var $specimen;
- //! Numero d'erreur de 512 à 1023
- var $errno = 0;
- /**
+ var $table;
+ var $tabledetail;
+ var $id;
+ //! Id client
+ var $socid;
+ //! Objet societe client (à charger par fetch_client)
+ var $client;
+ var $number;
+ var $author;
+ var $date;
+ var $ref;
+ var $ref_client;
+ //! 0=Facture normale, 1=Facture remplacement, 2=Facture avoir, 3=Facture récurrente
+ var $type;
+ var $amount;
+ var $remise;
+ var $tva;
+ var $total;
+ var $note;
+ var $note_public;
+ //! 0=brouillon,
+ //! 1=validée,
+ //! 2=classée payée partiellement (close_code='discount_vat','badcustomer') ou complètement (close_code=null),
+ //! 3=classée abandonnée et aucun paiement n'a eu lieu (close_code='badcustomer','abandon' ou 'replaced')
+ var $statut;
+ //! 1 si facture payée COMPLETEMENT, 0 sinon (ce champ ne devrait plus servir car insuffisant)
+ var $paye;
+ //! id facture source si facture de remplacement ou avoir
+ var $fk_facture_source;
+ //! Fermeture apres paiement partiel: discount_vat, bad_customer, abandon
+ //! Fermeture alors que aucun paiement: replaced (si remplacé), abandon
+ var $close_code;
+ //! Commentaire si mis a paye sans paiement complet
+ var $close_note;
+ var $propalid;
+ var $projetid;
+ var $date_lim_reglement;
+ var $cond_reglement_id;
+ var $cond_reglement_code;
+ var $mode_reglement_id;
+ var $mode_reglement_code;
+ var $modelpdf;
+ var $products=array();
+ var $lignes=array();
+ //! Pour board
+ var $nbtodo;
+ var $nbtodolate;
+ var $specimen;
+ //! Numero d'erreur de 512 à 1023
+ var $errno = 0;
+
+ /**
\brief Constructeur de la classe
\param DB handler accès base de données
\param socid id societe ('' par defaut)
@@ -1337,7 +1338,7 @@ class Facture 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($facid, $desc, $pu_ht, $qty, $txtva, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits='', $fk_remise_except='', $price_base_type='HT', $pu_ttc=0)
+ function addline($facid, $desc, $pu_ht, $qty, $txtva, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits=0, $fk_remise_except='', $price_base_type='HT', $pu_ttc=0)
{
dolibarr_syslog("Facture::Addline facid=$facid,desc=$desc,pu_ht=$pu_ht,qty=$qty,txtva=$txtva,fk_product=$fk_product,remise_percent=$remise_percent,date_start=$date_start,date_end=$date_end,ventil=$ventil,info_bits=$info_bits,fk_remise_except=$fk_remise_except,price_base_type=$price_base_type,pu_ttc=$pu_ttc", LOG_DEBUG);
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -1369,7 +1370,7 @@ 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, 0, $price_base_type);
+ $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
@@ -1443,97 +1444,100 @@ 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 (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 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, $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');
+ /**
+ * \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 (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 tva_tx Taux TVA
+ * \param price_base_type HT ou TTC
+ * \param info_bits Miscellanous informations
+ * \return int < 0 si erreur, > 0 si ok
+ */
+ function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $date_start, $date_end, $txtva, $price_base_type='HT', $info_bits=0)
+ {
+ include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
- if ($this->brouillon)
- {
- $this->db->begin();
+ dolibarr_syslog("Facture::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva, $price_base_type, $info_bits", LOG_DEBUG);
- // Nettoyage paramètres
- $remise_percent=price2num($remise_percent);
- $qty=price2num($qty);
- if (! $qty) $qty=1;
- $pu = price2num($pu);
- $txtva=price2num($txtva);
+ if ($this->brouillon)
+ {
+ $this->db->begin();
- // 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);
- $total_ht = $tabprice[0];
- $total_tva = $tabprice[1];
- $total_ttc = $tabprice[2];
- $pu_ht = $tabprice[3];
- $pu_tva = $tabprice[4];
- $pu_ttc = $tabprice[5];
+ // Nettoyage paramètres
+ $remise_percent=price2num($remise_percent);
+ $qty=price2num($qty);
+ if (! $qty) $qty=1;
+ $pu = price2num($pu);
+ $txtva=price2num($txtva);
- // Anciens indicateurs: $price, $remise (a ne plus utiliser)
- $price = $pu;
- $remise = 0;
- if ($remise_percent > 0)
- {
- $remise = round(($pu * $remise_percent / 100),2);
- $price = ($pu - $remise);
- }
- $price = price2num($price);
+ // 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, $info_bits);
+ $total_ht = $tabprice[0];
+ $total_tva = $tabprice[1];
+ $total_ttc = $tabprice[2];
+ $pu_ht = $tabprice[3];
+ $pu_tva = $tabprice[4];
+ $pu_ttc = $tabprice[5];
- // Mise a jour ligne en base
- $ligne=new FactureLigne($this->db);
- $ligne->rowid=$rowid;
- $ligne->fetch($rowid);
+ // Anciens indicateurs: $price, $remise (a ne plus utiliser)
+ $price = $pu;
+ $remise = 0;
+ if ($remise_percent > 0)
+ {
+ $remise = round(($pu * $remise_percent / 100),2);
+ $price = ($pu - $remise);
+ }
+ $price = price2num($price);
- $ligne->desc=$desc;
- $ligne->qty=$qty;
- $ligne->tva_tx=$txtva;
- $ligne->remise_percent=$remise_percent;
- $ligne->subprice=$pu;
- $ligne->date_start=$date_start;
- $ligne->date_end=$date_end;
- $ligne->total_ht=$total_ht;
- $ligne->total_tva=$total_tva;
- $ligne->total_ttc=$total_ttc;
+ // Mise a jour ligne en base
+ $ligne=new FactureLigne($this->db);
+ $ligne->rowid=$rowid;
+ $ligne->fetch($rowid);
- // A ne plus utiliser
- $ligne->price=$price;
- $ligne->remise=$remise;
+ $ligne->desc=$desc;
+ $ligne->qty=$qty;
+ $ligne->tva_tx=$txtva;
+ $ligne->remise_percent=$remise_percent;
+ $ligne->subprice=$pu;
+ $ligne->date_start=$date_start;
+ $ligne->date_end=$date_end;
+ $ligne->total_ht=$total_ht;
+ $ligne->total_tva=$total_tva;
+ $ligne->total_ttc=$total_ttc;
+ $ligne->info_bits=$info_bits;
+
+ // A ne plus utiliser
+ $ligne->price=$price;
+ $ligne->remise=$remise;
- $result=$ligne->update();
- if ($result > 0)
- {
- // Mise a jour info denormalisees au niveau facture
- $this->update_price($this->id);
- $this->db->commit();
- return $result;
- }
- else
- {
- $this->db->rollback();
- return -1;
- }
- }
- else
- {
- $this->error="Facture::UpdateLine Invoice statut makes operation forbidden";
- return -2;
- }
- }
+ $result=$ligne->update();
+ if ($result > 0)
+ {
+ // Mise a jour info denormalisees au niveau facture
+ $this->update_price($this->id);
+ $this->db->commit();
+ return $result;
+ }
+ else
+ {
+ $this->db->rollback();
+ return -1;
+ }
+ }
+ else
+ {
+ $this->error="Facture::UpdateLine Invoice statut makes operation forbidden";
+ return -2;
+ }
+ }
/**
* \brief Supprime une ligne facture de la base
@@ -3108,7 +3112,7 @@ class FactureLigne
$sql.= ",total_ttc=".price2num($this->total_ttc)."";
$sql.= " WHERE rowid = ".$this->rowid;
- dolibarr_syslog("FactureLigne::update sql=$sql");
+ dolibarr_syslog("FactureLigne::update sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
@@ -3119,7 +3123,7 @@ class FactureLigne
else
{
$this->error=$this->db->error();
- dolibarr_syslog("FactureLigne::update Error ".$this->error);
+ dolibarr_syslog("FactureLigne::update Error ".$this->error, LOG_ERR);
$this->db->rollback();
return -2;
}
diff --git a/htdocs/fourn/fournisseur.commande.class.php b/htdocs/fourn/fournisseur.commande.class.php
index 8a8f61a4e67..969873dd93b 100644
--- a/htdocs/fourn/fournisseur.commande.class.php
+++ b/htdocs/fourn/fournisseur.commande.class.php
@@ -1244,9 +1244,10 @@ class CommandeFournisseur extends Commande
* \param qty Quantité
* \param remise_percent Pourcentage de remise de la ligne
* \param tva_tx Taux TVA
+ * \param info_bits Miscellanous informations
* \return int < 0 si erreur, > 0 si ok
*/
- function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT')
+ function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT', $info_bits=0)
{
dolibarr_syslog("CommandeFournisseur::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva");
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -1266,7 +1267,7 @@ class CommandeFournisseur extends Commande
// 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, $price_base_type);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $price_base_type, $info_bits);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
diff --git a/htdocs/fourn/fournisseur.facture.class.php b/htdocs/fourn/fournisseur.facture.class.php
index 177185ec432..c412dfff8c8 100644
--- a/htdocs/fourn/fournisseur.facture.class.php
+++ b/htdocs/fourn/fournisseur.facture.class.php
@@ -458,9 +458,10 @@ class FactureFournisseur extends Facture
* \param qty Quantité
* \param idproduct Id produit
* \param price_base_type HT ou TTC
+ * \param info_bits Miscellanous informations of line
* \return int <0 si ko, >0 si ok
*/
- function updateline($id, $label, $pu, $tauxtva, $qty=1, $idproduct=0, $price_base_type='HT')
+ function updateline($id, $label, $pu, $tauxtva, $qty=1, $idproduct=0, $price_base_type='HT', $info_bits=0)
{
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
@@ -474,7 +475,7 @@ class FactureFournisseur 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, 0, $tauxtva, 0, $price_base_type);
+ $tabprice = calcul_price_total($qty, $pu, 0, $tauxtva, 0, $price_base_type, $info_bits);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php
index cc0cb509e44..ed23314eac2 100644
--- a/htdocs/html.form.class.php
+++ b/htdocs/html.form.class.php
@@ -2176,22 +2176,29 @@ class Form
/**
* \brief Selection du taux de tva à appliquer
* \param name Nom champ html
- * \param defaulttx Forçage du taux tva pré-sélectionné. Mettre '' pour aucun forcage.
+ * \param selectedrate Forçage du taux tva pré-sélectionné. Mettre '' pour aucun forcage.
* \param societe_vendeuse Objet société vendeuse
* \param societe_acheteuse Objet société acheteuse
* \param taux_produit Taux par defaut du produit vendu
+ * \param info_bits Miscellanous information on line
* \remarks Si vendeur non assujeti à TVA, TVA par défaut=0. Fin de règle.
* Si le (pays vendeur = pays acheteur) alors la TVA par défaut=TVA du produit vendu. Fin de règle.
* Si (vendeur et acheteur dans Communauté européenne) et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par défaut=0 (La TVA doit être payé par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de règle.
* Si (vendeur et acheteur dans Communauté européenne) et bien vendu autre que transport neuf alors la TVA par défaut=TVA du produit vendu. Fin de règle.
* Sinon la TVA proposée par défaut=0. Fin de règle.
*/
- function select_tva($name='tauxtva', $defaulttx='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='')
+ function select_tva($name='tauxtva', $selectedrate='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='', $info_bits=0)
{
global $langs,$conf,$mysoc;
$txtva=array();
$libtva=array();
+ $nprtva=array();
+
+ // Define defaultnpr and defaultttx
+ $defaultnpr=($info_bits & 0x01);
+ $defaultnpr=(eregi('\*',$selectedrate) ? 1 : $defaultnpr);
+ $defaulttx=eregi_replace('\*','',$selectedrate);
//print $societe_vendeuse."-".$societe_acheteuse;
if (is_object($societe_vendeuse) && ! $societe_vendeuse->pays_code)
@@ -2232,8 +2239,9 @@ class Form
for ($i = 0; $i < $num; $i++)
{
$obj = $this->db->fetch_object($resql);
- $txtva[$i] = $obj->taux;
- $libtva[$i] = $obj->taux.'%'.($obj->recuperableonly ? ' *':'');
+ $txtva[$i] = $obj->taux;
+ $libtva[$i] = $obj->taux.'%';
+ $nprtva[$i] = $obj->recuperableonly;
}
}
else
@@ -2250,6 +2258,7 @@ class Form
if ($defaulttx < 0 || strlen($defaulttx) == 0)
{
$defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$taux_produit);
+ $defaultnpr=get_default_npr($societe_vendeuse,$societe_acheteuse,$taux_produit);
}
// Si taux par defaut n'a pu etre déterminé, on prend dernier de la liste.
// Comme ils sont triés par ordre croissant, dernier = plus élevé = taux courant
@@ -2267,16 +2276,21 @@ class Form
for ($i = 0 ; $i < $nbdetaux ; $i++)
{
- print '';
+ print '>'.vatrate($libtva[$i]);
+ print $nprtva[$i] ? ' *': '';
+ print '';
$this->tva_taux_value[$i] = $txtva[$i];
$this->tva_taux_libelle[$i] = $libtva[$i];
-
+ $this->tva_taux_npr[$i] = $nprtva[$i];
}
print '';
}
diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index 9c57ace04aa..3d75564b8a0 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -988,7 +988,7 @@ function migrate_price_facture($db,$langs,$conf)
$facligne= new FactureLigne($db);
$facligne->fetch($rowid);
- $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
+ $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
@@ -1094,7 +1094,7 @@ function migrate_price_propal($db,$langs,$conf)
$propalligne= new PropaleLigne($db);
$propalligne->fetch($rowid);
- $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
+ $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
@@ -1199,7 +1199,7 @@ function migrate_price_contrat($db,$langs,$conf)
//$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis
$contratligne->rowid=$rowid;
- $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
+ $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
@@ -1302,7 +1302,7 @@ function migrate_price_commande($db,$langs,$conf)
$commandeligne= new CommandeLigne($db);
$commandeligne->fetch($rowid);
- $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT');
+ $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,$remise_percent_global,'HT',$info_bits);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php
index 347d4d45cd7..313bc383bac 100644
--- a/htdocs/lib/functions.inc.php
+++ b/htdocs/lib/functions.inc.php
@@ -1893,6 +1893,26 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit)
}
+/**
+ \brief Fonction qui renvoie si tva doit etre tva percue récupérable
+ \remarks Si vendeur non assujeti a TVA, TVA par défaut=0. Fin de régle.
+ Si le (pays vendeur = pays acheteur) alors TVA par défaut=TVA du produit vendu. Fin de régle.
+ Si (vendeur et acheteur dans Communauté européenne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par défaut=0 (La TVA doit étre payé par acheteur au centre d'impots de son pays et non au vendeur). Fin de régle.
+ Si (vendeur et acheteur dans Communauté européenne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par défaut=TVA du produit vendu. Fin de régle.
+ Si (vendeur et acheteur dans Communauté européenne) et (acheteur = entreprise avec num TVA) intra alors TVA par défaut=0. Fin de régle.
+ Sinon TVA proposée par défaut=0. Fin de régle.
+ \param societe_vendeuse Objet société vendeuse
+ \param societe_acheteuse Objet société acheteuse
+ \param taux_produit Taux par defaut du produit vendu
+ \return float 0 or 1
+ */
+function get_default_npr($societe_vendeuse, $societe_acheteuse, $taux_produit)
+{
+
+ return 0;
+}
+
+
/**
\brief Renvoie oui ou non dans la langue choisie
\param yesno Variable pour test si oui ou non
diff --git a/htdocs/lib/price.lib.php b/htdocs/lib/price.lib.php
index 4ae0c675747..28d7b3e1a98 100644
--- a/htdocs/lib/price.lib.php
+++ b/htdocs/lib/price.lib.php
@@ -35,15 +35,16 @@
\param txtva Taux tva
\param remise_percent_global 0
\param price_base_type HT=on calcule sur le HT, TTC=on calcule sur le TTC
+ \param info_bits Miscellanous informations on line
\return result[0,1,2,3,4,5] (total_ht, total_tva, total_ttc, pu_ht, pu_tva, pu_ttc)
*/
-function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_percent_global=0, $price_base_type='HT')
+function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_percent_global=0, $price_base_type='HT', $info_bits=0)
{
global $conf;
$result=array();
- //dolibarr_syslog("price.lib::calcul_price_total $qty, $pu, $remise_percent_ligne, $txtva, $price_base_type");
+ //dolibarr_syslog("price.lib::calcul_price_total $qty, $pu, $remise_percent_ligne, $txtva, $price_base_type $info_bits");
if ($price_base_type == 'HT')
{
// On travaille par defaut en partant du prix HT
diff --git a/htdocs/propal.class.php b/htdocs/propal.class.php
index e0747c0d874..d1dfa0190ef 100644
--- a/htdocs/propal.class.php
+++ b/htdocs/propal.class.php
@@ -296,7 +296,7 @@ class Propal 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, 0, $price_base_type);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
@@ -375,11 +375,11 @@ class Propal extends CommonObject
* \param price_base_type HT ou TTC
* \return int 0 en cas de succ�s
*/
- function updateline($rowid, $pu, $qty, $remise_percent=0, $txtva, $desc='', $price_base_type='HT')
+ function updateline($rowid, $pu, $qty, $remise_percent=0, $txtva, $desc='', $price_base_type='HT', $info_bits=0)
{
global $conf;
- dolibarr_syslog("Propal::UpdateLine $rowid, $pu, $qty, $remise_percent, $txtva, $desc, $price_base_type");
+ dolibarr_syslog("Propal::UpdateLine $rowid, $pu, $qty, $remise_percent, $txtva, $desc, $price_base_type, $info_bits");
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
if ($this->statut == 0)
@@ -405,7 +405,7 @@ class Propal 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, 0, $price_base_type);
+ $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, $price_base_type, $info_bits);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];