Début correction sur les factures récurrentes
This commit is contained in:
parent
65346bb6e5
commit
7e691e8f32
@ -279,6 +279,8 @@ class FactureRec extends Facture
|
|||||||
*/
|
*/
|
||||||
function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0)
|
function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0)
|
||||||
{
|
{
|
||||||
|
include_once(DOL_DOCUMENT_ROOT.'/lib/price.lib.php');
|
||||||
|
|
||||||
if ($this->brouillon)
|
if ($this->brouillon)
|
||||||
{
|
{
|
||||||
if (strlen(trim($qty))==0)
|
if (strlen(trim($qty))==0)
|
||||||
@ -288,13 +290,23 @@ class FactureRec extends Facture
|
|||||||
$remise = 0;
|
$remise = 0;
|
||||||
$price = round(price2num($pu), 2);
|
$price = round(price2num($pu), 2);
|
||||||
$subprice = $price;
|
$subprice = $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);
|
||||||
|
$total_ht = $tabprice[0];
|
||||||
|
$total_tva = $tabprice[1];
|
||||||
|
$total_ttc = $tabprice[2];
|
||||||
|
|
||||||
if (trim(strlen($remise_percent)) > 0)
|
if (trim(strlen($remise_percent)) > 0)
|
||||||
{
|
{
|
||||||
$remise = round(($pu * $remise_percent / 100), 2);
|
$remise = round(($pu * $remise_percent / 100), 2);
|
||||||
$price = $pu - $remise;
|
$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 = "INSERT INTO ".MAIN_DB_PREFIX."facturedet_rec (fk_facture,description,price,qty,tva_taux, fk_product, remise_percent, subprice, remise, total_ht, total_tva, total_ttc)";
|
||||||
$sql .= " VALUES ('$facid', '$desc'";
|
$sql .= " VALUES ('$facid', '$desc'";
|
||||||
$sql .= ",".price2num($price);
|
$sql .= ",".price2num($price);
|
||||||
$sql .= ",".price2num($qty);
|
$sql .= ",".price2num($qty);
|
||||||
@ -302,7 +314,10 @@ class FactureRec extends Facture
|
|||||||
$sql .= ",'".$fk_product."'";
|
$sql .= ",'".$fk_product."'";
|
||||||
$sql .= ",'".price2num($remise_percent)."'";
|
$sql .= ",'".price2num($remise_percent)."'";
|
||||||
$sql .= ",'".price2num($subprice)."'";
|
$sql .= ",'".price2num($subprice)."'";
|
||||||
$sql .= ",'".price2num($remise)."') ;";
|
$sql .= ",'".price2num($remise)."'";
|
||||||
|
$sql .= ",'".price2num($total_ht)."'";
|
||||||
|
$sql .= ",'".price2num($total_tva)."'";
|
||||||
|
$sql .= ",'".price2num($total_ttc)."') ;";
|
||||||
|
|
||||||
if ( $this->db->query( $sql) )
|
if ( $this->db->query( $sql) )
|
||||||
{
|
{
|
||||||
@ -317,6 +332,64 @@ 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
|
* \brief Rend la facture automatique
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user