BUGFIX Correction bug #13934

Pertes des centimes
This commit is contained in:
Rodolphe Quiedeville 2005-07-30 09:31:27 +00:00
parent 3feda06988
commit 487a76bafe

View File

@ -359,177 +359,195 @@ class FactureRec
}
}
/**
* Ajoute une ligne de facture
*/
function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0)
{
if ($this->brouillon)
{
if (strlen(trim($qty))==0)
{
$qty=1;
}
$remise = 0;
$price = round(ereg_replace(",",".",$pu), 2);
$subprice = $price;
if (trim(strlen($remise_percent)) > 0)
{
$remise = round(($pu * $remise_percent / 100), 2);
$price = $pu - $remise;
}
$sql = "INSERT INTO ".MAIN_DB_PREFIX."facturedet_rec (fk_facture,description,price,qty,tva_taux, fk_product, remise_percent, subprice, remise)";
$sql .= " VALUES ('$facid', '$desc', '$price', '$qty', '$txtva', '$fk_product', '$remise_percent', '$subprice', '$remise') ;";
if ( $this->db->query( $sql) )
{
$this->updateprice($facid);
return 1;
}
else
{
print "$sql";
return -1;
}
}
/**
* Ajoute une ligne de facture
*/
function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0)
{
if ($this->brouillon)
{
if (strlen(trim($qty))==0)
{
$qty=1;
}
$remise = 0;
$price = round(ereg_replace(",",".",$pu), 2);
$subprice = $price;
if (trim(strlen($remise_percent)) > 0)
{
$remise = round(($pu * $remise_percent / 100), 2);
$price = $pu - $remise;
}
$sql = "INSERT INTO ".MAIN_DB_PREFIX."facturedet_rec (fk_facture,description,price,qty,tva_taux, fk_product, remise_percent, subprice, remise)";
$sql .= " VALUES ('$facid', '$desc'";
$sql .= ",".ereg_replace(",",".",$price);
$sql .= ",".ereg_replace(",",".",$qty);
$sql .= ",".ereg_replace(",",".",$txtva);
$sql .= ",'$fk_product'";
$sql .= ",'".ereg_replace(",",".",$remise_percent)."'";
$sql .= ",'".ereg_replace(",",".",$subprice)."'";
$sql .= ",'".ereg_replace(",",".",$remise)."') ;";
if ( $this->db->query( $sql) )
{
$this->updateprice($facid);
return 1;
}
else
{
print "$sql";
return -1;
}
}
}
/**
* Mets à jour une ligne de facture
*/
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0)
{
if ($this->brouillon)
{
if (strlen(trim($qty))==0)
{
$qty=1;
}
$remise = 0;
$price = round(ereg_replace(",",".",$pu), 2);
$subprice = $price;
if (trim(strlen($remise_percent)) > 0)
{
$remise = round(($pu * $remise_percent / 100), 2);
$price = $pu - $remise;
}
else
{
$remise_percent=0;
}
$sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set description='$desc'";
$sql .= ",price=".ereg_replace(",",".",$price);
$sql .= ",subprice=".ereg_replace(",",".",$subprice);
$sql .= ",remise=".ereg_replace(",",".",$remise);
$sql .= ",remise_percent=".ereg_replace(",",".",$remise_percent);
$sql .= ",qty=".ereg_replace(",",".",$qty);
$sql .= " WHERE rowid = $rowid ;";
$result = $this->db->query( $sql);
$this->updateprice($this->id);
}
}
/**
* Supprime une ligne
*/
function deleteline($rowid)
{
if ($this->brouillon)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE rowid = $rowid;";
$result = $this->db->query( $sql);
$this->updateprice($this->id);
}
}
/**
* Mise à jour des sommes de la facture
*/
function updateprice($facid)
{
include_once DOL_DOCUMENT_ROOT . "/lib/price.lib.php";
$err=0;
$sql = "SELECT price, qty, tva_taux FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = $facid;";
$result = $this->db->query($sql);
if ($result)
{
$num = $this->db->num_rows();
$i = 0;
while ($i < $num)
{
$obj = $this->db->fetch_object($result);
$products[$i][0] = $obj->price;
$products[$i][1] = $obj->qty;
$products[$i][2] = $obj->tva_taux;
$i++;
}
$this->db->free();
$calculs = calcul_price($products, $this->remise_percent);
$this->total_remise = $calculs[3];
$this->amount_ht = $calculs[4];
$this->total_ht = $calculs[0];
$this->total_tva = $calculs[1];
$this->total_ttc = $calculs[2];
$tvas = $calculs[5];
$sql = "UPDATE ".MAIN_DB_PREFIX."facture_rec SET ";
$sql .= " amount = ".ereg_replace(",",".",$this->amount_ht);
$sql .= ", remise=".ereg_replace(",",".",$this->total_remise);
$sql .= ", total=".ereg_replace(",",".",$this->total_ht);
$sql .= ", tva=".ereg_replace(",",".",$this->total_tva);
$sql .= ", total_ttc=".ereg_replace(",",".",$this->total_ttc);
/**
* Mets à jour une ligne de facture
*/
function updateline($rowid, $desc, $pu, $qty, $remise_percent=0)
{
if ($this->brouillon)
{
if (strlen(trim($qty))==0)
{
$qty=1;
}
$remise = 0;
$price = round(ereg_replace(",",".",$pu), 2);
$subprice = $price;
if (trim(strlen($remise_percent)) > 0)
{
$remise = round(($pu * $remise_percent / 100), 2);
$price = $pu - $remise;
}
else
{
$remise_percent=0;
}
$sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set description='$desc',price=$price,subprice=$subprice,remise=$remise,remise_percent=$remise_percent,qty=$qty WHERE rowid = $rowid ;";
$result = $this->db->query( $sql);
$this->updateprice($this->id);
}
}
/**
* Supprime une ligne
*/
function deleteline($rowid)
{
if ($this->brouillon)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE rowid = $rowid;";
$result = $this->db->query( $sql);
$this->updateprice($this->id);
}
}
/**
* Mise à jour des sommes de la facture
*/
function updateprice($facid)
{
include_once DOL_DOCUMENT_ROOT . "/lib/price.lib.php";
$err=0;
$sql = "SELECT price, qty, tva_taux FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = $facid;";
$result = $this->db->query($sql);
if ($result)
{
$num = $this->db->num_rows();
$i = 0;
while ($i < $num)
{
$obj = $this->db->fetch_object($result);
$products[$i][0] = $obj->price;
$products[$i][1] = $obj->qty;
$products[$i][2] = $obj->tva_taux;
$i++;
}
$this->db->free();
$calculs = calcul_price($products, $this->remise_percent);
$this->total_remise = $calculs[3];
$this->amount_ht = $calculs[4];
$this->total_ht = $calculs[0];
$this->total_tva = $calculs[1];
$this->total_ttc = $calculs[2];
$tvas = $calculs[5];
$sql = "UPDATE ".MAIN_DB_PREFIX."facture_rec SET amount = $this->amount_ht, remise=$this->total_remise, total=$this->total_ht, tva=$this->total_tva, total_ttc=$this->total_ttc";
$sql .= " WHERE rowid = $facid ;";
if ( $this->db->query($sql) )
{
if ($err == 0)
{
return 1;
}
else
{
return -3;
}
}
else
{
print "$sql<br>";
return -2;
}
}
else
{
print "Error";
$sql .= " WHERE rowid = $facid ;";
if ( $this->db->query($sql) )
{
if ($err == 0)
{
return 1;
}
else
{
return -3;
}
}
else
{
print "$sql<br>";
return -2;
}
}
else
{
print "Error";
return -1;
}
}
/**
* Applique une remise
*/
function set_remise($user, $remise)
{
if ($user->rights->facture->creer)
{
$this->remise_percent = $remise ;
$sql = "UPDATE ".MAIN_DB_PREFIX."facture SET remise_percent = ".ereg_replace(",",".",$remise);
$sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;";
if ($this->db->query($sql) )
{
$this->updateprice($this->id);
return 1;
}
else
{
print $this->db->error() . ' in ' . $sql;
return -1;
}
}
}
}
}
/**
* Applique une remise
*/
function set_remise($user, $remise)
{
if ($user->rights->facture->creer)
{
$this->remise_percent = $remise ;
$sql = "UPDATE ".MAIN_DB_PREFIX."facture SET remise_percent = ".ereg_replace(",",".",$remise);
$sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;";
if ($this->db->query($sql) )
{
$this->updateprice($this->id);
return 1;
}
else
{
print $this->db->error() . ' in ' . $sql;
return -1;
}
}
}
}
?>