diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php
index 35238d71a2f..b9ec6df8d78 100644
--- a/htdocs/compta/facture/class/facture-rec.class.php
+++ b/htdocs/compta/facture/class/facture-rec.class.php
@@ -186,10 +186,13 @@ class FactureRec extends Facture
/**
* Recupere l'objet facture et ses lignes de factures
*
- * @param int $rowid Id de la facture a recuperer
- * @return int >0 si ok, <0 si ko
+ * @param int $rowid Id of object to load
+ * @param string $ref Reference of invoice
+ * @param string $ref_ext External reference of invoice
+ * @param int $ref_int Internal reference of other object
+ * @return int >0 if OK, <0 if KO, 0 if not found
*/
- function fetch($rowid)
+ function fetch($rowid, $ref='', $ref_ext='', $ref_int='')
{
$sql = 'SELECT f.titre,f.fk_soc,f.amount,f.tva,f.total,f.total_ttc,f.remise_percent,f.remise_absolue,f.remise';
$sql.= ', f.date_lim_reglement as dlr';
@@ -203,8 +206,13 @@ class FactureRec extends Facture
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as p ON f.fk_mode_reglement = p.id';
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON el.fk_target = f.rowid AND el.targettype = 'facture'";
$sql.= ' WHERE f.rowid='.$rowid;
-
- dol_syslog("FactureRec::Fetch rowid=".$rowid."", LOG_DEBUG);
+ if ($ref) $sql.= " AND f.titre='".$this->db->escape($ref)."'";
+ /* This field are not used for template invoice
+ if ($ref_ext) $sql.= " AND f.ref_ext='".$this->db->escape($ref_ext)."'";
+ if ($ref_int) $sql.= " AND f.ref_int='".$this->db->escape($ref_int)."'";
+ */
+
+ dol_syslog(get_class($this)."::fetch rowid=".$rowid, LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
{
@@ -353,32 +361,49 @@ class FactureRec extends Facture
/**
- * Delete current invoice
+ * Delete template invoice
*
- * @return int <0 if KO, >0 if OK
+ * @param int $rowid Id of invoice to delete. If empty, we delete current instance of invoice
+ * @param int $notrigger 1=Does not execute triggers, 0= execute triggers
+ * @param int $idwarehouse Id warehouse to use for stock change.
+ * @return int <0 if KO, >0 if OK
*/
- function delete()
+ function delete($rowid=0, $notrigger=0, $idwarehouse=-1)
{
- $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = ".$this->id;
+ if (empty($rowid)) $rowid=$this->id;
+
+ dol_syslog(get_class($this)."::delete rowid=".$rowid, LOG_DEBUG);
+
+ $error=0;
+ $this->db->begin();
+
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = ".$rowid;
dol_syslog($sql);
if ($this->db->query($sql))
{
- $sql = "DELETE FROM ".MAIN_DB_PREFIX."facture_rec WHERE rowid = ".$this->id;
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."facture_rec WHERE rowid = ".$rowid;
dol_syslog($sql);
- if ($this->db->query($sql))
- {
- return 1;
- }
- else
+ if (! $this->db->query($sql))
{
$this->error=$this->db->lasterror();
- return -1;
+ $error=-1;
}
}
else
{
$this->error=$this->db->lasterror();
- return -2;
+ $error=-2;
+ }
+
+ if (! $error)
+ {
+ $this->db->commit();
+ return 1;
+ }
+ else
+ {
+ $this->db->rollback();
+ return $error;
}
}
@@ -544,21 +569,29 @@ class FactureRec extends Facture
/**
* Return clicable name (with picto eventually)
*
- * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto
- * @param string $option Sur quoi pointe le lien ('', 'withdraw')
- * @return string Chaine avec URL
+ * @param int $withpicto Add picto into link
+ * @param string $option Where point the link
+ * @param int $max Maxlength of ref
+ * @param int $short 1=Return just URL
+ * @param string $moretitle Add more text to title tooltip
+ * @return string String with URL
*/
- function getNomUrl($withpicto=0,$option='')
+ function getNomUrl($withpicto=0,$option='',$max=0,$short=0,$moretitle='')
{
global $langs;
$result='';
$label=$langs->trans("ShowInvoice").': '.$this->ref;
-
- $link = '';
+
+ $url = DOL_URL_ROOT.'/compta/facture/fiche-rec.php?facid='.$this->id;
+
+ if ($short) return $url;
+
+ $picto='bill';
+
+ $link = '';
$linkend='';
- $picto='bill';
if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend);