diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 5b383ac5fd9..20597666966 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -566,8 +566,8 @@ if ($_POST['action'] == "addligne" && $user->rights->propale->creer)
$desc=$_POST['dp_desc'];
}
- $info_bit=0;
- if ($tva_npr) $info_bit |= 0x01;
+ $info_bits=0;
+ if ($tva_npr) $info_bits |= 0x01;
// Insert line
$result=$propal->addline(
@@ -580,7 +580,7 @@ if ($_POST['action'] == "addligne" && $user->rights->propale->creer)
$_POST['remise_percent'],
$price_base_type,
$pu_ttc,
- $info_bit
+ $info_bits
);
if ($result > 0)
@@ -608,13 +608,22 @@ if ($_POST['action'] == 'updateligne' && $user->rights->propale->creer && $_POST
$propal = new Propal($db);
if (! $propal->fetch($_POST['propalid']) > 0) dolibarr_print_error($db);
- $result = $propal->updateline($_POST['lineid'],
+ // Define info_bits
+ $info_bits=0;
+ if (eregi('\*',$_POST['tva_tx'])) $info_bits |= 0x01;
+
+ // Define vat_rate
+ $vat_rate=$_POST['tva_tx'];
+ $vat_rate=eregi_replace('\*','',$vat_rate);
+
+ $result = $propal->updateline($_POST['lineid'],
$_POST['subprice'],
$_POST['qty'],
$_POST['remise_percent'],
- $_POST['tva_tx'],
+ $vat_rate,
$_POST['desc'],
- 'HT');
+ 'HT',
+ $info_bits);
if ($_REQUEST['lang_id'])
{
diff --git a/htdocs/commande/commande.class.php b/htdocs/commande/commande.class.php
index 0b8a83e244c..277456c369a 100644
--- a/htdocs/commande/commande.class.php
+++ b/htdocs/commande/commande.class.php
@@ -674,7 +674,7 @@ class Commande extends CommonObject
$price = $pu - $remise;
}
- // Insertion ligne
+ // Insert line
$ligne=new CommandeLigne($this->db);
$ligne->fk_commande=$commandeid;
@@ -1564,19 +1564,20 @@ class Commande extends CommonObject
/**
- * \brief Mets � jour une ligne de commande
- * \param rowid Id de la ligne de facture
- * \param desc Description de la ligne
- * \param pu Prix unitaire
- * \param qty Quantit�
- * \param remise_percent Pourcentage de remise de la ligne
- * \param tva_tx Taux TVA
- * \param info_bits Miscellanous informations on line
- * \return int < 0 si erreur, > 0 si ok
+ * \brief Mets a jour une ligne de commande
+ * \param rowid Id de la ligne de facture
+ * \param desc Description de la ligne
+ * \param pu Prix unitaire
+ * \param qty Quantity
+ * \param remise_percent Pourcentage de remise de la ligne
+ * \param tva_tx Taux TVA
+ * \param price_base_type HT or TTC
+ * \param info_bits Miscellanous informations on line
+ * \return int < 0 si erreur, > 0 si ok
*/
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0, $txtva, $price_base_type='HT', $info_bits=0)
{
- dolibarr_syslog("Commande::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva");
+ dolibarr_syslog("Commande::UpdateLine $rowid, $desc, $pu, $qty, $remise_percent, $txtva, $price_base_type, $info_bits");
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
if ($this->brouillon)
@@ -1628,13 +1629,13 @@ class Commande extends CommonObject
//else { $sql.=',date_start=null'; }
//if ($date_end) { $sql.= ",date_end='$date_end'"; }
//else { $sql.=',date_end=null'; }
- //$sql.= " info_bits=".$info_bits.",";
+ $sql.= ",info_bits='".$info_bits."'";
$sql.= ",total_ht='".price2num($total_ht)."'";
$sql.= ",total_tva='".price2num($total_tva)."'";
$sql.= ",total_ttc='".price2num($total_ttc)."'";
$sql.= " WHERE rowid = ".$rowid;
- $result = $this->db->query( $sql);
+ $result = $this->db->query($sql);
if ($result > 0)
{
// Mise a jour info denormalisees au niveau facture
diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php
index 3af370fb4e1..38d477ad6dd 100644
--- a/htdocs/commande/fiche.php
+++ b/htdocs/commande/fiche.php
@@ -353,10 +353,15 @@ if ($_POST['action'] == 'addligne' && $user->rights->commande->creer)
else
{
$pu_ht=$_POST['pu'];
- $tva_tx=$_POST['tva_tx'];
+ $tva_tx=eregi_replace('\*','',$_POST['tva_tx']);
+ $tva_npr=eregi('\*',$_POST['tva_tx'])?1:0;
$desc=$_POST['dp_desc'];
}
+ $info_bits=0;
+ if ($tva_npr) $info_bits |= 0x01;
+
+ // Insert line
$result = $commande->addline(
$_POST['id'],
$desc,
@@ -365,7 +370,7 @@ if ($_POST['action'] == 'addligne' && $user->rights->commande->creer)
$tva_tx,
$_POST['idprod'],
$_POST['remise_percent'],
- '',
+ $info_bits,
'',
$price_base_type,
$pu_ttc
@@ -395,12 +400,22 @@ if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POS
$commande = new Commande($db,'',$_POST['id']);
if (! $commande->fetch($_POST['id']) > 0) dolibarr_print_error($db);
- $result = $commande->updateline($_POST['elrowid'],
+ // Define info_bits
+ $info_bits=0;
+ if (eregi('\*',$_POST['tva_tx'])) $info_bits |= 0x01;
+
+ // Define vat_rate
+ $vat_rate=$_POST['tva_tx'];
+ $vat_rate=eregi_replace('\*','',$vat_rate);
+
+ $result = $commande->updateline($_POST['elrowid'],
$_POST['eldesc'],
$_POST['pu'],
$_POST['qty'],
$_POST['elremise_percent'],
- $_POST['tva_tx']
+ $vat_rate,
+ 'HT',
+ $info_bits
);
if ($result >= 0)
@@ -1391,7 +1406,7 @@ else
print '';
}
- print '
'.vatrate($objp->tva_tx).'% | ';
+ print ''.vatrate($objp->tva_tx,'%',$objp->info_bits).' | ';
print ''.price($objp->subprice).' | ';
print '';
if (($objp->info_bits & 2) != 2)
diff --git a/htdocs/commonobject.class.php b/htdocs/commonobject.class.php
index b62f0506e4d..6ab078ac61b 100644
--- a/htdocs/commonobject.class.php
+++ b/htdocs/commonobject.class.php
@@ -869,13 +869,16 @@ class CommonObject
if ($this->element == 'facture') $fieldht='total';
$fieldtva='tva';
if ($this->element == 'facture_fourn') $fieldtva='total_tva';
-
+ $fieldttc='total_ttc';
+ if ($this->element == 'propal') $fieldttc='total';
+
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET';
$sql .= " ".$fieldht."='".price2num($this->total_ht)."',";
$sql .= " ".$fieldtva."='".price2num($this->total_tva)."',";
- $sql .= " total_ttc='".price2num($this->total_ttc)."'";
+ $sql .= " ".$fieldttc."='".price2num($this->total_ttc)."'";
$sql .= ' WHERE rowid = '.$this->id;
+ //print "xx".$sql;
dolibarr_syslog("CommonObject::update_price sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 3a77fedcffc..d68d846ce33 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -825,8 +825,8 @@ if (($_POST['action'] == 'addligne' || $_POST['action'] == 'addligne_predef') &&
$desc=$_POST['dp_desc'];
}
- $info_bit=0;
- if ($tva_npr) $info_bit |= 0x01;
+ $info_bits=0;
+ if ($tva_npr) $info_bits |= 0x01;
// Insert line
$result = $fac->addline(
@@ -840,7 +840,7 @@ if (($_POST['action'] == 'addligne' || $_POST['action'] == 'addligne_predef') &&
$date_start,
$date_end,
0,
- $info_bit,
+ $info_bits,
'',
$price_base_type,
$pu_ttc
diff --git a/htdocs/contrat/contrat.class.php b/htdocs/contrat/contrat.class.php
index ae0a3f0ffec..8e5e7ca81ff 100644
--- a/htdocs/contrat/contrat.class.php
+++ b/htdocs/contrat/contrat.class.php
@@ -39,7 +39,9 @@ class Contrat extends CommonObject
var $error;
var $element='contrat';
var $table_element='contrat';
-
+ var $table_element_line='contratdet';
+ var $fk_element='fk_contrat';
+
var $id;
var $ref;
var $socid;
@@ -69,7 +71,7 @@ class Contrat extends CommonObject
/**
* \brief Constructeur de la classe
- * \param DB handler accès base de données
+ * \param DB handler acc�s base de donn�es
*/
function Contrat($DB)
{
@@ -81,7 +83,7 @@ class Contrat extends CommonObject
$this->user_service = new User($DB);
$this->user_cloture = new User($DB);
- // Statut 0=ouvert, 1=actif, 2=cloturé
+ // Statut 0=ouvert, 1=actif, 2=clotur�
$this->statuts[0]=$langs->trans("Draft");
$this->statuts[1]=$langs->trans("Validated");
$this->statuts[2]=$langs->trans("Closed");
@@ -90,9 +92,9 @@ class Contrat extends CommonObject
/**
* \brief Active une ligne detail d'un contrat
* \param user Objet User qui avtice le contrat
- * \param line_id Id de la ligne de detail à activer
+ * \param line_id Id de la ligne de detail � activer
* \param date Date d'ouverture
- * \param date_end Date fin prévue
+ * \param date_end Date fin pr�vue
* \return int < 0 si erreur, > 0 si ok
*/
function active_line($user, $line_id, $date, $date_end='')
@@ -135,7 +137,7 @@ class Contrat extends CommonObject
/**
* \brief Active une ligne detail d'un contrat
* \param user Objet User qui avtice le contrat
- * \param line_id Id de la ligne de detail à activer
+ * \param line_id Id de la ligne de detail � activer
* \param date_end Date fin
* \return int <0 si erreur, >0 si ok
*/
@@ -174,7 +176,7 @@ class Contrat extends CommonObject
* \brief Cloture un contrat
* \param user Objet User qui cloture
* \param langs Environnement langue de l'utilisateur
- * \param conf Environnement de configuration lors de l'opération
+ * \param conf Environnement de configuration lors de l'op�ration
*
*/
function cloture($user,$langs='',$conf='')
@@ -208,7 +210,7 @@ class Contrat extends CommonObject
* \brief Valide un contrat
* \param user Objet User qui valide
* \param langs Environnement langue de l'utilisateur
- * \param conf Environnement de configuration lors de l'opération
+ * \param conf Environnement de configuration lors de l'op�ration
*/
function validate($user,$langs,$conf)
{
@@ -240,7 +242,7 @@ class Contrat extends CommonObject
* \brief Annule un contrat
* \param user Objet User qui annule
* \param langs Environnement langue de l'utilisateur
- * \param conf Environnement de configuration lors de l'opération
+ * \param conf Environnement de configuration lors de l'op�ration
*/
function annule($user,$langs='',$conf='')
{
@@ -270,9 +272,9 @@ class Contrat extends CommonObject
}
/**
- * \brief Chargement depuis la base des données du contrat
- * \param id Id du contrat à charger
- * \return int <0 si ko, id du contrat chargé si ok
+ * \brief Chargement depuis la base des donn�es du contrat
+ * \param id Id du contrat � charger
+ * \return int <0 si ko, id du contrat charg� si ok
*/
function fetch($id)
{
@@ -315,7 +317,7 @@ class Contrat extends CommonObject
$this->fk_projet = $result["fk_projet"];
$this->socid = $result["fk_soc"];
- $this->societe->fetch($result["fk_soc"]); // TODO A virer car la societe doit etre chargé par appel de fetch_client()
+ $this->societe->fetch($result["fk_soc"]); // TODO A virer car la societe doit etre charg� par appel de fetch_client()
$this->db->free($resql);
@@ -344,7 +346,7 @@ class Contrat extends CommonObject
{
$this->lignes = array();
- // Selectionne les lignes contrats liées à un produit
+ // Selectionne les lignes contrats li�es � un produit
$sql = "SELECT p.label, p.description as product_desc, p.ref,";
$sql.= " d.rowid, d.statut, d.description, d.price_ht, d.tva_tx, d.qty, d.remise_percent, d.subprice,";
$sql.= " d.info_bits, d.fk_product,";
@@ -395,17 +397,17 @@ class Contrat extends CommonObject
}
else
{
- dolibarr_syslog("Contrat::Fetch Erreur lecture des lignes de contrats liées aux produits");
+ dolibarr_syslog("Contrat::Fetch Erreur lecture des lignes de contrats li�es aux produits");
return -3;
}
- // Selectionne les lignes contrat liées à aucun produit
+ // Selectionne les lignes contrat li�es � aucun produit
$sql = "SELECT d.rowid, d.statut, d.qty, d.description, d.price_ht, d.subprice, d.tva_tx, d.rowid, d.remise_percent,";
$sql.= " d.date_ouverture_prevue, d.date_ouverture,";
$sql.= " d.date_fin_validite, d.date_cloture";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as d";
$sql.= " WHERE d.fk_contrat = ".$this->id;
- $sql.= " AND (d.fk_product IS NULL OR d.fk_product = 0)"; // fk_product = 0 gardé pour compatibilité
+ $sql.= " AND (d.fk_product IS NULL OR d.fk_product = 0)"; // fk_product = 0 gard� pour compatibilit�
$result = $this->db->query($sql);
if ($result)
@@ -443,7 +445,7 @@ class Contrat extends CommonObject
}
else
{
- dolibarr_syslog("Contrat::Fetch Erreur lecture des lignes de contrat non liées aux produits");
+ dolibarr_syslog("Contrat::Fetch Erreur lecture des lignes de contrat non li�es aux produits");
$this->error=$this->db->error();
return -2;
}
@@ -452,15 +454,15 @@ class Contrat extends CommonObject
}
/**
- * \brief Crée un contrat vierge en base
- * \param user Utilisateur qui crée
+ * \brief Cr�e un contrat vierge en base
+ * \param user Utilisateur qui cr�e
* \param langs Environnement langue de l'utilisateur
- * \param conf Environnement de configuration lors de l'opération
- * \return int <0 si erreur, id contrat créé sinon
+ * \param conf Environnement de configuration lors de l'op�ration
+ * \return int <0 si erreur, id contrat cr�� sinon
*/
function create($user,$langs='',$conf='')
{
- // Controle validité des paramètres
+ // Controle validit� des param�tres
$paramsok=1;
if ($this->commercial_signature_id <= 0)
{
@@ -479,7 +481,7 @@ class Contrat extends CommonObject
$this->db->begin();
- // Insère contrat
+ // Ins�re contrat
$sql = "INSERT INTO ".MAIN_DB_PREFIX."contrat (datec, fk_soc, fk_user_author, date_contrat";
// $sql.= ", fk_commercial_signature, fk_commercial_suivi";
$sql.= " , ref)";
@@ -496,11 +498,11 @@ class Contrat extends CommonObject
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."contrat");
- // Insère contacts commerciaux ('SALESREPSIGN','contrat')
+ // Ins�re contacts commerciaux ('SALESREPSIGN','contrat')
$result=$this->add_contact($this->commercial_signature_id,'SALESREPSIGN','internal');
if ($result < 0) $error++;
- // Insère contacts commerciaux ('SALESREPFOLL','contrat')
+ // Ins�re contacts commerciaux ('SALESREPFOLL','contrat')
$result=$this->add_contact($this->commercial_suivi_id,'SALESREPFOLL','internal');
if ($result < 0) $error++;
@@ -551,7 +553,7 @@ class Contrat extends CommonObject
* \brief Supprime l'objet de la base
* \param user Utilisateur qui supprime
* \param langs Environnement langue de l'utilisateur
- * \param conf Environnement de configuration lors de l'opération
+ * \param conf Environnement de configuration lors de l'op�ration
* \return int < 0 si erreur, > 0 si ok
*/
function delete($user,$langs='',$conf='')
@@ -649,47 +651,47 @@ class Contrat extends CommonObject
/**
* \brief Ajoute une ligne de contrat en base
* \param desc Description de la ligne
- * \param pu Prix unitaire (HT ou TTC selon price_base_type
- * \param qty Quantité
+ * \param pu_ht Prix unitaire HT
+ * \param qty Quantit�
* \param txtva Taux tva
* \param fk_product Id produit
* \param remise_percent Pourcentage de remise de la ligne
- * \param date_start Date de debut prévue
- * \param date_end Date de fin prévue
+ * \param date_start Date de debut pr�vue
+ * \param date_end Date de fin pr�vue
* \param price_base_type HT ou TTC
+ * \param pu_ttc Prix unitaire TTC
+ * \param info_bits Bits de type de lignes
* \return int <0 si erreur, >0 si ok
*/
- function addline($desc, $pu, $qty, $txtva, $fk_product=0, $remise_percent=0, $date_start, $date_end, $price_base_type='HT')
+ function addline($desc, $pu_ht, $qty, $txtva, $fk_product=0, $remise_percent=0, $date_start, $date_end, $price_base_type='HT', $pu_ttc=0, $info_bits=0)
{
global $langs, $conf;
- // Nettoyage parametres
- if (! $txtva) $txtva=0;
- $remise_percent=price2num($remise_percent);
- $qty=price2num($qty);
- if (! $qty) $qty=1;
- $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, $info_bits");
+ dolibarr_syslog("Contrat::addline $desc, $pu_ht, $qty, $txtva, $fk_product, $remise_percent, $date_start, $date_end, $price_base_type, $pu_ttc, $info_bits");
if ($this->statut == 0 || ($this->statut == 1 && $conf->global->CONTRAT_EDITWHENVALIDATED))
{
- if ($fk_product > 0)
- {
- $prod = new Product($this->db, $fk_product);
- if ($prod->fetch($fk_product) > 0)
- {
- $label = $prod->libelle;
- // multiprix
- if($conf->global->PRODUIT_MULTIPRICES == 1)
- $pu = $prod->multiprices[$this ->societe->price_level];
- else
- $pu = $prod->price;
- $txtva = $prod->tva_tx;
- }
- }
-
+ $this->db->begin();
+
+ // Clean parameters
+ $remise_percent=price2num($remise_percent);
+ $qty=price2num($qty);
+ if (! $qty) $qty=1;
+ if (! $ventil) $ventil=0;
+ if (! $info_bits) $info_bits=0;
+ $pu_ht=price2num($pu_ht);
+ $pu_ttc=price2num($pu_ttc);
+ $txtva=price2num($txtva);
+
+ if ($price_base_type=='HT')
+ {
+ $pu=$pu_ht;
+ }
+ 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
@@ -714,6 +716,7 @@ class Contrat extends CommonObject
$sql.= " (fk_contrat, label, description, fk_product, qty, tva_tx,";
$sql.= " remise_percent, subprice,";
$sql.= " total_ht, total_tva, total_ttc,";
+ $sql.= " info_bits,";
$sql.= " price_ht, remise"; // \TODO A virer
if ($date_start > 0) { $sql.= ",date_ouverture_prevue"; }
if ($date_end > 0) { $sql.= ",date_fin_validite"; }
@@ -723,20 +726,35 @@ class Contrat extends CommonObject
$sql.= " ".$txtva.",";
$sql.= " ".price2num($remise_percent).",".price2num($pu).",";
$sql.= " ".price2num($total_ht).",".price2num($total_tva).",".price2num($total_ttc).",";
+ $sql.= " '".$info_bits."',";
$sql.= " ".price2num($price).",".price2num( $remise); // \TODO A virer
if ($date_start > 0) { $sql.= ",".$this->db->idate($date_start); }
if ($date_end > 0) { $sql.= ",".$this->db->idate($date_end); }
$sql.= ")";
-
- if ( $this->db->query($sql) )
+
+ dolibarr_syslog("Contrat::addline sql=".$sql);
+
+ $resql=$this->db->query($sql);
+ if ($resql)
{
- $this->update_price();
- return 1;
+ $result=$this->update_price();
+ if ($result > 0)
+ {
+ $this->db->commit();
+ return 1;
+ }
+ else
+ {
+ dolibarr_syslog("Error sql=$sql, error=".$this->error,LOG_ERR);
+ $this->db->rollback();
+ return -1;
+ }
}
else
{
- $this->error=$this->db->error()." sql=".$sql;
- dolibarr_syslog("Contrat::addline ".$this->error);
+ $this->db->rollback();
+ $this->error=$this->db->error()." sql=".$sql;
+ dolibarr_syslog("Contrat::addline ".$this->error,LOG_ERR);
return -1;
}
}
@@ -748,17 +766,17 @@ class Contrat extends CommonObject
}
/**
- * \brief Mets à jour une ligne de contrat
+ * \brief Mets � jour une ligne de contrat
* \param rowid Id de la ligne de facture
* \param desc Description de la ligne
* \param pu Prix unitaire
- * \param qty Quantité
+ * \param qty Quantit�
* \param remise_percent Pourcentage de remise de la ligne
- * \param date_start Date de debut prévue
- * \param date_end Date de fin prévue
+ * \param date_start Date de debut pr�vue
+ * \param date_end Date de fin pr�vue
* \param tvatx Taux TVA
- * \param date_debut_reel Date de debut réelle
- * \param date_fin_reel Date de fin réelle
+ * \param date_debut_reel Date de debut r�elle
+ * \param date_fin_reel Date de fin r�elle
* \return int < 0 si erreur, > 0 si ok
*/
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0,
@@ -859,64 +877,20 @@ class Contrat extends CommonObject
/**
- * \brief Mets à jour le prix total du contrat
+ * \brief Mets a jour le prix total du contrat
* \return int <0 si ko, >0 si ok
*/
function update_price()
{
- include_once DOL_DOCUMENT_ROOT . "/lib/price.lib.php";
-
- /*
- * Liste des produits a ajouter
- */
- $sql = "SELECT total_ht, total_tva, total_ttc";
- $sql.= " FROM ".MAIN_DB_PREFIX."contratdet";
- $sql.= " WHERE fk_contrat = ".$this->id;
- $resql=$this->db->query($sql);
- if ($resql)
- {
- $num = $this->db->num_rows($resql);
- $i = 0;
-
- while ($i < $num)
- {
- $obj = $this->db->fetch_object($resql);
- $this->total_ht += $obj->total_ht;
- $this->total_tva += $obj->total_tva;
- $this->total_ttc += $obj->total_ttc;
- $i++;
- }
-
- // Met a jour en base
- /*
- $sql = "UPDATE ".MAIN_DB_PREFIX."contrat SET";
- $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->id;
- if ( $this->db->query($sql) )
- {
- return 1;
- }
- else
- {
- $this->error=$this->db->error();
- return -1;
- }
- */
- }
- else
- {
- $this->error=$this->db->error();
- return -1;
- }
+ // Function empty because there is no total in contract parent table
+ return 1;
}
/**
- * \brief Retourne le libellé du statut du contrat
- * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto
- * \return string Libellé
+ * \brief Retourne le libell� du statut du contrat
+ * \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long, 5=Libell� court + Picto
+ * \return string Libell�
*/
function getLibStatut($mode)
{
@@ -924,10 +898,10 @@ class Contrat extends CommonObject
}
/**
- * \brief Renvoi le libellé d'un statut donné
+ * \brief Renvoi le libell� d'un statut donn�
* \param statut id statut
- * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto
- * \return string Libellé
+ * \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long, 5=Libell� court + Picto
+ * \return string Libell�
*/
function LibStatut($statut,$mode)
{
@@ -1021,8 +995,8 @@ class Contrat extends CommonObject
/**
- * \brief Récupère les lignes de detail du contrat
- * \param statut Statut des lignes detail à récupérer
+ * \brief R�cup�re les lignes de detail du contrat
+ * \param statut Statut des lignes detail � r�cup�rer
* \return array Tableau des lignes de details
*/
function array_detail($statut=-1)
@@ -1058,7 +1032,7 @@ class Contrat extends CommonObject
/**
* \brief Charge indicateurs this->nbtodo et this->nbtodolate de tableau de bord
* \param user Objet user
- * \param mode "inactive" pour services à activer, "expired" pour services expirés
+ * \param mode "inactive" pour services � activer, "expired" pour services expir�s
* \return int <0 si ko, >0 si ok
*/
function load_board($user,$mode)
@@ -1165,7 +1139,7 @@ class ContratLigne
/**
* \brief Constructeur d'objets ligne de contrat
- * \param DB handler d'accès base de donnée
+ * \param DB handler d'acc�s base de donn�e
*/
function ContratLigne($DB)
{
@@ -1179,9 +1153,9 @@ class ContratLigne
}
/**
- * \brief Retourne le libellé du statut du contrat
- * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto
- * \return string Libellé
+ * \brief Retourne le libell� du statut du contrat
+ * \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto
+ * \return string Libell�
*/
function getLibStatut($mode)
{
@@ -1189,10 +1163,10 @@ class ContratLigne
}
/**
- * \brief Renvoi le libellé d'un statut donné
+ * \brief Renvoi le libell� d'un statut donn�
* \param statut id statut
- * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto
- * \return string Libellé
+ * \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long, 5=Libell� court + Picto
+ * \return string Libell�
*/
function LibStatut($statut,$mode)
{
@@ -1237,9 +1211,9 @@ class ContratLigne
}
/**
- * \brief Chargement depuis la base des données du contrat
- * \param id Id du contrat à charger
- * \return int <0 si ko, id du contrat chargé si ok
+ * \brief Chargement depuis la base des donn�es du contrat
+ * \param id Id du contrat � charger
+ * \return int <0 si ko, id du contrat charg� si ok
*/
function fetch($id)
{
@@ -1285,7 +1259,7 @@ class ContratLigne
/**
* \brief Mise a jour en base des champs total_xxx de ligne
- * \remarks Utilisé par migration
+ * \remarks Utilise par migration
* \return int <0 si ko, >0 si ok
*/
function update_total()
diff --git a/htdocs/contrat/fiche.php b/htdocs/contrat/fiche.php
index 31abb5b506b..005b94e5336 100644
--- a/htdocs/contrat/fiche.php
+++ b/htdocs/contrat/fiche.php
@@ -186,7 +186,7 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
}
$ret=$contrat->fetch_client();
- $date_start='';
+ $date_start='';
$date_end='';
// Si ajout champ produit libre
if ($_POST['mode'] == 'libre')
@@ -261,10 +261,15 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
else
{
$pu_ht=$_POST['pu'];
- $tva_tx=$_POST['tva_tx'];
+ $tva_tx=eregi_replace('\*','',$_POST['tva_tx']);
+ $tva_npr=eregi('\*',$_POST['tva_tx'])?1:0;
$desc=$_POST['desc'];
}
+ $info_bits=0;
+ if ($tva_npr) $info_bits |= 0x01;
+
+ // Insert line
$result = $contrat->addline(
$desc,
$pu_ht,
@@ -275,7 +280,8 @@ if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
$date_start,
$date_end,
$price_base_type,
- $pu_ttc
+ $pu_ttc,
+ $info_bits
);
if ($result > 0)
@@ -717,7 +723,8 @@ else
// Area with common detail of line
print '';
- $sql = "SELECT cd.statut, cd.label as label_det, cd.fk_product, cd.description, cd.price_ht, cd.qty, cd.rowid, cd.tva_tx, cd.remise_percent, cd.subprice,";
+ $sql = "SELECT cd.statut, cd.label as label_det, cd.fk_product, cd.description, cd.price_ht, cd.qty, cd.rowid,";
+ $sql.= " cd.tva_tx, cd.remise_percent, cd.info_bits, cd.subprice,";
$sql.= " ".$db->pdate("cd.date_ouverture_prevue")." as date_debut, ".$db->pdate("cd.date_ouverture")." as date_debut_reelle,";
$sql.= " ".$db->pdate("cd.date_fin_validite")." as date_fin, ".$db->pdate("cd.date_cloture")." as date_fin_reelle,";
$sql.= " p.ref, p.label";
@@ -763,7 +770,7 @@ else
print "| ".nl2br($objp->description)." | \n";
}
// TVA
- print ''.vatrate($objp->tva_tx).'% | ';
+ print ''.vatrate($objp->tva_tx,'%',$objp->info_bits).' | ';
// Prix
print ''.price($objp->subprice)." | \n";
// Quantite
diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php
index 9b99eca5e58..5ef43549d67 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -1375,7 +1375,7 @@ class Facture extends CommonObject
else
{
$this->error=$this->db->error();
- dolibarr_syslog("Error sql=$sql, error=".$this->error);
+ dolibarr_syslog("Error sql=$sql, error=".$this->error,LOG_ERR);
$this->db->rollback();
return -1;
}
diff --git a/htdocs/propal.class.php b/htdocs/propal.class.php
index fed5636fdf7..582bd0cd924 100644
--- a/htdocs/propal.class.php
+++ b/htdocs/propal.class.php
@@ -352,7 +352,7 @@ class Propal extends CommonObject
else
{
$this->error=$this->db->error();
- dolibarr_syslog("Error sql=$sql, error=".$this->error);
+ dolibarr_syslog("Error sql=$sql, error=".$this->error,LOG_ERR);
$this->db->rollback();
return -1;
}
@@ -618,83 +618,11 @@ class Propal extends CommonObject
return $this->id;
}
- /**
- * \brief Mets � jour le prix total de la proposition
- * \return int <0 si ko, >0 si ok
- */
- function update_price()
- {
- include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
-
- $tvas=array();
- $err=0;
-
- // Liste des lignes a sommer
- $sql = "SELECT qty, tva_tx, subprice, remise_percent,";
- $sql.= " total_ht, total_tva, total_ttc, special_code";
- $sql.= " FROM ".MAIN_DB_PREFIX."propaldet";
- $sql.= " WHERE fk_propal = ".$this->id;
-
- dolibarr_syslog("Propal::update_price sql=".$sql);
- $result = $this->db->query($sql);
- if ($result)
- {
- $this->total_ht = 0;
- $this->total_tva = 0;
- $this->total_ttc = 0;
-
- $num = $this->db->num_rows($result);
- $i = 0;
- while ($i < $num)
- {
- $obj = $this->db->fetch_object($result);
-
- if ($this->special_code != 3)
- {
- $this->total_ht += $obj->total_ht;
- $this->total_tva += ($obj->total_ttc - $obj->total_ht);
- $this->total_ttc += $obj->total_ttc;
-
- $tvas[$obj->tva_taux] += ($obj->total_ttc - $obj->total_ht);
- }
-
- $i++;
- }
-
- $this->db->free($result);
-
- // Met a jour indicateurs
- $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET";
- $sql.= " total_ht=".price2num($this->total_ht).",";
- $sql.= " tva=". price2num($this->total_tva).",";
- $sql.= " total=". price2num($this->total_ttc);
- $sql.= " WHERE rowid = ".$this->id;
-
- dolibarr_syslog("Propal::update_price sql=".$sql);
- if ( $this->db->query($sql) )
- {
- return 1;
- }
- else
- {
- $this->error=$this->db->error();
- dolibarr_syslog("Propal::update_price error=".$this->error);
- return -1;
- }
- }
- else
- {
- $this->error=$this->db->error();
- dolibarr_syslog("Propal::update_price error=".$this->error,LOG_ERR);
- return -1;
- }
- }
-
/**
- * \brief Recup�re de la base les caract�ristiques d'une propale
- * \param rowid id de la propal � r�cup�rer
- * \return int <0 si ko, 0 si non trouv�, >0 si ok
+ * \brief Recupere de la base les caracteristiques d'une propale
+ * \param rowid id de la propal a recuperer
+ * \return int <0 si ko, 0 si non trouve, >0 si ok
*/
function fetch($rowid)
{
|