diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 8776ecb35f5fb41eaa749dc6ebcd1624b5ab9b5b..2e997664c216311fe03952f0617943da06fac92b 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -119,7 +119,7 @@ if ($_REQUEST['action'] == 'confirm_validate' && $_REQUEST['confirm'] == 'yes') { $propal = new Propal($db); $propal->fetch($_GET['propalid']); - $result=$propal->update_price($_GET['propalid']); + $result=$propal->update_price(); if ($_REQUEST['lang_id']) { $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); diff --git a/htdocs/commande/commande.class.php b/htdocs/commande/commande.class.php index 6422863f83ff69685b9fc22ecae50f61f71502e4..0b8a83e244c2662297825b212940695fc9bf3bc0 100644 --- a/htdocs/commande/commande.class.php +++ b/htdocs/commande/commande.class.php @@ -633,28 +633,28 @@ class Commande extends CommonObject dolibarr_syslog("Commande::addline commandeid=$commandeid, desc=$desc, pu_ht=$pu_ht, qty=$qty, txtva=$txtva, fk_product=$fk_product, remise_percent=$remise_percent, info_bits=$info_bits, fk_remise_except=$fk_remise_except, price_base_type=$price_base_type, pu_ttc=$pu_ttc"); include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php'); + // Clean parameters + $remise_percent=price2num($remise_percent); + $qty=price2num($qty); + if (! $qty) $qty=1; + 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; + } + $desc=trim($desc); + if ($this->statut == 0) { $this->db->begin(); - // Nettoyage param�tres - $remise_percent=price2num($remise_percent); - $qty=price2num($qty); - if (! $qty) $qty=1; - 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 @@ -699,6 +699,7 @@ class Commande extends CommonObject if ($result > 0) { // Mise a jour informations denormalisees au niveau de la commande meme + $this->id=$commandeid; // \TODO A virer $result=$this->update_price($commandeid); if ($result > 0) { @@ -940,7 +941,7 @@ class Commande extends CommonObject $result=$comligne->insert(); if ($result > 0) { - $result=$this->update_price($this->id); + $result=$this->update_price(); if ($result > 0) { $this->db->commit(); @@ -1273,7 +1274,7 @@ class Commande extends CommonObject if ($this->db->query($sql)) { $this->remise_percent = $remise; - $this->update_price($this->id); + $this->update_price(); return 1; } else @@ -1308,7 +1309,7 @@ class Commande extends CommonObject if ($this->db->query($sql)) { $this->remise_absolue = $remise; - $this->update_price($this->id); + $this->update_price(); return 1; } else @@ -1319,73 +1320,6 @@ class Commande extends CommonObject } } - /** - * \brief Mets � jour le prix total de la commnde - * \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 factures a sommer - $sql = "SELECT price, qty, tva_tx, total_ht, total_tva, total_ttc"; - $sql.= " FROM ".MAIN_DB_PREFIX."commandedet"; - $sql.= " WHERE fk_commande = ".$this->id; - - dolibarr_syslog("Commande::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); - - $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."commande SET"; - $sql .= " total_ht='". price2num($this->total_ht)."',"; - $sql .= " tva='". price2num($this->total_tva)."',"; - $sql .= " total_ttc='".price2num($this->total_ttc)."'"; - $sql .=" WHERE rowid = ".$this->id; - - dolibarr_syslog("Facture::update_price sql=".$sql); - $resql=$this->db->query($sql); - if ($resql) - { - return 1; - } - else - { - $this->error=$this->db->error(); - dolibarr_syslog("Commande::update_price error=".$this->error,LOG_ERR); - return -1; - } - } - else - { - $this->error=$this->db->error(); - dolibarr_syslog("Commande::update_price error=".$this->error,LOG_ERR); - return -1; - } - } - /** * \brief D�finit une date de livraison @@ -1704,7 +1638,7 @@ class Commande extends CommonObject if ($result > 0) { // Mise a jour info denormalisees au niveau facture - $this->update_price($this->id); + $this->update_price(); if ($LigneOld->qty <> $qty && $LigneOld->produit_id) { @@ -2189,7 +2123,7 @@ class CommandeLigne */ function CommandeLigne($DB) { - $this->db= $DB ; + $this->db= $DB; } /** diff --git a/htdocs/commonobject.class.php b/htdocs/commonobject.class.php index ac2476282bc8b4175d67f8287ebfe57e0b167aa5..3d9413756d980032095179b31cf6d1a8ff8c18c2 100644 --- a/htdocs/commonobject.class.php +++ b/htdocs/commonobject.class.php @@ -823,6 +823,79 @@ class CommonObject } } + /** + * \brief Update total_ht, total_ttc and total_vat for an object (sum of lines) + * \return int <0 si ko, >0 si ok + */ + function update_price() + { + include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php'); + + $err=0; + + // List lines to sum + $fieldtva='total_tva'; + if ($this->element == 'facture_fourn') $fieldtva='tva'; + + $sql = 'SELECT qty, total_ht, '.$fieldtva.' as total_tva, total_ttc'; + $sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element_line; + $sql.= ' WHERE '.$this->fk_element.' = '.$this->id; + + dolibarr_syslog("CommonObject::update_price sql=".$sql); + $resql = $this->db->query($sql); + if ($resql) + { + $this->total_ht = 0; + $this->total_tva = 0; + $this->total_ttc = 0; + + $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_ttc - $obj->total_ht); + $this->total_ttc += $obj->total_ttc; + + $i++; + } + + $this->db->free($resql); + + // Now update field total_ht, total_ttc and tva + $fieldht='total_ht'; + if ($this->element == 'facture') $fieldht='total'; + $fieldtva='tva'; + if ($this->element == 'facture_fourn') $fieldtva='total_tva'; + + $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 .= ' WHERE rowid = '.$this->id; + + dolibarr_syslog("CommonObject::update_price sql=".$sql); + $resql=$this->db->query($sql); + if ($resql) + { + return 1; + } + else + { + $this->error=$this->db->error(); + dolibarr_syslog("CommonObject::update_price error=".$this->error,LOG_ERR); + return -1; + } + } + else + { + $this->error=$this->db->error(); + dolibarr_syslog("CommonObject::update_price error=".$this->error,LOG_ERR); + return -1; + } + } } ?> diff --git a/htdocs/compta/facture/facture-rec.class.php b/htdocs/compta/facture/facture-rec.class.php index f52e52d66a271fb43ece7156d79f8bdfff7d627c..c1c996838d59636a1ba9d02a08f0388b42a126be 100644 --- a/htdocs/compta/facture/facture-rec.class.php +++ b/htdocs/compta/facture/facture-rec.class.php @@ -39,8 +39,11 @@ require_once(DOL_DOCUMENT_ROOT."/facture.class.php"); class FactureRec extends Facture { var $db ; - var $element='facture'; - + var $element='facturerec'; + var $table_element='facture_rec'; + var $table_element_line='facturedet_rec'; + var $fk_element='fk_facture'; + var $id ; var $socid; // Id client @@ -402,7 +405,8 @@ class FactureRec extends Facture if ( $this->db->query( $sql) ) { - $this->update_price($facid); + $this->id=$facid; // \TODO A virer + $this->update_price(); return 1; } else @@ -413,63 +417,6 @@ class FactureRec extends Facture } } - /** - * \brief Mise � jour des sommes de la facture et calculs denormalises - * \param facid id de la facture a modifier - * \return int <0 si ko, >0 si ok - */ - function update_price($facid) - { - $tvas=array(); - $err=0; - - // Liste des lignes factures a sommer (Ne plus utiliser price) - $sql = 'SELECT qty, tva_taux, subprice, remise_percent, price,'; - $sql.= ' total_ht, total_tva, total_ttc'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'facturedet_rec'; - $sql.= ' WHERE fk_facture = '.$facid; - - $resql = $this->db->query($sql); - if ($resql) - { - $this->total_ht = 0; - $this->total_tva = 0; - $this->total_ttc = 0; - $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_ttc - $obj->total_ht); - $this->total_ttc += $obj->total_ttc; - - // Ne plus utiliser amount, ni remise - $this->amount_ht += ($obj->price * $obj->qty); - $this->total_remise += 0; // Plus de remise globale (toute remise est sur une ligne) - $tvas[$obj->tva_taux] += ($obj->total_ttc - $obj->total_ht); - $i++; - } - - $this->db->free($resql); - - // Met a jour indicateurs sur facture - $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_rec '; - $sql .= "SET amount ='".price2num($this->amount_ht)."'"; - $sql .= ", remise='". price2num($this->total_remise)."'"; - $sql .= ", total='". price2num($this->total_ht)."'"; - $sql .= ", tva='". price2num($this->total_tva)."'"; - $sql .= ", total_ttc='".price2num($this->total_ttc)."'"; - $sql .= ' WHERE rowid = '.$facid; - $resql=$this->db->query($sql); - - } - else - { - dolibarr_print_error($this->db); - } - } /** * \brief Rend la facture automatique diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php index 6a942f67f5fef2d89f067d9f06d0297d505fa9a4..97eaa4d2e9b34c44d3f0d7f820b085b52dfee4c3 100644 --- a/htdocs/facture.class.php +++ b/htdocs/facture.class.php @@ -296,7 +296,7 @@ class Facture extends CommonObject if (! $error) { - $resql=$this->update_price($this->id); + $resql=$this->update_price(); if ($resql) { // Appel des triggers @@ -641,7 +641,7 @@ class Facture extends CommonObject $lineid=$facligne->insert(); if ($lineid > 0) { - $result=$this->update_price($this->id); + $result=$this->update_price(); if ($result > 0) { // Cr�e lien entre remise et ligne de facture @@ -713,72 +713,61 @@ class Facture extends CommonObject $this->db->begin(); - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_tva_sum WHERE fk_facture = '.$rowid; + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'fa_pr WHERE fk_facture = '.$rowid; if ($this->db->query($sql)) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'fa_pr WHERE fk_facture = '.$rowid; + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'co_fa WHERE fk_facture = '.$rowid; if ($this->db->query($sql)) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'co_fa WHERE fk_facture = '.$rowid; - if ($this->db->query($sql)) + // On met a jour le lien des remises + $list_rowid_det=array(); + $sql = 'SELECT fd.rowid FROM '.MAIN_DB_PREFIX.'facturedet as fd WHERE fk_facture = '.$rowid; + $resql=$this->db->query($sql); + while ($obj = $this->db->fetch_object($resql)) { - // On met a jour le lien des remises - $list_rowid_det=array(); - $sql = 'SELECT fd.rowid FROM '.MAIN_DB_PREFIX.'facturedet as fd WHERE fk_facture = '.$rowid; - $resql=$this->db->query($sql); - while ($obj = $this->db->fetch_object($resql)) - { - $list_rowid_det[]=$obj->rowid; - } - - // On d�saffecte de la facture les remises li�es - if (sizeof($list_rowid_det)) - { - $sql = 'UPDATE '.MAIN_DB_PREFIX.'societe_remise_except as re'; - $sql.= ' SET re.fk_facture = NULL'; - $sql.= ' WHERE re.fk_facture in ('.join(',',$list_rowid_det).')'; + $list_rowid_det[]=$obj->rowid; + } + + // On d�saffecte de la facture les remises li�es + if (sizeof($list_rowid_det)) + { + $sql = 'UPDATE '.MAIN_DB_PREFIX.'societe_remise_except as re'; + $sql.= ' SET re.fk_facture = NULL'; + $sql.= ' WHERE re.fk_facture in ('.join(',',$list_rowid_det).')'; - dolibarr_syslog("Facture.class::delete sql=".$sql); - if (! $this->db->query($sql)) - { - $this->error=$this->db->error()." sql=".$sql; - dolibarr_syslog("Facture.class::delete ".$this->error); - $this->db->rollback(); - return -5; - } + dolibarr_syslog("Facture.class::delete sql=".$sql); + if (! $this->db->query($sql)) + { + $this->error=$this->db->error()." sql=".$sql; + dolibarr_syslog("Facture.class::delete ".$this->error); + $this->db->rollback(); + return -5; } - - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facturedet WHERE fk_facture = '.$rowid; - if ($this->db->query($sql)) + } + + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facturedet WHERE fk_facture = '.$rowid; + if ($this->db->query($sql)) + { + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture WHERE rowid = '.$rowid; + $resql=$this->db->query($sql); + if ($resql) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture WHERE rowid = '.$rowid; - $resql=$this->db->query($sql); - if ($resql) - { - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('BILL_DELETE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers - - $this->db->commit(); - return 1; - } - else - { - $this->error=$this->db->error()." sql=".$sql; - dolibarr_syslog("Facture.class::delete ".$this->error); - $this->db->rollback(); - return -6; - } + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('BILL_DELETE',$this,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + + $this->db->commit(); + return 1; } else { $this->error=$this->db->error()." sql=".$sql; dolibarr_syslog("Facture.class::delete ".$this->error); $this->db->rollback(); - return -4; + return -6; } } else @@ -786,7 +775,7 @@ class Facture extends CommonObject $this->error=$this->db->error()." sql=".$sql; dolibarr_syslog("Facture.class::delete ".$this->error); $this->db->rollback(); - return -3; + return -4; } } else @@ -794,7 +783,7 @@ class Facture extends CommonObject $this->error=$this->db->error()." sql=".$sql; dolibarr_syslog("Facture.class::delete ".$this->error); $this->db->rollback(); - return -2; + return -3; } } else @@ -802,7 +791,7 @@ class Facture extends CommonObject $this->error=$this->db->error()." sql=".$sql; dolibarr_syslog("Facture.class::delete ".$this->error); $this->db->rollback(); - return -1; + return -2; } } @@ -1071,7 +1060,7 @@ class Facture extends CommonObject $numfa = $this->ref; } - $this->update_price($this->id); + $this->update_price(); // Validation de la facture $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture '; @@ -1338,6 +1327,7 @@ class Facture extends CommonObject $remise = round(($pu * $remise_percent / 100),2); $price = ($pu - $remise); } + $product_type=0; if ($fk_product) { @@ -1375,7 +1365,8 @@ class Facture extends CommonObject if ($result > 0) { // Mise a jour informations denormalisees au niveau de la facture meme - $result=$this->update_price($facid); + $this->id=$facid; // \TODO A virer + $result=$this->update_price(); if ($result > 0) { $this->db->commit(); @@ -1476,7 +1467,7 @@ class Facture extends CommonObject if ($result > 0) { // Mise a jour info denormalisees au niveau facture - $this->update_price($this->id); + $this->update_price(); $this->db->commit(); return $result; } @@ -1537,7 +1528,7 @@ class Facture extends CommonObject return -1; } - $result=$this->update_price($this->id); + $result=$this->update_price(); // Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); @@ -1551,105 +1542,6 @@ class Facture extends CommonObject return 1; } - /** - \brief Mise � jour des sommes de la facture et calculs denormalises - \param facid id de la facture a modifier - \return int <0 si ko, >0 si ok - */ - function update_price($facid) - { - include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php'); - - $tvas=array(); - $err=0; - - // Liste des lignes a sommer - $sql = 'SELECT qty, tva_taux, subprice, remise_percent,'; - $sql.= ' total_ht, total_tva, total_ttc'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'facturedet'; - $sql.= ' WHERE fk_facture = '.$facid; - - dolibarr_syslog("Facture::update_price sql=".$sql); - $resql = $this->db->query($sql); - if ($resql) - { - $this->total_ht = 0; - $this->total_tva = 0; - $this->total_ttc = 0; - - $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_ttc - $obj->total_ht); - $this->total_ttc += $obj->total_ttc; - - $tvas[$obj->tva_taux] += ($obj->total_ttc - $obj->total_ht); - $i++; - } - - $this->db->free($resql); - - // Met a jour indicateurs - $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture SET'; - $sql .= " total='". price2num($this->total_ht)."',"; - $sql .= " tva='". price2num($this->total_tva)."',"; - $sql .= " total_ttc='".price2num($this->total_ttc)."'"; - $sql .= ' WHERE rowid = '.$facid; - - dolibarr_syslog("Facture::update_price sql=".$sql); - $resql=$this->db->query($sql); - if ($resql) - { - // \TODO A supprimer car l'utilisation de facture_tva_sum non utilisable - // dans un context compta propre. On utilisera plutot les lignes. - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_tva_sum WHERE fk_facture='.$this->id; - if ( $this->db->query($sql) ) - { - foreach ($tvas as $key => $value) - { - $sql_del = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_tva_sum where fk_facture ='.$this->id; - $this->db->query($sql_del); - $sql = 'INSERT INTO '.MAIN_DB_PREFIX."facture_tva_sum (fk_facture,amount,tva_tx) values ($this->id,'".price2num($tvas[$key])."','".price2num($key)."');"; - if (! $this->db->query($sql) ) - { - dolibarr_print_error($this->db); - $err++; - } - } - } - else - { - $err++; - } - - if ($err == 0) - { - return 1; - } - else - { - return -3; - } - } - else - { - $this->error=$this->db->error(); - dolibarr_syslog("Facture::update_price error=".$this->error,LOG_ERR); - return -1; - } - } - else - { - $this->error=$this->db->error(); - dolibarr_syslog("Facture::update_price error=".$this->error,LOG_ERR); - return -1; - } - } - /** * \brief Applique une remise relative * \param user User qui positionne la remise diff --git a/htdocs/fourn/fournisseur.commande.class.php b/htdocs/fourn/fournisseur.commande.class.php index 36a8bd476484dfd191372a39dc8697aa176922e1..2e2ecf465dd2c717ed406b41629b65482ec2f686 100644 --- a/htdocs/fourn/fournisseur.commande.class.php +++ b/htdocs/fourn/fournisseur.commande.class.php @@ -40,6 +40,8 @@ class CommandeFournisseur extends Commande var $error; var $element='order_supplier'; var $table_element='commande_fournisseur'; + var $table_element_line = 'commande_fournisseurdet'; + var $fk_element = 'fk_commande'; var $id ; var $brouillon; @@ -135,7 +137,7 @@ class CommandeFournisseur extends Commande { $objp = $this->db->fetch_object($result); - $ligne = new CommandeFournisseurLigne(); + $ligne = new CommandeFournisseurLigne($this->db); $ligne->desc = $objp->description; // Description ligne $ligne->qty = $objp->qty; @@ -660,17 +662,30 @@ class CommandeFournisseur extends Commande * \param price_base_type HT or TTC * \param int <0 si ko, >0 si ok */ - function addline($desc, $pu, $qty, $txtva, $fk_product=0, $fk_prod_fourn_price=0, $fourn_ref='', $remise_percent=0, $price_base_type='HT') + function addline($desc, $pu_ht, $qty, $txtva, $fk_product=0, $fk_prod_fourn_price=0, $fourn_ref='', $remise_percent=0, $price_base_type='HT', $pu_ttc=0) { global $langs,$mysoc; - // Clean parameters - $qty = price2num($qty); - $pu = price2num($pu); - $desc = trim($desc); - $remise_percent = price2num($remise_percent); - dolibarr_syslog("Fournisseur.Commande::addline $desc, $pu, $qty, $txtva, $fk_product, $remise_percent"); + include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php'); + + // Clean parameters + $remise_percent=price2num($remise_percent); + $qty=price2num($qty); + if (! $qty) $qty=1; + 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; + } + $desc=trim($desc); if ($qty < 1 && ! $fk_product) { @@ -678,7 +693,7 @@ class CommandeFournisseur extends Commande return -1; } - if ($this->brouillon) + if ($this->statut == 0) { $this->db->begin(); @@ -716,9 +731,19 @@ class CommandeFournisseur extends Commande } } + // 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]; + $subprice = price2num($pu,'MU'); - - // Champ obsolete + + // \TODO A virer + // Anciens indicateurs: $price, $remise (a ne plus utiliser) $remise = 0; $price = $subprice; if ($remise_percent > 0) @@ -730,11 +755,17 @@ class CommandeFournisseur extends Commande $sql = "INSERT INTO ".MAIN_DB_PREFIX."commande_fournisseurdet"; $sql.= " (fk_commande,label, description,"; $sql.= " fk_product,"; - $sql.= " price, qty, tva_tx, remise_percent, subprice, remise, ref)"; + $sql.= " price, qty, tva_tx, remise_percent, subprice, remise, ref,"; + $sql.= " total_ht, total_tva, total_ttc"; + $sql.= ")"; $sql.= " VALUES (".$this->id.", '" . addslashes($label) . "','" . addslashes($desc) . "',"; if ($fk_product) { $sql.= $fk_product.","; } else { $sql.= "null,"; } - $sql.= price2num($price,'MU').", '$qty', $txtva, $remise_percent,'".price2num($subprice,'MU')."','".price2num($remise)."','".$ref."') ;"; + $sql.= price2num($price,'MU').", '$qty', $txtva, $remise_percent,'".price2num($subprice,'MU')."','".price2num($remise)."','".$ref."',"; + $sql.= "'".price2num($total_ht)."',"; + $sql.= "'".price2num($total_tva)."',"; + $sql.= "'".price2num($total_ttc)."'"; + $sql.= ")"; dolibarr_syslog('Fournisseur.commande::addline sql='.$sql); $resql=$this->db->query($sql); //print $sql; @@ -747,6 +778,7 @@ class CommandeFournisseur extends Commande } else { + $this->error=$this->db->error(); $this->db->rollback(); return -1; } @@ -861,67 +893,6 @@ class CommandeFournisseur extends Commande } } - /** - * Mettre � jour le prix - * - */ - function update_price() - { - include_once DOL_DOCUMENT_ROOT . "/lib/price.lib.php"; - - /* - * Liste des produits a ajouter - */ - $sql = "SELECT price, qty, tva_tx "; - $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet "; - $sql .= " WHERE fk_commande = $this->id"; - - if ( $this->db->query($sql) ) - { - $num = $this->db->num_rows(); - $i = 0; - - while ($i < $num) - { - $obj = $this->db->fetch_object(); - $products[$i][0] = $obj->price; - $products[$i][1] = $obj->qty; - $products[$i][2] = $obj->tva_tx; - $i++; - } - } - $calculs = calcul_price($products, $this->remise_percent); - - $totalht = $calculs[0]; - $totaltva = $calculs[1]; - $totalttc = $calculs[2]; - $total_remise = $calculs[3]; - - $this->remise = $total_remise; - $this->total_ht = $totalht; - $this->total_tva = $totaltva; - $this->total_ttc = $totalttc; - /* - * - */ - $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur set"; - $sql .= " amount_ht ='".price2num($totalht)."'"; - $sql .= ", total_ht ='".price2num($totalht)."'"; - $sql .= ", tva ='".price2num($totaltva)."'"; - $sql .= ", total_ttc ='".price2num($totalttc)."'"; - $sql .= ", remise ='".price2num($total_remise)."'"; - $sql .= " WHERE rowid = $this->id"; - if ( $this->db->query($sql) ) - { - return 1; - } - else - { - print "Erreur mise � jour du prix<p>".$sql; - return -1; - } - } - /** * \brief Supprime la commande * @@ -1288,7 +1259,7 @@ class CommandeFournisseur extends Commande if ($result > 0) { // Mise a jour info denormalisees au niveau facture - $this->update_price($this->id); + $this->update_price(); $this->db->commit(); return $result; } @@ -1393,26 +1364,102 @@ class CommandeFournisseur extends Commande */ class CommandeFournisseurLigne extends CommandeLigne { - // From llx_commandedet - var $qty; - var $tva_tx; - var $subprice; - var $remise_percent; - var $price; - var $fk_product; - var $desc; // Description ligne - - // From llx_product - var $libelle; // Label produit - var $product_desc; // Description produit - - // From llx_product_fournisseur - var $ref_fourn; // R�f�rence fournisseur + // From llx_commandedet + var $qty; + var $tva_tx; + var $subprice; + var $remise_percent; + var $price; + var $fk_product; + var $desc; // Description ligne + + // From llx_product + var $libelle; // Label produit + var $product_desc; // Description produit + + // From llx_product_fournisseur + var $ref_fourn; // R�f�rence fournisseur + + function CommandeFournisseurLigne($DB) + { + $this->db= $DB; + } - function CommandeFournisseurLigne() - { + /** + * \brief Load line order + * \param rowid id line order + */ + function fetch($rowid) + { + $sql = 'SELECT cd.rowid, cd.fk_commande, cd.fk_product, cd.description, cd.price, cd.qty, cd.tva_tx,'; + $sql.= ' cd.remise, cd.remise_percent, cd.subprice,'; + $sql.= ' cd.info_bits, cd.total_ht, cd.total_tva, cd.total_ttc,'; + $sql.= ' p.ref as product_ref, p.label as product_libelle, p.description as product_desc'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet as cd'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON cd.fk_product = p.rowid'; + $sql.= ' WHERE cd.rowid = '.$rowid; + $result = $this->db->query($sql); + if ($result) + { + $objp = $this->db->fetch_object($result); + $this->rowid = $objp->rowid; + $this->fk_commande = $objp->fk_commande; + $this->desc = $objp->description; + $this->qty = $objp->qty; + $this->price = $objp->price; + $this->subprice = $objp->subprice; + $this->tva_tx = $objp->tva_tx; + $this->remise = $objp->remise; + $this->remise_percent = $objp->remise_percent; + $this->produit_id = $objp->fk_product; + $this->info_bits = $objp->info_bits; + $this->total_ht = $objp->total_ht; + $this->total_tva = $objp->total_tva; + $this->total_ttc = $objp->total_ttc; + + $this->ref = $objp->product_ref; + $this->product_libelle = $objp->product_libelle; + $this->product_desc = $objp->product_desc; + + $this->db->free($result); + } + else + { + dolibarr_print_error($this->db); + } + } + + /** + * \brief Mise a jour de l'objet ligne de commande en base + * \return int <0 si ko, >0 si ok + */ + function update_total() + { + $this->db->begin(); - } + // Mise a jour ligne en base + $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseurdet 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->rowid; + + dolibarr_syslog("CommandeFournisseurLigne.class.php::update_total sql=$sql"); + + $resql=$this->db->query($sql); + if ($resql) + { + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error(); + dolibarr_syslog("CommandeFournisseurLigne.class.php::update_total Error ".$this->error); + $this->db->rollback(); + return -2; + } + } } ?> diff --git a/htdocs/fourn/fournisseur.facture.class.php b/htdocs/fourn/fournisseur.facture.class.php index 073d1f5ce9ce0d006f6ea17da42e99f390a970ea..1e3b601e63ec79a05f11642d1b087fa433ca87d3 100644 --- a/htdocs/fourn/fournisseur.facture.class.php +++ b/htdocs/fourn/fournisseur.facture.class.php @@ -42,6 +42,8 @@ class FactureFournisseur extends Facture var $socid; var $element='facture_fourn'; var $table_element='facture_fourn'; + var $table_element_line='facture_fourn_det'; + var $fk_element='fk_facture_fourn'; //! 0=brouillon, //! 1=valid�e, @@ -136,7 +138,7 @@ class FactureFournisseur extends Facture } } // Mise � jour prix - if ($this->update_price($this->id) > 0) + if ($this->update_price() > 0) { $this->db->commit(); return $this->id; @@ -514,7 +516,7 @@ class FactureFournisseur extends Facture if ($resql) { // Mise a jour prix total facture - return $this->update_price($this->id); + return $this->update_price(); } else { @@ -539,66 +541,10 @@ class FactureFournisseur extends Facture dolibarr_print_error($this->db); } // Mise a jour prix facture - $this->update_price($this->id); + $this->update_price(); return 1; } - /** - * \brief Mise � jour des sommes de la facture - * \param facid id de la facture a modifier - * \return int <0 si ko, >0 si ok - */ - function update_price($facid) - { - global $conf; - - $total_ht = 0; - $total_tva = 0; - $total_ttc = 0; - - $sql = 'SELECT sum(total_ht), sum(tva), sum(total_ttc) FROM '.MAIN_DB_PREFIX.'facture_fourn_det'; - $sql .= ' WHERE fk_facture_fourn = '.$facid.';'; - $resql = $this->db->query($sql); - if ($resql) - { - $num = $this->db->num_rows($resql); - if ($num) - { - $row = $this->db->fetch_row(); - $total_ht = $row[0]; - $total_tva = $row[1]; - $total_ttc = $row[2]; - } - $this->db->free($resql); - - $total_ht = $total_ht != '' ? $total_ht : 0; - $total_tva = $total_tva != '' ? $total_tva : 0; - $total_ttc = $total_ttc != '' ? $total_ttc : 0; - - $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_fourn SET'; - $sql .= ' total_ht = '. price2num($total_ht,'MT'); - $sql .= ',total_tva = '.price2num($total_tva,'MT'); - $sql .= ',total_ttc = '.price2num($total_ttc,'MT'); - $sql .= ' WHERE rowid = '.$facid.';'; - dolibarr_syslog("Fournisseur.facture::update_price sql=".$sql); - $resql2 = $this->db->query($sql); - if ($resql2) - { - return 1; - } - else - { - $this->error=$this->db->error(); - return -2; - } - } - else - { - dolibarr_print_error($this->db); - return -1; - } - } - /** * \brief Charge les informations d'ordre info dans l'objet facture diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 026b594f6e0462fac01c5a0ab0bb8656f37f268b..514359898b37f709f0d166bb25503d1416c7096a 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -16,14 +16,12 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * $Id$ */ /** \file htdocs/install/upgrade2.php \brief Effectue la migration de donnees diverses - \version $Revision$ + \version $Id$ */ include_once('./inc.php'); @@ -33,6 +31,7 @@ require_once($dolibarr_main_document_root . '/facture.class.php'); require_once($dolibarr_main_document_root . '/propal.class.php'); require_once($dolibarr_main_document_root . '/contrat/contrat.class.php'); require_once($dolibarr_main_document_root . '/commande/commande.class.php'); +require_once($dolibarr_main_document_root . '/fourn/fournisseur.commande.class.php'); require_once($dolibarr_main_document_root . '/lib/price.lib.php'); require_once($dolibarr_main_document_root . '/lib/menubase.class.php'); @@ -161,6 +160,8 @@ if (isset($_POST['action']) && $_POST['action'] == 'upgrade') migrate_price_commande($db,$langs,$conf); + migrate_price_commande_fournisseur($db,$langs,$conf); + migrate_price_facture($db,$langs,$conf); migrate_price_contrat($db,$langs,$conf); @@ -998,7 +999,7 @@ function migrate_price_facture($db,$langs,$conf) $facligne->total_ttc = $total_ttc; dolibarr_install_syslog("upgrade2: Line $rowid: facid=$obj->facid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc"); - print ". "; + print "."; $facligne->update_total(); @@ -1010,9 +1011,9 @@ function migrate_price_facture($db,$langs,$conf) if ( $facture->fetch($facture->id) >= 0) { - if ( $facture->update_price($facture->id) > 0 ) + if ( $facture->update_price() > 0 ) { - print "X "; + //print $facture->id; } else { @@ -1026,6 +1027,7 @@ function migrate_price_facture($db,$langs,$conf) $err++; } } + print " "; $i++; } @@ -1113,7 +1115,7 @@ function migrate_price_propal($db,$langs,$conf) $propal->id=$obj->rowid; if ( $propal->fetch($propal->id) >= 0 ) { - if ( $propal->update_price($propal->id) > 0 ) + if ( $propal->update_price() > 0 ) { print ". "; } @@ -1218,7 +1220,7 @@ function migrate_price_contrat($db,$langs,$conf) $propal->id=$obj->rowid; if ( $propal->fetch($propal->id) >= 0 ) { - if ( $propal->update_price($propal->id) > 0 ) + if ( $propal->update_price() > 0 ) { print ". "; } @@ -1320,7 +1322,7 @@ function migrate_price_commande($db,$langs,$conf) $commande->id = $obj->rowid; if ( $commande->fetch($commande->id) >= 0 ) { - if ( $commande->update_price($commande->id) > 0 ) + if ( $commande->update_price() > 0 ) { print ". "; } @@ -1370,6 +1372,116 @@ function migrate_price_commande($db,$langs,$conf) } +/* + * Mise a jour des totaux lignes de commande fournisseur + */ +function migrate_price_commande_fournisseur($db,$langs,$conf) +{ + $db->begin(); + + dolibarr_install_syslog("upgrade2: Upgrade data for supplier order"); + + print '<tr><td colspan="4">'; + + print '<br>'; + print '<b>'.$langs->trans('MigrationSupplierOrder')."</b><br>\n"; + + // Liste des lignes commande non a jour + $sql = "SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, "; + $sql.= " c.rowid as commandeid, c.remise_percent as remise_percent_global"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as cd, ".MAIN_DB_PREFIX."commande_fournisseur as c"; + $sql.= " WHERE cd.fk_commande = c.rowid"; + $sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)"; + $resql=$db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + if ($num) + { + while ($i < $num) + { + $obj = $db->fetch_object($resql); + + $rowid = $obj->rowid; + $qty = $obj->qty; + $pu = $obj->subprice; + $txtva = $obj->tva_taux; + $remise_percent = $obj->remise_percent; + $remise_percent_global = $obj->remise_percent_global; + + // On met a jour les 3 nouveaux champs + $commandeligne= new CommandeFournisseurLigne($db); + $commandeligne->fetch($rowid); + + $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]; + + $commandeligne->total_ht = $total_ht; + $commandeligne->total_tva = $total_tva; + $commandeligne->total_ttc = $total_ttc; + + dolibarr_install_syslog("upgrade2: Line $rowid: commandeid=$obj->rowid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc"); + print ". "; + $commandeligne->update_total($rowid); + + /* On touche pas a facture mere + $commande = new Commande($db); + $commande->id = $obj->rowid; + if ( $commande->fetch($commande->id) >= 0 ) + { + if ( $commande->update_price() > 0 ) + { + print ". "; + } + else + { + print "Error id=".$commande->id; + $err++; + } + } + else + { + print "Error #3"; + $err++; + } + */ + $i++; + } + } + else + { + print $langs->trans("AlreadyDone"); + } + + $db->free($resql); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseurdet"; + $sql.= " WHERE price = 0 and total_ttc = 0 and total_tva = 0 and total_ht = 0"; + $resql=$db->query($sql); + if (! $resql) + { + dolibarr_print_error($db); + } + + $db->commit(); + } + else + { + print "Error #1 ".$db->error(); + $err++; + + $db->rollback(); + } + + print '<br>'; + + print '</td></tr>'; +} + + /* * Mise a jour des modeles selectionnes */ diff --git a/htdocs/lib/price.lib.php b/htdocs/lib/price.lib.php index 28d7b3e1a987a5722849010c319b56be1509ce51..99532d3d60601c5d9b3451cad6956e8f7f12d1bb 100644 --- a/htdocs/lib/price.lib.php +++ b/htdocs/lib/price.lib.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2002-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2006-2008 Laurent Destailleur <eldy@users.sourceforge.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -78,102 +78,3 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_pe return $result; } - -/** - \brief Permet de calculer un prix. - \param products - \param remise_percent - \param remise_absolue - \return result[0] total_ht - result[1] total_tva - result[2] total_ttc - result[5] tableau des totaux par tva - \deprecated -*/ -function calcul_price($products, $remise_percent, $remise_absolue=0) -{ - $total_ht = 0; - $amount_ht = 0; - $total_tva = 0; - $total_ttc = 0; - $total_remise = 0; - $result[5] = array(); - - if ( sizeof( $products ) ) - { - foreach ($products as $product) - { - $prod_price = $product[0]; // Prix unitaire HT apres remise % de ligne - $prod_qty = $product[1]; - $prod_txtva = $product[2]; - - // montant total HT de la ligne - $line_price_ht = $prod_qty * $prod_price; - - // incr�mentation montant HT hors remise de l'ensemble - $amount_ht += $line_price_ht; - - // si une remise relative est consentie sur l'ensemble - if ($remise_percent > 0) - { - // calcul de la remise sur la ligne - $line_remise = ($line_price_ht * $remise_percent / 100); - // soustraction de cette remise au montant HT de la ligne - $line_price_ht -= $line_remise; - // incr�mentation du montant total de remise sur l'ensemble - $total_remise += $line_remise; - } - // incr�mentation du montant HT remis� de l'ensemble - $total_ht += $line_price_ht; - - // calcul de la TVA sur la ligne - $line_tva = ($line_price_ht * (abs($prod_txtva) / 100)); - - // incr�mentation du montant TTC de la valeur HT, on traite la TVA ensuite - $total_ttc += $line_price_ht; - - // traitement de la tva non per�ue r�cup�rable - if ( $prod_txtva >= 0 ) - { - // ce n'est pas une TVA non per�ue r�cup�rable, - // donc on incr�mente le total TTC de l'ensemble, de la valeur de TVA de la ligne - $total_ttc += $line_tva; - } - - // dans tous les cas, on incr�mente le total de TVA - $total_tva += $line_tva; - - // on incr�mente le tableau de diff�rentiation des taux de TVA - // s'il faut rassembler les tva facturables ou non, du m�me taux - // dans un m�me ligne du tableau, remplacer la ligne suivante par : - // $result[5][abs($prod_txtva)] += $line_tva; - $result[5][$prod_txtva] += $line_tva; - - $i++; - } - } - - /* - * Si remise absolue, on la retire - */ - $total_ht -= $remise_absolue; - - /* - * Gestion des arrondis sur total des prix - */ - $total_ht = round($total_ht, 2); - $total_tva = round($total_tva, 2); - $total_ttc = $total_ht + $total_tva; - - - // Renvoi r�ponse - $result[0] = $total_ht; - $result[1] = $total_tva; - $result[2] = $total_ttc; - - $result[3] = $total_remise; - $result[4] = $amount_ht; - - return $result; -} - diff --git a/htdocs/propal.class.php b/htdocs/propal.class.php index e683d74ebb0a0b5a3ae3eadd4bba5773de6396ed..284e8dc8651a8ea12a5ad456c953198b2c6ec651 100644 --- a/htdocs/propal.class.php +++ b/htdocs/propal.class.php @@ -46,8 +46,8 @@ class Propal extends CommonObject var $error; var $element='propal'; var $table_element='propal'; - var $fk_element='fk_propal'; var $table_element_line='propaldet'; + var $fk_element='fk_propal'; var $id; @@ -342,7 +342,7 @@ class Propal extends CommonObject if ($result > 0) { // Mise a jour informations denormalisees au niveau de la propale meme - $result=$this->update_price($propalid); + $result=$this->update_price(); if ($result > 0) { diff --git a/mysql/migration/2.2.0-2.4.0.sql b/mysql/migration/2.2.0-2.4.0.sql index ea09e70ae6b7075aa6543480a4a26aca3e0f6444..793de5be2fabea3437bc6f0eaad0789afb2ff9c6 100644 --- a/mysql/migration/2.2.0-2.4.0.sql +++ b/mysql/migration/2.2.0-2.4.0.sql @@ -5,6 +5,8 @@ -- Ce fichier doit �tre charg� sur une version 2.2.0 -- +drop table llx_facture_tva_sum; + delete from llx_const where name='MAIN_GRAPH_LIBRARY' and (value like 'phplot%' or value like 'artichow%'); ALTER TABLE llx_societe_adresse_livraison ADD COLUMN tel varchar(20) after fk_pays; diff --git a/mysql/tables/llx_facture_tva_sum.key.sql b/mysql/tables/llx_facture_tva_sum.key.sql deleted file mode 100644 index 7d36029bed852cc67a18f0f289537b155e7d4ad4..0000000000000000000000000000000000000000 --- a/mysql/tables/llx_facture_tva_sum.key.sql +++ /dev/null @@ -1,27 +0,0 @@ --- =================================================================== --- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net> --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --- --- $Id$ --- =================================================================== - - --- Supprimme orhpelins pour permettre mont�e de la cl� --- V4 DELETE llx_facture_tva_sum FROM llx_facture_tva_sum LEFT JOIN llx_facture ON llx_facture_tva_sum.fk_facture = llx_facture.rowid WHERE llx_facture.rowid IS NULL; - - -ALTER TABLE llx_facture_tva_sum ADD INDEX idx_facture_tva_sum_fk_facture (fk_facture); -ALTER TABLE llx_facture_tva_sum ADD CONSTRAINT fk_facture_tva_sum_fk_facture FOREIGN KEY (fk_facture) REFERENCES llx_facture (rowid); diff --git a/mysql/tables/llx_facture_tva_sum.sql b/mysql/tables/llx_facture_tva_sum.sql deleted file mode 100644 index d22b78df86a4048930877a8004e8062517837bc3..0000000000000000000000000000000000000000 --- a/mysql/tables/llx_facture_tva_sum.sql +++ /dev/null @@ -1,26 +0,0 @@ --- =================================================================== --- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --- --- $Id$ --- =================================================================== - -create table llx_facture_tva_sum -( - fk_facture integer NOT NULL, - amount real NOT NULL, - tva_tx real NOT NULL -)type=innodb;