diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php index 681bd70fa04..b70716315cd 100644 --- a/htdocs/facture.class.php +++ b/htdocs/facture.class.php @@ -71,13 +71,23 @@ class Facture */ Function create($user) { - /* - * On positionne en mode brouillon la facture - */ + /* On positionne en mode brouillon la facture */ $this->brouillon = 1; - /* - * - */ + + /* Facture récurrente */ + if ($this->fac_rec > 0) + { + require_once DOL_DOCUMENT_ROOT . '/compta/facture/facture-rec.class.php'; + $_facrec = new FactureRec($this->db, $this->fac_rec); + $_facrec->fetch($this->fac_rec); + + $this->projetid = $_facrec->projetid; + $this->cond_reglement = $_facrec->cond_reglement_id; + $this->amount = $_facrec->amount; + $this->remise = $_facrec->remise; + $this->remise_percent = $_facrec->remise_percent; + } + $sql = "SELECT fdm,nbjour FROM llx_cond_reglement WHERE rowid = $this->cond_reglement"; if ($this->db->query($sql) ) { @@ -126,7 +136,6 @@ class Facture $sql = "INSERT INTO llx_fa_pr (fk_facture, fk_propal) VALUES (".$this->id.",".$this->propalid.")"; $this->db->query($sql); } - /* * Produits * @@ -150,6 +159,39 @@ class Facture print $sql . '
' . $this->db->error() .'
'; } } + /* + * Produits de la facture récurrente + * + */ + if ($this->fac_rec > 0) + { + for ($i = 0 ; $i < sizeof($_facrec->lignes) ; $i++) + { + if ($_facrec->lignes[$i]->produit_id) + { + $prod = new Product($this->db, $_facrec->lignes[$i]->produit_id); + $prod->fetch($_facrec->lignes[$i]->produit_id); + } + + $result_insert = $this->addline($this->id, + $_facrec->lignes[$i]->desc, + $_facrec->lignes[$i]->price, + $_facrec->lignes[$i]->qty, + $_facrec->lignes[$i]->tva_taux, + $_facrec->lignes[$i]->produit_id, + $_facrec->lignes[$i]->remise_percent); + + + if ( $result_insert < 0) + { + print $sql . '
' . $this->db->error() .'
'; + } + } + } + /* + * + * + */ $this->updateprice($this->id); return $this->id; } @@ -168,7 +210,7 @@ class Facture Function fetch($rowid, $societe_id=0) { - $sql = "SELECT f.fk_soc,f.facnumber,f.amount,f.tva,f.total,f.total_ttc,f.remise,f.remise_percent,".$this->db->pdate("f.datef")."as df,f.fk_projet,".$this->db->pdate("f.date_lim_reglement")." as dlr, c.libelle, c.libelle_facture, f.note, f.paye, f.fk_statut, f.fk_user_author"; + $sql = "SELECT f.fk_soc,f.facnumber,f.amount,f.tva,f.total,f.total_ttc,f.remise,f.remise_percent,".$this->db->pdate("f.datef")."as df,f.fk_projet,".$this->db->pdate("f.date_lim_reglement")." as dlr, c.rowid as cond_regl_id, c.libelle, c.libelle_facture, f.note, f.paye, f.fk_statut, f.fk_user_author"; $sql .= " FROM llx_facture as f, llx_cond_reglement as c"; $sql .= " WHERE f.rowid=$rowid AND c.rowid = f.fk_cond_reglement"; @@ -197,6 +239,7 @@ class Facture $this->socidp = $obj->fk_soc; $this->statut = $obj->fk_statut; $this->date_lim_reglement = $obj->dlr; + $this->cond_reglement_id = $obj->cond_regl_id; $this->cond_reglement = $obj->libelle; $this->cond_reglement_facture = $obj->libelle_facture; $this->projetid = $obj->fk_projet; @@ -215,7 +258,7 @@ class Facture * Lignes */ - $sql = "SELECT l.description, l.price, l.qty, l.rowid, l.tva_taux"; + $sql = "SELECT l.fk_product, l.description, l.price, l.qty, l.rowid, l.tva_taux, l.remise_percent"; $sql .= " FROM llx_facturedet as l WHERE l.fk_facture = ".$this->id; $result = $this->db->query($sql); @@ -228,10 +271,12 @@ class Facture { $objp = $this->db->fetch_object($i); $faclig = new FactureLigne(); - $faclig->desc = stripslashes($objp->description); - $faclig->qty = $objp->qty; - $faclig->price = $objp->price; - $faclig->tva_taux = $objp->tva_taux; + $faclig->desc = stripslashes($objp->description); + $faclig->qty = $objp->qty; + $faclig->price = $objp->price; + $faclig->tva_taux = $objp->tva_taux; + $faclig->remise_percent = $objp->remise_percent; + $faclig->produit_id = $objp->fk_product; $this->lignes[$i] = $faclig; $i++; } @@ -377,7 +422,7 @@ class Facture * */ $sql = "SELECT fk_product FROM llx_facturedet WHERE fk_facture = ".$this->id; - $sql .= " AND fk_product IS NOT NULL"; + $sql .= " AND fk_product > 0"; $result = $this->db->query($sql); @@ -426,7 +471,7 @@ class Facture * Ajoute une ligne de facture * */ - Function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0) + Function addline($facid, $desc, $pu, $qty, $txtva, $fk_product=0, $remise_percent=0) { if ($this->brouillon) { @@ -453,6 +498,7 @@ class Facture } else { + print "
$sql
"; return -1; } }